在sklearn

时间:2016-09-08 12:42:40

标签: python scikit-learn

我尝试使用sklearn来使用一个简单的决策树分类器,并且它抱怨现在使用一维数组被删除并且必须使用X.reshape(1,-1)。所以我做了但它已经将我的标签列表转换为只包含一个元素的列表列表,因此标签和样本的数量现在不匹配。我的标签列表= [0,0,1,1]的另一个词变成[[0 0 1 1]]。感谢

这是我使用的简单代码:

from sklearn import tree
import numpy as np
features =[[140,1],[130,1],[150,0],[170,0]]
labels=[0,0,1,1]
labels = np.array(labels).reshape(1,-1)
clf = tree.DecisionTreeClassifier()
clf = clf.fit(features,labels)
print clf.predict([150,0])

1 个答案:

答案 0 :(得分:3)

你正在重塑错误的东西。重塑您预测的数据,而不是您的标签。

>>> clf.predict(np.array([150,0]).reshape(1,-1))
array([1])

您的标签必须与您的训练数据(功能)保持一致,因此两个阵列的长度应相同。如果标签被重新塑造,那么你是对的,它是一个长度为1且不等于你的特征长度的列表列表。

您必须重塑测试数据,因为预测需要一个看起来像您的训练数据的数组。即,每个索引需要是具有与训练中相同数量的特征的训练示例。您将看到以下两个命令分别返回列表列表和列表。

>>> np.array([150,0]).reshape(1,-1)
array([[150,   0]])
>>> np.array([150,0])
array([150,   0])