机器学习入门教学之KNN算法

机器学习作为人工智能的核心,是我们要重点学习并理解的内容。在学习之前,我们首先需要去理解什么是机器学习?

机器学习的定义

机器学习的定义很广泛,涉及面很多,其本质概念就是利用数学中的公式,并将其输入到机器中,从而让机器来输出并总结数据中蕴含的规律。

机器学习的基本步骤

机器学习基本包含有三个步骤:收集数据→建立数学模型并训练→预测结果

其中,收集数据是机器学习的关键,因为收集到越多有用的数据对之后的模型训练效果越好,从而使最后的预测结果越能达到预期值。

所以综上来说,收集数据使机器学习的第一步,也是最关键的一步。

机器学习所需要的库

机器学习中我们需要用到很多的库,也就是第三方包,下面介绍一下Python进行机器学习时常用到的库:

Numpy:作为N维数组操作的基础库,它提供了矩阵运算、广播函数和线性代数等功能。

SciPy:提供数学算法和工程数据运算功能,类似于Matlab。

Matplotlib:用于创建高质量的二维数据可视化图表,支持超过100种可视化效果。

Pandas:提供高效的数据处理和分析工具,通过操作索引即可轻松处理数据。

Sklearn:包含聚类、分类、回归和强化学习等多种机器学习方法,是机器学习领域最基本且优秀的Python库。

 机器学习的基本算法

  1. K最近邻算法
  2. 逻辑回归
  3. SVM
  4. 朴素贝叶斯
  5. 随机森林算法
  6. K均值算法
  7. Adaboost 算法

 下面我们重点来介绍一下K最近邻算法

KNN算法定义

K最邻近(KNN,K-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是K个最近的邻居的意思,说的是每个样本都可以用它最接近的K个邻近值来代表。近邻算法就是将数据集合中每一个记录进行分类的方法。

 KNN算法核心思想

如果一个样本在特征空间中的K个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。

 KNN算法流程

总体来说,KNN分类算法包括以下4个步骤: 

①准备数据,对数据进行预处理。

②计算测试样本点(也就是待分类点)到其他每个样本点的距离 。

③对每个距离进行排序,然后选择出距离最小的K个点 。

④对K个点所属的类别进行比较,根据少数服从多数的原则,将测试样本点归入在K个点中占比最高的那一类。

KNN算法的优缺点

优点:

KNN方法思路简单,易于理解,易于实现,无需估计参数。

缺点:

该算法在分类时有个主要的不足是,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数 。

该方法的另一个不足之处是计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点 。

KNN算法代码讲解

在进行计算之前,我们需要将所需要的库装好,像Sklearn、NumPy、SciPy、 Pandas 和 Matplotlib库,今天,我来教下大家怎么在Python环境中将这些库导入。

我们举一个例子来介绍,比如来安装Sklearn库。它建立在 NumPy, SciPy, Pandas Matplotlib 之上,里面的 API 的设计非常好,所有对象的接口简单,很适合新手上路。

首先我们同时按住Win+R键,在弹出的界面中输入cmd命令进入命令提示符,在命令提示符中输入pip install scikit-learn -i https://pypi.tuna.tsinghua.edu.cn/simple/  即可安装。

下面我们使用numpy库创建一个5×5的矩阵

 

进入调试模式下点击右边的作为Array查看可以清晰的看到a的矩阵结构。

  在创建一组数据b(注意,这时b是一组列表,而不是矩阵,只是形式与矩阵类似)。

进入调试模式下可以清楚的看到。

 这时创建一组数据c,使用numpy库中的random()函数,表示随机生成数据,rand是指生成的数据是在[0,1]范围之内,一组5行5列的数据。

再进行a+c和a+b的操作,其中a和c都是矩阵,固然可以相加,而b是列表,能与a相加吗,下面我们运行代码验证一下。


由此我们可得,结构相同的矩阵与列表是可以相加的。

下面我们使用sklearn.neighbors 模块中的 KNeighborsClassifier 类来创建一个 KNN,并对数据进行训练和预测, n_neighbors=10 表示在进行分类时,将考虑最近的 10 个邻居,计算分类器在 data(训练集)上的准确率,即正确预测的样本数与总样本数的比例。

本次介绍是为了让大家更好的掌握机器学习以及KNN算法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值