KNN sklearn 中的分类标签

Posted

技术标签:

【中文标题】KNN sklearn 中的分类标签【英文标题】:Categorical Labels in KNN sklearn 【发布时间】:2017-10-11 21:38:28 【问题描述】:

我正在使用sklearn.neighbors.KNeighborsRegressor 开发分类器。 我使用的数据格式如下:

[numeric_feature1, numeric_feature2, ...., numeric_featureN] [label_to_predict]

所有特征都是数字,除了我想使用 KNN 预测的标签。

它是一个具有多个值的分类标签,例如:'w1'、'w2'、'w3'。

我的问题是:

KNN 支持分类标签还是仅支持数字标签? 如果它只适用于数值,是否有任何正确的方法来编码标签?

PD:我知道 sklearn.preprocessing.LabelEncoder 对标签进行编码,但在文档中说分类值必须是可散列的和可比较的。我的标签只是任意词,无法计算它们之间的逻辑距离。

PD2:我尝试过使用分类标签,但出现错误:

“不支持的 / 的操作数类型:'str' 和 'int'”

【问题讨论】:

试试 MultilabelBinarizer 请发布代码 sn-p 和完整的堆栈跟踪。标签应该是分类的,它们不用于任何距离计算。 【参考方案1】:

好的,我发现了我的错误。

我怀疑,sklearn.neighbors.KNeighborsRegressor 仅支持数字标签。

但是aberger在KNN标签中的cmets中所说的不是在距离中使用的。

我的错误是我使用类 KNeighborsRegressor 而不是类 KNeighborsClassifier,这是一个不使用标签并接受分类标签的纯 KNN .

KNeighborsRegressor 类中,分配的标签是根据其最近邻居的标签的平均值计算的,因此它必须是数字。

【讨论】:

以上是关于KNN sklearn 中的分类标签的主要内容,如果未能解决你的问题,请参考以下文章

机器学习 sklearn 监督学习 分类算法 KNN K-NearestNeighbor

机器学习 sklearn 监督学习 分类算法 KNN K-NearestNeighbor

机器学习 sklearn 监督学习 分类算法 KNN K-NearestNeighbor

使用 sklearn 或 pandas 进行一次热编码后,如何在混合数据集(数值 + 分类)上应用 KNN

在 sklearn 管道中对分类变量实施 KNN 插补

Sklearn多分类 手写数字多分类 混淆矩阵 F1 多标签分类器 多输出分类器