我尝试使用sklearn来使用一个简单的决策树分类器,它抱怨使用1D数组现在被弃用了,必须使用x .重塑(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])
你在重塑错误的东西。重塑你所预测的数据,而不是你的标签。
>>> 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])