我正在使用python的scikit-learn库中的KNeighborsClassifier算法。我遵循了基本说明将我的数据和标签分为训练和测试数据,然后在训练数据上训练我的模型。现在,我试图预测测试数据的准确性,但会出错。这是我的代码:
from sklearn.neighbors import KNeighborsClassifier
from sklearn.cross_validation import train_test_split
from sklearn.metrics import accuracy_score
data_train, data_test, label_train, label_test = train_test_split(df, labels,
test_size=0.2,
random_state=7)
mod = KNeighborsClassifier(n_neighbors=4)
mod.fit(data_train, label_train)
predictions = mod.predict(data_test)
print accuracy_score(label_train, predictions)
我得到的错误:
ValueError: Found arrays with inconsistent numbers of samples: [140 558]
140是训练数据的一部分,558是基于test_size = 0.2的测试数据(我的数据集是698个样本)。我验证了标签和数据集的大小相同698。但是,我得到了这个错误,它基本上是在试图比较测试数据和训练数据集。
有人知道这是怎么回事吗?我应该使用什么来训练我的模型并预测其得分?
谢谢!
最佳答案
您应该使用accuracy_score
而不是label_test
计算label_train
。您想将测试集label_test
的实际标签与模型对测试集的预测predictions
进行比较。
关于python - KNeighborsClassifier .predict()函数不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39811270/