问题描述
因此,我具有128种面部编码的数据,其中label为人的名字,而其上具有名称的列为我的目标列。我显然使用了labelbinarisation来对因变量(名称列)进行二值化。当我使用KNN拟合并预测此人的名字时,它并不能预测任何事情。
应该是这样的:
但是我却得到了:
因此,我的第一个疑问是我是否可以将字符串值用作我的因变量或目标变量。任何帮助表示赞赏。谢谢
对于二值化,我已经使用过
#Binarising the labels
labelBinarised = LabelBinarizer()
Y_train=labelBinarised.fit_transform(Y_train)
Y_test = labelBinarised.fit_transform(Y_test)
解决方法
您可以将字符串值用作目标变量,因为文档中指出目标变量应为{array-like,sparse matrix} Target values of shape = [n_samples] or [n_samples,n_outputs]
,他们并没有提到仅是数字。您的要素必须是数字,因为它用于计算距离,但您的目标可以是字符串。
如下面的示例所示,目标值是字符串,并且可以正常工作:
X = [[0],[1],[2],[3]]
y = ['zero','zero','one','one']
from sklearn.neighbors import KNeighborsClassifier
neigh = KNeighborsClassifier(n_neighbors=3)
neigh.fit(X,y)
print(neigh.predict([[3]]))
#output
#array(['one'],dtype='<U4')