1

我有包含单个维度和类标签的数据。我想在上面运行 KNN。

我的数据是这样的

feature       Label
0.70436073      1
0.91564351      1
0.9931506       1
2.26418779      0

我做了下面的事情,结果出错了。我从错误中了解到 train 的数据类型无法识别,但我不知道如何修复它。请帮忙

>>> train = [ 0.70436073,  0.91564351,  0.9931506,   2.26418779]
>>> train
[0.70436073, 0.91564351, 0.9931506, 2.26418779]
>>> label = ['1','1','1','0']
>>> from sklearn.neighbors import KNeighborsClassifier
>>> knn = KNeighborsClassifier()
>>> knn.fit(train, label)

Traceback (most recent call last):
  File "<pyshell#26>", line 1, in <module>
    knn.fit(train, label)
  File "C:\Python27\lib\site-packages\sklearn\neighbors\base.py", line 586, in fit
    return self._fit(X)
  File "C:\Python27\lib\site-packages\sklearn\neighbors\base.py", line 126, in _fit
    raise ValueError("data type not understood")
ValueError: data type not understood
4

2 回答 2

3

好吧,错误消息很垃圾,你应该给那些人发邮件并要求他们修复它,但无论如何...... http://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier 上的示例。 html#sklearn.neighbors.KNeighborsClassifier非常清楚:fit() 的第一个参数是列表列表,而不是数字列表。此外,第二个参数必须是“整数值数组”,但您已经编写了一个字符串数组。

于 2013-03-31T12:28:50.497 回答
0

您首先需要使用np.array将您的列表转换为数组。然后重塑您的数组,因为您的数据具有一个特征。遵循以下代码:

import numpy as np
train = np.array([[ 0.70436073,  0.91564351,  0.9931506,   2.26418779]])
train_1 = train.reshape(-1, 1)
label = np.array([['1','1','1','0']])
label_1 = label.reshape(-1,1)
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier()
knn.fit(train_1, label_1)
于 2019-05-05T08:02:52.713 回答