我在使用 Python 的 scikit-learn 库中的 KNeighborsClassifier 算法。我遵循了基本的指示,例如将我的数据和标签分割成训练和测试数据,然后在训练数据上训练我的模型。现在我试图预测测试数据的准确性,但遇到了错误。以下是我的代码:
from sklearn.neighbors import KNeighborsClassifier from sklearn.cross_validation import train_test_splitfrom 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。然而,我得到了这个错误,基本上是试图比较测试数据和训练数据集。
有谁知道这里出了什么问题?我应该用什么来训练我的模型,以及应该用什么来预测分数?
谢谢!
回答:
你应该使用 label_test
而不是 label_train
来计算 accuracy_score
。你想要比较测试集的实际标签 label_test
和模型对测试集的预测 predictions
。