我正在使用 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/