0
我使用Scikit學會做工作
K最近Neigbour分類:Scikit學習不字符串值在KNN
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實現?
問題不在於Scikit Learn,而在於您的理解/制定。 kNN衡量特徵空間中「接近」是兩個數據點。爲了使其正常工作,您必須對功能進行編碼,以便測量差異/距離。例如。從男性到女性的區別在於語義,而不是字符串表示。因此,如果你編碼「男= 0」和「女= 1」,你可以開始測量差異。同樣適用於其他所有「功能」。 –
不僅僅是KNN,所有scikit估計器都只能處理數字數據。 –