0

所以,我有 128 个面部编码的数据,标签是人的名字,上面有名字的列是我的目标列。我显然使用标签二进制化来二进制化因变量(名称列)。当我使用 KNN 拟合并预测人名时,它并不能预测任何东西。

它应该是这样的:

在此处输入图像描述

但相反,我得到了这个:

在此处输入图像描述

因此,我的第一个疑问是我是否可以使用字符串值作为我的因变量或目标变量。任何帮助表示赞赏。谢谢

对于二值化,我使用了这个

#Binarising the labels
labelBinarised = LabelBinarizer()
Y_train=labelBinarised.fit_transform(Y_train)
Y_test = labelBinarised.fit_transform(Y_test)
4

1 回答 1

1

您可以使用字符串值作为目标变量,因为文档说目标变量应该是{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')
于 2020-08-26T03:54:46.340 回答