KNeighborsClassifier .predict() 函数不起作用

Posted

技术标签:

【中文标题】KNeighborsClassifier .predict() 函数不起作用【英文标题】:KNeighborsClassifier .predict() function doesn't work 【发布时间】:2017-02-10 04:44:45 【问题描述】:

我正在使用 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。但是,我得到了这个错误,基本上是在尝试比较测试数据和训练数据集。

有人知道这里出了什么问题吗?我应该使用什么来训练我的模型,以及我应该使用什么来预测分数?

谢谢!

【问题讨论】:

【参考方案1】:

您应该用label_test 计算accuracy_score,而不是label_train。您希望将测试集的实际标签 label_test 与您的模型 predictions 对测试集的预测进行比较。

【讨论】:

谢谢@Igaud!它确实奏效了!现在,当我查看文档时,这很明显。我碰巧遵循了教程中犯的错误。【参考方案2】:

您是否尝试通过以下问题解决您的问题?

sklearn: Found arrays with inconsistent numbers of samples when calling LinearRegression.fit()

【讨论】:

感谢您的建议!我尝试使用以下代码重塑我的数据:label_train = np.reshape(label_train, (len(label_train), 1))label_test = np.reshape(label_test, (len(label_test), 1))print label_train.shapeprint data_train.shapeprint data_test.shapeprint label_test.shape这是我得到的结果:(558, 1)(558, 2)(140, 2)@987654同样的错误:ValueError: Found arrays with inconsistent numbers of samples: [140 558]

以上是关于KNeighborsClassifier .predict() 函数不起作用的主要内容,如果未能解决你的问题,请参考以下文章

sklearn - KNeighborsClassifier - ValueError:未知标签类型:'连续'

KNeighborsClassifier .predict() 函数不起作用

使用 KNeighborsClassifier 的 SKlearn 管道

KNeighborsClassifier()

使用 sklearn 使用 KNeighborsClassifier 时出错

当我将 IterativeImputer 与 KNeighborsClassifier 一起使用时出现错误“未知标签类型:'连续'”