初步了解K近邻

本文介绍了KNN算法的基本原理,通过案例演示了如何利用K值最近邻法进行分类,重点讲解了归一化和标准化在数据处理中的重要性,强调了它们在机器学习中的基础作用。
摘要由CSDN通过智能技术生成

前言

上期我们介绍了拟合问题,我们发现机器学习无外乎两个问题,分类问题和回归问题,今天我们就简单的了解一下KNN算法及此算法涉及的一些概念,这个算法涉及的数学知识很少,可以说是机器学习算法中理论最简单,最好理解的算法。

1.K相邻算法原理

💡首先我们通过案例更好的理解KNN算法 

上图中每一个数据点代表一个肿瘤病历:

  • 横轴表示肿瘤大小,纵轴表示发现时间
  • 恶性肿瘤用蓝色表示,良性肿瘤用红色表示

疑问:新来了一个病人(下图绿色的点),如何判断新来的病人(即绿色点)是良性肿瘤还是恶性肿瘤? 

 

💡解决方法:k-近邻算法的做法如下:

(1)取一个值k=3(k值后面介绍,现在可以理解为算法的使用者根据经验取的最优值)

 

 

(2)在所有的点中找到距离绿色点最近的三个点

(3)让最近的点所属的类别进行投票

(4)最近的三个点都是蓝色的,所以该病人对应的应该也是蓝色,即恶性肿瘤。

总结一下 

✒️✒️K-近邻算法属于哪类算法?可以用来解决监督学习中的分类问题

✒️✒️算法的思想:通过K个最近的已知分类的样本来判断未知样本的类别

KNN三要素:距离度量,K值选择,分类决策准则

 💥💥稍后我们还会在介绍完KNN算法之后详细的说距离的度量方法

2.归一化和标准化 

2.1为什么要做归一化和标准化 

 

样本中有多个特征,每一个特征都有自己的定义域和取值范围,他们对距离计算也是不同的,如取值较大的影响力会盖过取值较小的参数。因此,为了公平,样本参数必须做一些归一化处理,将不同的特征都缩放到相同的区间或者分布内。 

2.2归一化

 通过对原始数据进行变换,把数据映射到(默认为[0,1])之间。

 

❤️‍🔥❤️‍🔥scikit-learn 中实现归一化的 API: 

💢💢注意我们整个机器学习的环境需要很多库的帮助,具体我们可以去搜索页面搜索“Anaconda安装教程”去配置我们的编译环境

from sklearn.preprocessing import MinMaxScaler

def test():

    # 1. 准备数据
    data = [[90, 2, 10, 40],
            [60, 4, 15, 45],
            [75, 3, 13, 46]]

    # 2. 初始化归一化对象
    transformer = MinMaxScaler()

    # 3. 对原始特征进行变换
    data = transformer.fit_transform(data)

    # 4. 打印归一化后的结果
    print(data)

归一化受到最大值与最小值的影响,这种方法容易受到异常数据的影响, 鲁棒性较差,适合传统精确小数据场景 

2.3标准化

 

  • mean 为特征的平均值
  • σ 为特征的标准差

💥💥scikit-learn 中实现标准化的 API: 

from sklearn.preprocessing import StandardScaler

def test():

    # 1. 准备数据
    data = [[90, 2, 10, 40],
            [60, 4, 15, 45],
            [75, 3, 13, 46]]

    # 2. 初始化标准化对象
    transformer = StandardScaler()

    # 3. 对原始特征进行变换
    data = transformer.fit_transform(data)

    # 4. 打印归一化后的结果
    print(data)

 对于标准化来说,如果出现异常点,由于具有一定数据量,少量的异常点对于平均值的影响并不大

2.4小结 

  1. 归一化和标准化都能够将量纲不同的数据集缩放到相同范围内
  2. 归一化受到最大值与最小值的影响,这种方法容易受到异常数据的影响, 鲁棒性较差,适合传统精确小数据场景
  3. 对于标准化来说,如果出现异常点,由于具有一定数据量,少量的异常点对于平均值的影响并不大,鲁棒性更好

3.总结 

 🧡🧡友友们可能发现本期并没有太多的介绍有关KNN算法的API,而大多的去解释归一化和标准化,而贯穿整个机器学习的目的就是对于数据的处理和分析,归一化和标准化能更好的帮助我们,所以归一化和标准化是我们入门的基本功和必需品,当然机器学习还包含如何去更好的构建模型去自己预测一些数据等,所以友友们任重而道远呀,我们一起加油,下期我们就正式介绍KNN算法及相关实战案例。🧡🧡

  • 19
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值