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