在试图了解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> 1。输入的类概率 样品。类的顺序对应于属性中的顺序 类_。
应返回给定输入值的正确性概率?如何返回值 [[ 1. 0.]] , [[ 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]]
,因此概率最大的类被视为预测值。