python - Scikit-learn 不适用于 KNN 上的字符串值

标签 python scikit-learn knn

我正在使用 Scikit 学习进行 K 最近邻分类:

from sklearn.neighbors import KNeighborsClassifier

model=KNeighborsClassifier() 
model.fit(train_input,train_labels)

如果我打印我的数据:

print("train_input:")
print(train_input.iloc[0])
print("\n")
print("train_labels:")
print(train_labels.iloc[0]) 

我明白了:

train_input:
PassengerId                          1
Pclass                               3
Name           Braund, Mr. Owen Harris
Sex                               male
Age                                 22
SibSp                                1
Parch                                0
Ticket                       A/5 21171
Fare                              7.25
Cabin                              NaN
Embarked                             S
Name: 0, dtype: object


train_labels:
0

代码失败并出现此错误:

ValueError                                Traceback (most recent call last)
<ipython-input-21-1f18eec1e602> in <module>()
     63 
     64 model=KNeighborsClassifier()
---> 65 model.fit(train_input,train_labels)
ValueError: could not convert string to float: 'Q'

那么,KNN 算法是否不适用于 String 值?

如何修改我的数据以使其适合 Scikit-Learn 中的 KNN 实现?

最佳答案

对于名义上的 String 特征,考虑一种热编码:http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html .

对于序数 String 特征,考虑标签编码(根据您对特征的理解合理排序):http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.LabelEncoder.html .

关于python - Scikit-learn 不适用于 KNN 上的字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47610026/

相关文章:

java - 为 SonarPython 编写一个插件

python - 在图像中绘制标记

c++ - 使用 KNN 分类器进行数字识别前的预处理

matlab - Matlab 中的 k-NN 分类

python - knn 的 y 轴样本不匹配

python - Python中Dijkstra算法在真实 map 上的最短路径

python - 从列表创建 Pandas 数据框

python - 获取某个类别的一列概率值

python - 使用 scikit-learn 的多个功能

python - 如何使用 sklearn 计算词-词共现矩阵?