在scikitlearn中使用knn算法时出现不推荐警告

2024-04-18 05:23:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我在尝试scikit学习库。我导入了iris数据集,并尝试训练knn算法来预测某些结果。代码如下:

from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier

iris = datasets.load_iris()

knn = KNeighborsClassifier(n_neighbors=1)

X = iris.data
y = iris.target

print X.shape
print y.shape

#training the model
knn.fit(X, y)

knn.predict([3, 4, 5, 2])

但我得到了以下错误:

^{pr2}$

我在谷歌上搜索,找到了一些解决办法。我尝试使用X = X.reshape(-1, 1)X = X.reshape(1, -1),但是我得到了以下错误:

Traceback (most recent call last):
  File "E:/Analytics Practice/Social Media Analytics/Python Services/DataAnalysis/sk-learn-dir/test.py", line 13, in <module>
    knn.fit(X, y)
  File "C:\python-venv-test-2.7.10\lib\site-packages\sklearn\neighbors\base.py", line 778, in fit
    X, y = check_X_y(X, y, "csr", multi_output=True)
  File "C:\python-venv-test-2.7.10\lib\site-packages\sklearn\utils\validation.py", line 520, in check_X_y
    check_consistent_length(X, y)
  File "C:\python-venv-test-2.7.10\lib\site-packages\sklearn\utils\validation.py", line 176, in check_consistent_length
    "%s" % str(uniques))
ValueError: Found arrays with inconsistent numbers of samples: [150 600]

knn算法需要在scikit-learn中训练的维数的正确格式是什么?在


Tags: inpytestirisvenvlibpackagescheck
1条回答
网友
1楼 · 发布于 2024-04-18 05:23:54

谢谢@ttthomassss的帮助。我做错了什么:

当我写[3, 4, 5, 2]时,python将其解释为一个4X1维数组,但当我编写[[3, 4, 5, 2]]时,python将其解释为1X4数组。因为它是一个数据点,对于不同的特性有4个不同的值,所以我必须用[[3, 4, 5, 2]]输入预测模型。下面是帮助我计算出两个数组的维数的代码:

predict_array = [3, 4, 5, 2]
predict_array = np.asarray(predict_array)
print predict_array.shape

predict_array = [[3, 4, 5, 2]]
predict_array = np.asarray(predict_array)
print predict_array.shape

输出如下:

^{pr2}$

相关问题 更多 >