python - 我可以在 KNN 机器学习模型中使用字符串值作为我的因变量吗?
问题描述
所以,我有 128 个面部编码的数据,标签是人的名字,上面有名字的列是我的目标列。我显然使用标签二进制化来二进制化因变量(名称列)。当我使用 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')
推荐阅读
- javascript - 如何防止 ApexCharts 图表标签倾斜
- r - 替换数据框中的值 - 为什么它不起作用?
- web-scraping - 无法使用 BeautifulSoup 抓取嵌套表
- flutter - 如何在 Flutter 中更新列表视图而不刷新
- python - 蟒蛇摸迷宫墙
- c# - 如何从表达式中删除项目
>? - python - 如何在 Django Migrations 中将条件“IF NOT EXISTS”添加到 AddIndexConcurrently?
- amazon-web-services - 将数据从 Cloud Custodian 获取到 Amazon S3 存储桶中
- laravel - 如何同步同一个 repo 的 3 个版本?
- flutter - 使用颤振将地图对象数据显示到列中