我正在使用 sklearn.neighbors.KNeighborsRegressor 开发分类器。 我使用的数据具有以下格式:
除了我想使用 KNN 预测的标签之外,所有特征都是数字。
它是一个具有多个值的分类标签,例如:'w1','w2','w3'。
我的问题是:
PD:我知道 sklearn.preprocessing.LabelEncoder 可以对标签进行编码,但在文档中说分类值必须是可散列且可比较的。我的标签只是任意单词,无法计算它们之间的逻辑距离。
PD2:我尝试使用分类标签,但收到错误:
“/ 不支持的操作数类型:'str' 和 'int'”
好的,我发现我的错误了。
正如我怀疑的那样,sklearn.neighbors.KNeighborsRegressor仅支持数字标签。
但是aberger在评论中说KNN标签中的距离没有使用。
我的错误是我使用了类 KNeighborsRegressor 而不是类 KNeighborsClassifier,它是接受标签作为分类值的分类方法 KNN。
在类 KNeighborsRegressor 中,分配的标签是根据其最近邻居标签的平均值计算的,因此它必须是数字。