在尝试理解scikit决策树对单一编码数据的行为方式时,我有以下几点:
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:shape = [n_samples,n_classes]数组或n_outputs列表 如果n_outputs>这样的数组1.输入的类概率 样本。类的顺序对应于属性中的顺序 类_
应返回给定输入值的正确性概率吗? 返回值[[1. 0.]],[[0. 1.]]如何对应于输入样本的类概率?
答案 0 :(得分: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]]
的其他值,因此具有最大概率的类被视为预测值。