2013-11-09 2 views
4

Я использую python для небольшого обучения машинам.Вероятность и машинное обучение

У меня есть массив python и 2000 записей. Каждая запись содержит информацию о некоторых предметах и ​​в конце имеет логическое значение, чтобы сказать мне, являются ли они вампиром или нет.

Каждый элемент массива выглядит следующим образом:

[height(cm), weight(kg), stake aversion, garlic aversion, reflectance, shiny, IS_VAMPIRE?] 

Моя цель состоит в том, чтобы быть в состоянии дать вероятность того, что новый предмет является вампиром, учитывая данные, приведенные выше для субъекта.

Я использовал sklearn, чтобы сделать некоторые машинного обучения для меня:

clf = tree.DecisionTreeRegressor() 

clf=clf.fit(X,Y) 


print clf.predict(W) 

Где W является массив данных для нового объекта. Сценарий, который я написал, возвращает booleans, но я хотел бы, чтобы он возвращал вероятности. Как я могу его изменить?

+1

Ваш вампир публикация данных, так что заинтересованные люди могут взглянуть на нее? – schreon

+0

У меня есть файл CSV. –

ответ

2

Используйте DecisionTreeClassifier вместо регрессора и используйте метод predict_proba. Кроме того, вы можете использовать логистическую регрессию

Основная идея заключается в следующем (также доступен в scikit узнать.):

clf = tree.DecisionTreeClassifier() 

clf=clf.fit(X,Y) 


print clf.predict_proba(W) 
+0

Не могли бы вы немного разобраться? Может быть, есть некоторые синтакс? Я посетил ссылку, но мне трудно понять. –

+0

@DemetriP: См. Мой отредактированный ответ. Код должен быть практически идентичен существующему коду, за исключением изменений, о которых я упоминал. – BrenBarn

+0

Мой вывод - это просто '[[1. 0.]]'. Как это интерпретировать? –

0

Вы хотите использовать классификатор, который дает вам вероятность. Кроме того, вы захотите убедиться в том, что в вашем тестовом массиве W точки данных не являются репликами каких-либо ваших данных обучения. Если он совпадает с любой из ваших данных обучения, он считает, что это определенно вампир или, определенно, не вампир, так что вы получите 0 или 1.

2

Если вы используете DecisionTreeRegressor(), то вы можете использовать функцию оценки, чтобы определить коэффициент определения R^2 прогноза.

См. Ниже ссылку на документацию.

http://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeRegressor.html#sklearn.tree.DecisionTreeRegressor

Также вы можете перечислить перекрестную счет проверки (для 10 образцов), как показано ниже

from sklearn.model_selection import cross_val_score 


clf = tree.DecisionTreeRegressor() 

clf=clf.fit(X,Y) 

cross_val_score(clf, X, Y, cv=10) 

print clf.predict(W) 

который дает выход что-то похожее на это,

array([ 0.61..., 0.57..., -0.34..., 0.41..., 0.75..., 
     0.07..., 0.29..., 0.33..., -1.42..., -1.77...]) 
Смежные вопросы