机器学习给人的感觉就是非常的高大上,因为机器学习的一些名词总是让人云里雾里,今天我们主要来通俗易懂的讲一下机器学习的概念。
数据大家应该都明白,举个栗子!我们在以往写程序的时候,经常用到<code>数据库</code>,那么数据库中存的<code>一行数据</code>,其实又叫做<code>一条数据</code>而每条数据都包含很多<code>属性</code>。那么属性又跟机器学习有什么关系呢?
每条数据的<code>属性</code>,在机器学习中就叫做<code>特征</code>,特征又分为<code>离散型</code>、<code>连续型</code>
如果你高中数学有认真听,应该听说过这么两个词<code>连续</code>和<code>不连续</code>,而在大学有一们课叫<code>离散数学</code>,下面我们简单举几个栗子来说明<code>离散型</code>特征!首先我们定义了一个<code>Bird</code>类,类中有几个属性,分别是<code>体重</code>、<code>长度</code>、<code>脚蹼</code>、<code>颜色</code>、<code>种类</code>其实这几个<code>属性</code>又叫做<code>特征</code>
颜色属于<code>枚举型特征</code>
体重和长度属于<code>数值型特征</code>
脚蹼属于<code>布尔型特征</code>,又叫做<code>二值型特征</code>
种类被我们称为<code>目标变量</code>
下面就是我们的<code>离散型</code>数据
2.2 连续型连续型数据一般都是<code>区间型</code>的数据,比如:今天杭州市的天气是<code>19~28</code>摄氏度水结冰的温度是<code>-4~负无穷</code>摄氏度
这个词真的是故弄玄虚的 本质上就是<code>特征</code>的个数我们用上面的<code>Bird</code>进行说明,这个类包含4个特征,那么它的数据的<code>维度</code>就是4比如我们将数据离散后变成下面这个<code>矩阵</code>,那么矩阵中每条<code>向量</code>的<code>维度</code>就是4
<code>目标变量</code>就是机器学习算法预测的结果,简单的理解,就是<code>y=x+1</code>中的<code>y</code>
在<code>分类算法</code>中目标变量通常是<code>标称型数据</code>
在<code>回归算法</code>中目标变量通常是<code>连续型数据</code>
一般在我们的<code>训练数据集</code>中,目标变量是必须要确定的值,不然的话,你怎么确定<code>特征</code>和<code>目标变量</code>的关系呢
训练,全称叫做<code>算法训练</code>为算法输入大量的已分类(又叫做标注数据)的数据,来产生一个<code>算法模型</code>这里的数据叫做<code>训练集</code>,训练集是用于训练机器学习算法的数据样本集合下面我们举例说明:
顾名思义,<code>训练数据集</code>就是用来训练算法模型的数据集,也就是训练算法的输入数据
<code>测试样本集</code>就是在我们训练完算法模型后,对<code>算法模型</code>进行测试所要使用的输入数据这里有两点要注意:
测试数据集要包含<code>目标变量</code>,用以判断<code>算法模型</code>的<code>实际精确度</code>
测试数据集用以训练模型,如果参与训练过程,那将导致算法模型的正确率存在偏差
归一化全称叫做<code>数值归一化</code>为什么要对数据进行<code>归一化</code>呢?,让我们看看下方的数据。<code>飞行里程数据</code>和其他两项数据的差异实在太大了,在我们进行<code>欧式距离</code>等公式计算的时候,因为差值太大了,所以会造成数据偏重,所以我们要消除这个偏重,将所有特征都转化到<code>0 ~ 1</code>的区间之内。
下面提供一个较为简单的归一化公式:
转化后的数据:
监督学习其实就是指我们对算法所输入的数据是经过<code>标注</code>的。监督学习的算法必须要知道要预测什么,也就是必须要知道<code>特征</code>和<code>目标变量</code>的关系。
分类:其实是把数据分配到已有的几个类别机器学习的主要任务就是<code>分类</code>下面我们举例说明:我们可以通过数据+算法训练出一个<code>分类器</code>(又叫做模型),然后通过分类器来对新的数据进行分类。
<code>回归</code>主要应用于预测一些数值型的数据,比如<code>数据拟合曲线</code>:通过给定数据点的最优拟合曲线
9 无监督学习
在无监督学习中,数据是只有<code>特征</code>,没有<code>目标变量</code>的,通过计算来猜出几个结果来无监督学习的好处是可以减少数据特征的维度,以便我们用二维和三维的图像进行展示数据
什么叫聚类呢?顾名思义。聚类:其实就是把没有分类的一组数据中相似的聚集成几个堆,这个堆也叫<code>簇</code>专业的讲,就是将数据集合分成由类似的对象组成的多个类的过程这里的<code>苹果</code>,<code>橘子</code>,<code>筷子</code>,<code>勺子</code>,<code>可乐</code>,<code>雪碧</code>都是没有分类的数据,我们通过他们的一些特征计算出<code>水果</code>、<code>餐具</code>、<code>饮料</code>这三个类。
寻找描述数据统计值的过程
10 在使用机器学习时的问题
首先我们要明确,我们选择算法只能在一定程度上缩小算法的选择范围,一般并不存在最好的算法和给出最好结果的算法在我们选择算法的时候,首先要考虑两个问题 1. 我们的目的是什么,想要算法完成什么任务 2. 我们需要分析的数据是什么,我们得到的数据又是什么如果你想要预测<code>目标变量</code>,那么你可以选择<code>监督学习</code>。如果你的<code>目标变量</code>的数据类型是<code>离散型</code>,那么你可以选择<code>分类算法</code>,如果是<code>连续型</code>,可以选择<code>回归算法</code>如果你不想预测<code>目标变量</code>,可以选择<code>无监督学习</code>。如果需要将数据划分成组,可以选择<code>聚类算法</code>,如果要估计每个分组的相似程度,可以选择<code>密度估计算法</code>
特征值是<code>离散型</code>还是<code>连续型</code>
特征值中是否存在缺失的值,什么原因导致的缺失值,
数据中是否存在异常值
某个特征的频率如何,是否相当稀疏
收集数据:爬虫爬数据,硬件设备获取数据,下载公开数据等
准备输入数据:确保数据的格式,是否格式不统一,是否需要离散化等
分析数据:查看数据中是否有空值,是否存在其他异常值,可以通过图表展示来观察数据
训练算法:选择合适的算法,并对我们的训练数据进行训练,如果是无监督学习则不需要训练
测试算法:对我们的模型或算法进行测试,来看看是否满意算法的输出结果
使用算法:将模型或算法进行工程化,用以执行实际的任务
机器学习领域,推荐<code>python</code>,因为它有一些强大库,并且语言简单,可以让你更加专注机器学习的开发。常用的库 1. numpy: 实现了常用的向量和矩阵的操作,并且增加了可读性,并且底层提高了计算性能 2. matplotlib: 常用的绘图工具,可以绘制2d、3d 的图形。
构建一个4*4的数组。
将4*4的随机数组转化为矩阵