2017-11-03 106 views
-1

在试图了解决策树如何scikit表现为onehot编码数据我有以下几点:决策树直觉一个热编码数据

X = [[1,0,1] , [1,1,1]] 
Y = [1,2] 

clf = tree.DecisionTreeClassifier(criterion='entropy') 
clf = clf.fit(X, Y) 

print(clf.predict([1,0,1])) 
print(clf.predict([1,1,1])) 

print(clf.predict_proba([1,0,1])) 
print(clf.predict_proba([1,1,1])) 

将返回:

[1] 
[2] 
[[ 1. 0.]] 
[[ 0. 1.]] 

阅读文档的predict_proba http://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html#sklearn.tree.DecisionTreeClassifier.predict_proba应该返回以下状态:

p:形状数组= = [n_samples,n_classes ],或者n_outputs> n_outputs 这样的数组列表,如果n_outputs> 1.输入 样本的类概率。类的顺序对应于属性 classes_中的顺序。

应该返回给定输入值的正确性的概率? 返回值[[1. 0.]],[[0. 1.]]如何与输入采样的类概率相对应?

回答

1

例如clf.predict_proba([1,0,1])给出以下:

[[   1.       0.  ]]    # sample 1 
#  ^      ^
# probability for class 1  probability for class 2 

所以预测说,这种样品[1,0,1]的概率为1类是1,为类2是0。所以预测应该是1这与clf.predict([1,0,1])相同。这也可以是其他值,例如[[0.8, 0.2]],所以具有最大概率的类别被认为是预测值。