当前位置: 首页 > 后端技术 > Python

使用KNN进行分类和回归

时间:2023-03-26 14:05:44 Python

一般情况下,k-NearestNeighbor(KNN)用于解决分类问题。事实上,KNN是一种简单的算法,可以应用于数据分类和预测。在本文中,我们将其与简单线性回归一起使用进行比较。KNN模型是一个简单的模型,可用于回归和分类任务。大多数机器学习算法都是用它的名字来描述的。KNN也是一样,用一个空格来表示邻居的metric。度量空间根据集合成员的特征定义集合成员之间的距离。对于每个测试实例,使用Neighborhood来估计响应变量的值。最多可以使用k个邻居进行估计,超参数控制算法的学习方式;它们不是根据训练数据估计的,而是基于由某个距离函数选择的最近的k个邻居。在本文中,我们将重点关注二进制分类,其中k通常设置为奇数以防止出现平局。与回归任务中特征向量与实值标量而不是标签相关联的分类任务不同,KNN通过采用响应变量的均值或加权均值进行预测。惰性学习和非参数模型惰性学习是KNN的一个标志。惰性学习器,也称为基于实例的学习器,是处理很少或不处理训练数据的学习器。与线性回归等主动学习算法不同,KNN不估计在训练阶段泛化到训练数据的模型参数。惰性学习有利有弊,训练主动学习者的成本可能很高,但使用生成的模型进行预测的成本较低。简单的结果可以通过系数乘以特征并加入偏差参数来预测,计算成本低,预测速度快。但是懒惰的学习者做预测的代价是非常高的,因为KNN预测需要计算测试实例和训练实例之间的距离,也就是访问所有的训练数据。参数模型使用固定数量的参数或系数来汇总数据。无论使用多少训练实例,参数的数量都保持不变。非参数似乎用词不当,因为它并不意味着模型没有参数;相反,这意味着参数的数量随训练数据的数量而变化。当您不熟悉响应变量和解释变量之间的关系时,非参数模型会很有用。KNN是这样一种非参数模型,如果实例彼此接近,则响应变量很可能具有相似的值。当训练数据稀缺或关系已知时,带有假设的模型可能比非参数模型更有用。使用KNN分类我们使用一个简单的问题作为我们需要根据他或她的身高和体重预测一个人的性别的情况。这里有两个标签可以分配给响应变量,这就是为什么这个问题被称为二元分类的原因。下表记录了9个训练示例:KNN可以使用的特征数量没有限制,但它不能可视化超过三个特征(这是因为我们生活在3维空间中,无法可视化更多维数据)。通过创建散点图,可以使用matplotlib可视化数据:从图中可以看出,男性往往比女性更高更重,由x标记表示。我们的经验也与这一观察结果一致。根据一个人的身高和体重来预测他/她的性别。需要定义距离测量指标:我们将测量两点之间的欧氏距离。在二维空间中,欧几里德距离的计算方式如下:下一步是计算查询实例与所有训练实例之间的距离:设置k为3,我们将选择三个最接近的实例进行预测。在下面的脚本中,计算了测试实例和训练实例之间的距离,并确定了每个邻居最常见的性别:在下图中,一个圆圈代表一个查询实例,放大的标记代表它的三个最近的邻居:有两个两个女性邻居和一个有性行为的男性邻居。所以我们的测试实例的结果是女性。使用scikit-learn实现KNN分类器,代码如下:LabelBinarizer首先将字符串转为整数,fit方法创建标签字符串到整数的映射。使用transform方法转换输入标签。fit_transform同时调用fit和transform。此外,如果训练集和测试集独立变换,男性可能会映射到训练集中的1和测试集中的0。所以我们使用训练集的对象进行拟合。然后使用KNeighborsClassifier进行预测。通过将我们的测试标签与分类器的预测进行比较,我们发现男性测试实例被错误地预测为女性。所以我们有75%的准确率:RegressionusingKNNKNN也可以进行回归分析。让我们用他们的身高和性别来预测他的体重。我们在下表中列出了我们的训练和测试集:使用KNeighborsRegressor,我们可以执行回归任务。这里作为回归任务的两个性能度量是:平均绝对误差(MAE)和均方误差(MSE):MAE是通过取预测误差的绝对值的平均值来计算的。MAE计算如下:均方误差(MSE)比平均绝对误差更常用。均方误差可以通过取预测误差平方的平均值来计算,如下所示:MSE比MAE对异常值的影响更大;一般来说,普通线性回归会最小化MSE的平方根。通过标准化数据,我们的模型表现更好。当一个人的性别包含在实例之间的距离中时,该模型可以做出更好的预测。总结KNN是我们在本文中介绍的一种简单但功能强大的分类和回归模型。KNN模型是惰性非参数学习模型;它的参数不是从训练数据中估计出来的。为了预测响应变量,它存储所有训练实例并使用最接近的实例进行测试。在Sklearn中,我们可以直接调用内置的方法来使用。https://avoid.overfit.cn/post/25204154c52341f0bf93622a797597e1作者:Onepagecode