机器学习概述及KNN归纳总结

一 1.机器学习概述

1.1 时刻接触的机器学习

谈起机器学习,就不得不说当下大火的人工智能领域,人工智能是什么?人工智能是类人思考、类人行为,理性的思考、理性的行动。人们一谈起人工智能,很多人就潜意识觉得人工智能是属于那些计算机专业,通讯专业等技术人才,才能时刻接触到的,其实人工智能离我们并不遥远,我们每个人时时刻刻都与人工智能密切接触,例如:我们的办公邮箱拦截的垃圾短信功能,美颜相机,淘宝上给你推荐的商品宝贝,其实这些都是人工智能的应用,当然,不是该专业的人才并不需要懂这里面的原理。

1.2 机器学习的概念

专业点说,机器学习是研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构是指不断完善自身的性能,或者达到操作者的特定要求。那么通俗点说,机器学习其实就是让计算机通过给定的一堆数据,让机器从中学习出某种规律,并使用这种规律对未来某件事做决定或者预测。与前面所说的人工智能相联系,机器学习其实是人工智能领域里的一条分支。

1.3 机器学习的类型

  • 机器学习有两种类型:

     **监督学习**: 根据训练样本(含有标签)进行训练得到一个最优的模型,包括线性回
     归、逻辑回归、svm、支持向量机等算法。
     例如:给定一堆水果,判定每一个水果是哪个种类?
    
     **无监督学习**:训练样本并没有标签,训练之前也不清楚样本的类别,通过样本之间
     的特性进行自动分类,比如聚类算法如kmeans就是典型的无监督学习算法 。
     例如:不同颜色的香蕉和苹果,计算机通过算法模型可以将属于香蕉的水果划分一类,
     苹果划分一类。
    

1.4 机器学习的流程

在这里插入图片描述

想要玩转机器学习,首先还是要有好的数据集,而现在业务中使用的数据集一般都是不完整的,美国有一篇报道上说:数据科学家在他们的时间中有50%到80%的时间花费在收集和准备不规则数据的更为平凡的任务中,然后才能探索有用的金块。因此数据预处理工作是非常重要的,也是整个流程中时间占比最久的。

2. 数据预处理

数据预处理中包含几个重要部分,分别是处理缺失值,数据定标,数据转换。下面来一一介绍。

2.1 处理缺失值

很多拿到手的数据集中,有许多缺失的数值,若果缺失数值占比多,直接删除的话会多算法模型产生很大的影响,那么该如何处理这些缺失值呢?

  1. 均值,中位数,众数插补
  2. 使用固定值
  3. 回归方法(预测)
  4. 插值法(拉格朗日插值法,牛顿插值法等)

2.2 数据定标

数据定标就是使不同规格的数据转换到同一规格。常见的方法有标准化归一化,还有二值化等。标准化的前提是特征值服从正态分布,标准化后,其转换成标准正态分布。归一化利用了边界值信息,将特征的取值区间缩放到某个特点的范围,例如[0, 1]等。
在这里插入图片描述
数据定标后的可视化图:
在这里插入图片描述

2.3 数据转化

对一些数据集中的定性特征属性,可以对其使用独热编码(one-hot-encoding),举个例子:一个数据集中,有个特征属性为性别:男,女,此时将性别进行独热编码,就会转换成:男 为 [1, 0], 女 为[0, 1]。

3. 特征工程

提起特征工程,就有一句不得不提的话,数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。那特征工程到底是什么呢?顾名思义,其本质是一项工程活动,目的是最大限度地从原始数据中提取特征以供算法和模型使用。特征工程包含了太多内容,这里就借用一张图来看看。
在这里插入图片描述
这里面,对数据不平衡进行采样处理,降维,特征选择里的内容在实际业务中是非常常见的操作,需要重点熟悉。

二 2.KNN算法归纳

k-近邻算法(k-Nearest Neighbour algorithm),又称为KNN算法,是数据挖掘技术中原理最简单的算法。KNN的工作原理:给定一个已知标签类别的训练数据集,输入没有标签的新数据后,在训练数据集中找到与新数据最邻近的k个实例,如果这k个实例的多数属于某个类别,那么新数据就属于这个类别。可以简单理解为:由那些离X最近的k个点来投票决定X归为哪一类。

ps: 这里面k个实例中的k的取值,最好是奇数,这样能够确保不会出现的几个种类都是多数
类,即平手现象。

在这里插入图片描述
看图中示例,去k=5,即5个实例,预测红色图标所属种类,找离其最近的5个实例,其中绿标小于蓝标,所以红色图标属于蓝标种类。

具体代码实现:可以看我之前写的另一篇博客

【KNN python代码实现】https://blog.csdn.net/laojie4124/article/details/91906259
构建knn分类器最核心的函数如下:

def euc_dis(instance1, instance2):
    """
    计算两个样本instance1和instance2之间的欧式距离
    instance1: 第一个样本, array型
    instance2: 第二个样本, array型
    """
    dist = np.sqrt(sum((instance1 - instance2)**2)) # 计算欧式距离的公式
    return dist
该代码引用于贪心科技,更加通俗易懂。

如何确定最优的K参数:
使用K折交叉验证(cross validation),K折就是讲数据集切分成K小块,验证集和测试集相互形成补集,循环交替,如图:
当K=5时,进行5折交叉验证,将一份数据分为训练数据和验证数据,进行5次建模预测,最后取一个平均值作为最后结果。
在这里插入图片描述
KNN算法总结:

  • 简单
  • 比较适合应用在低维空间
  • 预测时候的复杂度高,对于大数据需要一定的处理。

以上部分内容引用于
K折交叉验证:https://blog.csdn.net/weixin_39183369/article/details/78953653
特征工程的解释:https://blog.csdn.net/qq_39521554/article/details/78877505
贪心学院:www.greedyai.com

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值