sklearn库的KNeighborsRegressor和KNeighborsClassifier有什么区别?
我正在尝试使用 kNN 算法对具有某些情绪(如快乐、悲伤、愤怒)的名称作为可能类别的数据集进行预测。属性是数字像素值。我了解到这些属于分类类型。我第一次使用 sklearn,无法在 KneighborsRegressor 和 KNeighborsClassifier 之间做出决定。我的情况有那么大的不同吗?在什么情况下会使用这些?
最佳答案
KNeighborsRegressor
和 KNeighborsClassifier
密切相关。两者都检索查询对象的一些 k 个邻居,并根据这些邻居进行预测。假设查询 x 的五个最近邻包含标签 [2, 0, 0, 0, 1]。让我们将情绪编码为高兴=0、愤怒=1、悲伤=2。KNeighborsClassifier
本质上执行多数表决。查询 x 的预测为 0,这意味着“快乐”。所以这是去这里的方式。KNeighborsRegressor
而是计算最近邻标签的平均值。然后预测将是 3/5 = 0.6
。但这并不映射到我们定义的任何情绪。原因是情绪变量确实是分类的,如问题中所述。
如果您将情绪编码为连续变量,则可以使用回归器。假设值在一个区间 [0.0, 2.0] 中,其中 0 表示非常高兴,2 表示非常难过,0.6 现在具有某种含义(happy-ish)。
顺便说一句,既然您在关键字中提到了逻辑回归,请不要被名称混淆。它实际上是分类,如 scikit-learn user guide 中所述。