knn(最近邻节点)模型

knn(k最近邻节点)

本质:找到与输入值距离最接近的k个节点,并以此为基础作出预测。

解决问题

  • 分类问题
    • 找到最接近的前k个结点。找到占比最大的类,并以此作为预测值输出。
    • 例:plinko
  • 回归问题
    • 找到最接近的k个节点。求出对应k节点对应目标值的平均值,并以此作为函数输出。

项目代码

项目代码链接

思路

knn模型对简单分类问题的python简单实现

1、获取历史数据(特征值feature,目标值label)
2、输入值
3、计算输入值与历史数据的距离
4、取前k个项,并且将其中出现概率最大的数作为结果输出

在这里插入图片描述

这里使用plinko这个游戏进行代码编写的详细分析

  1. 数据集打乱(np.random.shuffle())
  2. 划分数据集,分成训练集测试集两部分(8:2)
  3. 编写函数代码
    • k=36时,精确度变化情况
(1)绝对值求距离(2)欧式距离(勾股定理)(3)欧氏距离并归一化
19%37.0%39.0%

注:点击可跳转至代码,同时(1)是一维的,(2)、(3)是二维的,由此看出,增加影响因素的考虑能够提高准确率,同时通过(2)、(3)可以得出,对算法进行改进也是可以提高数据精度


knn模型对简单回归问题的python简单实现

knn房价模型
目的:练习向量在机器学习中的使用
要点:标准化和归一化(此时这里因为数据差距太大,因此使用标准化)
归一化:知道数据范围
标准化:不知道数据范围,或者数据变化很大
归一化公式

v a l u e = X − X m i n X m a x − X m i n value = \frac{X-X_{min}}{X_{max}-X_{min}} value=XmaxXminXXmin

标准化公式

v a l u e = X − X ˉ σ value =\frac{X-\bar{X}}{\sigma} value=σXXˉ

思路
1、获取历史数据(特征值feature,目标值label)
2、输入值
3、计算输入值与历史数据的距离
4、取前k个项,并且将其均值作为预测值输出

代码实现

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
KNN是一种常用的机器学习算法,用于分类和回归任务。在Python中,可以使用sklearn库中的KNeighborsClassifier类来实现KNN算法。在使用Sklearn KNN算法进行分类时,需要了解一些基本参数。例如,n_neighbors表示要考虑的最近邻居的数量,weights表示用于预测的近邻的权重,algorithm表示用于计算最近邻算法,leaf_size表示叶子节点的大小等等。 KNN算法的核心思想是通过计算样本之间的距离来确定最近的邻居,并根据这些邻居的标签进行预测。常用的距离计算方法包括欧氏距离、曼哈顿距离等。选择合适的K值也是KNN算法的重要一环,K值表示要考虑的最近邻居的数量,通常通过交叉验证等方法来选择合适的K值。 Sklearn库提供了丰富的KNN算法实现和参数选项。除了暴力法之外,还可以使用KD树或球树来构建KNN模型,以提高算法的效率。其中,'brute'表示蛮力实现,'kd_tree'表示使用KD树,'ball_tree'表示使用球树。在默认情况下,Sklearn会根据数据的大小和维度自动选择最合适的方法来构建模型KNN算法的特点包括简单易理解、对异常值不敏感、适用于多类别问题等。然而,它也有一些缺点,例如计算复杂度高、对于大规模数据集效果较差等。 以下是一个使用Sklearn库实现KNN算法Python示例代码: ``` from sklearn.neighbors import KNeighborsClassifier # 创建KNN分类器对象 knn = KNeighborsClassifier(n_neighbors=5) # 训练模型 knn.fit(X_train, y_train) # 预测 y_pred = knn.predict(X_test) ``` 请问还有其他相关问题吗? 相关问题: 1. KNN算法适用于哪些类型的问题? 2. 如何选择最合适的K值? 3. KNN算法在处理大规模数据集时有哪些问题?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值