机器学习——K-近邻

K-近邻算法(KNN)概述:意思就是找最近的K点来判断属于哪个类别。

  1. 距离公式:

    1. 欧式距离:2. 曼哈顿距离:3.切比雪夫距离:4.闵可夫斯基距离:​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 5.标准化欧氏距离: 6。余弦距离:

       

  2. 计算流程:

    1. 计算已知类别的数据集中点与当前点之间的距离

    2. 按照距离递增次序排序

    3. 选取与当前点距离最小的K个点

    4. 统计前K个点所在的类别出现的概率

    5. 返回前K个点出现频率最高的类别作为当前点的预测分类

Scikit-learn的使用:

  1. K-近邻算法的API:sklearn.neighbors.KNeighborsClassifier(n_neighbors=5, algorithm = 'auto')  n_neighbors表是默认使用的邻居数(默认为5),algorithm:{'auto','ball_tree','kd_tree','brute'}

  2. 看predict的数距离x的哪个值更近,然后在用x判断y,然后在输出y。 也就是100离4和3比较近,然而更倾向于4,4属于y的1,最后也就输出1. 

  3. 获取数据集:from sklearn.datasets import load_iris

KD树:当KNN每次需要预测一个点时,我们都需要计算训练集中的每个点到这个点的距离,然后选出距离这个点最近的k个点进行投票。而KD树是 为了避免每次都要重新计算距离,算法会将距离信息保存到一棵树里,这样在计算之前从树里查询距离信息,避免重新计算。

  1. 基本原理:如果A和B很远,B和C很近,那么A和C也就很远,根据这个信息,有时候就可以跳过距离很远的点。类比 “二分查找”

  2. 案例分析:

    1.  按照X-Y-X的顺序划分树

    2.  例如查找(2.1,3.1) ,先看X轴,2.1比7小,所以走左边,然后再看Y轴,3.1比4小,所以又走左边,所以判断出在(2,3)附近

数据可视化:

数据集划分:一般会将数据划分为训练数据(用于训练构建模型)和测试数据(在模型检验时使用,用于评估模型是否有效)。

  1. 训练集占比:70% 80% 75%;测试集占比:30% 20% 25%

  2. sklearn中数据集划分API: sklearn.model_selection.train_test_split(arrays,*options)

    1. 参数:

      1. x : 数据集的特征值

      2. y : 数据集的标签值

      3. test_size : 测试集的大小, 一般为float

      4. random_state : 随机数种子, 不同的种子会造成不同的随机采样结果,相同的种子的采样结果相同。

    2. 返回值:x_train, x_test, y_train, y_test    (注意顺序是固定的,分别为特征值的训练集和测试集,目标值的训练集额测试集)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值