Sklearn:KNeighborsRegressor与KNeighborsClassifer

时间:2018-10-13 14:42:59

标签: python scikit-learn classification logistic-regression nearest-neighbor

sklearn库的KNeighborsRegressor和KNeighborsClassifier有什么区别?

我正在尝试使用kNN算法对数据集进行预测,该数据集具有某些情感(如快乐,悲伤,愤怒)的名称,作为可能的类。这些属性是数字像素值。我了解到这些属于绝对类型。我是第一次使用sklearn,无法在KneighborsRegressor和KNeighborsClassifier之间进行选择。我的情况有很大的不同吗?在哪种情况下会使用这些?

2 个答案:

答案 0 :(得分:1)

KNeighborsRegressorKNeighborsClassifier密切相关。两者都检索查询对象的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表示含义(很高兴)。

顺便说一句,由于您在关键字中提到了逻辑回归,因此请不要对名称感到困惑。如scikit-learn user guide中所述,它实际上是分类。

答案 1 :(得分:0)

我认为两者的KNN算法风格都相同。但是它们有不同的输出。一个给你回归和其他分类。为了理解您的问题,我认为您应该检查分类和回归如何不同。检查此链接,它将为您更加清楚。

[https://math.stackexchange.com/questions/141381/regression-vs-classification][1]