最近学习了一点关于机器学习的内容,是从机器学习开篇和 KNN 算法开始的,有 KNN 的训练、鸢尾花识别,最后是极大似然估计;KNN 是一个直观的监督学习算法,鸢尾花识别是一个具体的分类案例,极大似然估计属于概率统计和参数估计的基础内容。虽然初看并没有什么关联性,但是把它们连起来看,会发现它们都是教我们,如何从有限的函数里,总结出用于未知样本的规律。

一,机器学习是什么

机器学习中有几个基本概念:

1. 样本:一条具体的数据

2. 特征:描述样本的属性

3. 标签:样本所属的类别或真实答案

4,训练集:用于让模型学习的数据

5,测试集:用来检验模型面对新数据时表现的数据

6,模型:模型根据训练数据形成的预测规则

如果训练数据包含标签,这种学习叫监督学习。分类和回归都是监督学习

分类预测离散类型,比如“猫”或“狗”;回归预测连续数值,比如房价或气温

如果只有数据,没有没有标签,这叫无监督学习

二,KNN:根据相似样本做判断

KNN 的英文是 K-Nearest Neighbors,中文叫 K 近邻。

其核心思想为:一个新样本通常和它附近的样本更相似,因此可以参考附近样本的标签。

假设平面上有两类点,蓝色点属于A类,红色点属于B类,现在出现了一个未知颜色的小球,KNN会计算未知球与所有已知点的距离,找出距离最近的 K 个点,再根据这些邻居投票。

如果 K=3,最近的三个点中有两个属于 A 类、一个属于 B 类,那么模型就把新点判断为 A 类。分类时通常采用多数投票;如果是回归问题,则可以对邻居的数值取平均。

三、距离决定了什么叫“相似”

KNN的效果很大程度上取决于距离,最常用的是欧氏距离:

在二维平面中,它就是两点之间的直线距离。

一般我们在使用KNN前,通常需要进行特征缩放,也就是标准化,把每列数据都转换成均值接近0,标准差接近1的形式;也可以把数据归一化到0到1的范围,这样做可以让不同尺度的特征更公平的参与计算。

除了欧氏距离以外,还有曼哈顿距离(沿坐标方向移动),余弦相似度(文本数据)

四,鸢尾花识别:实际案例

鸢尾花数据集是机器学习教学中非常经典的例子。它包含三种鸢尾花,每朵花有四个数值特征:花萼长度、花萼宽度、花瓣长度和花瓣宽度。我们的任务是根据这四个特征,预测花的品种。

一个完整的分类实验通常包括以下步骤

1,了解数据

先查看样本数量,特征含义,类别分布,以及是否存在缺失值和异常值,如果不处理,会直接影响模型本身

2,划分数据

把数据分成训练集和测试集。训练集用于学习,测试集用于最终检验

3,特征缩放(压缩)

由于KNN距离的影响很大,所以我们应当先对特征进行标准化或归一化

标准化

其中μ为均值,σ= 标准差

归一化:

把数据压缩到固定区间[0,1]

4. 选择 K 值

尝试多个 K 值,选择一个合适的

5,模型训练

·最简单的评价指标是准确率,也就是预测正确的样本数占总样本数的比例

接下来该来看代码了,其实代码部分很简单,都是些重复性的:

首先导入pandas库,这是Python 表格数据处理库,专门用来操作 Excel/CSV 类二维表格

这两段代码是读取训练集,测试集Excel;划分训练集特征与标签

这里是导入scale,对训练集特征进行Z-Score标准化,我相信你们看得懂

这里则是导入KNN分类器,构建模型,并且使用训练集训练,至于问什么导入这个包,我的建议是去官方网站去查看官方api文档,那个非常详细,毕竟是官方的。后面两行是训练集自预测,评估准确率的,data是我们建立的空的表格数据对象,后面将标准化后的值填充进去了。n_neighbors是超参数,api文档里明确表明了。简单来说就是预测时选取距离最近的 k 个邻居。fit和predict是模型训练方法和模型预测方法

这一部分是使用text数据集进行训练的,和用训练集的情况一模一样

五,极大似然估计:从数据反推参数

KNN 依靠邻居关系判断类别,而极大似然估计采用的是另一种思路:

先假设数据来自某种概率分布,再寻找最能解释这些数据的参数。

例如,我们可以假设一批数据来自正态分布。正态分布有均值和方差两个参数。均值决定分布中心,方差决定数据分散程度。我们要做的,就是根据已经观察到的数据,估计出合理的均值和方差。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐