读书日期: 20180328 作者:Peter Harrington [美国] 出版社:Manning
1.引言:
1.基本介绍:
机器学习用以彰显数据背后的真实含义。简单地说,机器学习将无序的数据转化为有用的信息。
下面介绍一些机器学习中常用的术语:
1.特征/属性:体重、翼展、脚蹼、后背颜色,测量的这4种值是特征,也叫属性。
2.实例:表中的每一行都是具有相关特征的实例。
3.目标变量:通过“体重、翼展、脚蹼、后背颜色”这4个测量值来推测,这只鸟的分类,那么“种属”就是目标变量。
4.分类:根据测量值推测,某只鸟属于哪个种类,这个过程是分类。
5.训练集:为算法输入大量已经分类的数据作为算法的训练集。
6.训练样本:下表是一个包含6个训练样本的训练集。
2.机器学习的主要任务:
机器学习包含2个主要的任务,分类和回归。
分类:将实例数据划分到合适的分类中。
回归:预测数值型数据。
分类和回归属于监督学习(因为这类算法必须知道预测什么,即目标变量的分类信息)。那么对应的无监督学习是指数据没有类别信息,也不给定目标值。在无监督学习中,将数据集合分成由类似的对象组成的多个类的过程称为聚类。
3.Python numpy模块安装:
使用numpy模块进行机器学习,需要先安装模块,官方的文档如下(3.x版本):https://docs.python.org/3/installing/index.html
首先,我使用的python是3.6.3版本,可以根据自己的版本查看相应的文档。使用下边语句安装最新的numpy:
python -m pip install numpy
这样,我们就可以在python的交互式命令行中使用numpy了。random.rat(4,4)生成一个随机的44数组;mat()可以将数组转化成矩阵;matrix.I 矩阵的.I方法可以求矩阵的逆矩阵;invrandMatrandMat实现矩阵的乘法。
>>> from numpy import *
>>> random.rand(4,4)
array([[6.73978444e-01, 2.99808800e-01, 7.43641576e-01, 4.07781388e-01],
[7.53026681e-01, 1.83408865e-01, 4.74676362e-01, 5.37249607e-01],
[9.59585572e-02, 2.75841536e-01, 6.67686107e-02, 3.83703293e-01],
[8.88914530e-02, 9.17875466e-01, 2.56891101e-04, 2.04974425e-01]])
>>> randMat = mat(random.rand(4,4))
>>> randMat
matrix([[0.48243217, 0.51042373, 0.34005549, 0.12387821],
[0.13935257, 0.59590073, 0.36599379, 0.05547555],
[0.33131112, 0.56370196, 0.35442827, 0.85224919],
[0.11958382, 0.40675776, 0.25334256, 0.97666055]])
>>> invrandMat=randMat.I
>>> invrandMat
matrix([[ -1.85456225, -1.92062274, 9.34598511, -7.81112823],
[ -38.57802488, 4.70274046, 76.67742274, -62.28385262],
[ 63.5465415 , -4.09300354, -128.43853768, 104.24980239],
[ -0.18978663, -0.66171278, 0.23773163, 0.87810726]])
>>> invrandMat*randMat
matrix([[ 1.00000000e+00, 7.82763747e-15, 5.06171312e-15,
1.07520330e-14],
[-8.46064482e-15, 1.00000000e+00, -7.15536314e-15,
-8.84196109e-15],
[ 1.26870039e-14, 2.28427698e-14, 1.00000000e+00,
2.39549673e-14],
[ 2.18783853e-18, 2.08091434e-17, 2.79508969e-17,
1.00000000e+00]])
数学知识补充:
1.逆矩阵:设A是数域上的一个n阶方阵,若在相同数域上存在另一个n阶矩阵B,使得: AB=BA=E。 则我们称B是A的逆矩阵,而A则被称为可逆矩阵。
其中的E代表单位矩阵,定义如下:
单位矩阵
就是对角线是都是1,其他的都是0的矩阵
比如
1 0 0
0 1 0
0 0 1
2.矩阵加减法:矩阵的加减法非常简单,一个同阶矩阵,只要对应的元素做加减法即可。
3.矩阵乘法:
2. k-近邻算法(kNN算法):
1.算法介绍
k-近邻算法简单地说,采用测量不同特征值之间的距离的方法来进行分类。算法原理如下:首先,输入一些带有标签值(目标值)的训练样本;然后对于一条未分类(未找到归属标签)的数据,计算该条记录(未标签)的特征值与每一个训练样本的特征值之间的距离(具体的难点,如何计算距离);下面找到与该条数据距离最近的k个样本(一般k小于20), 这k个样本中出现次数最多的标签,就是这条数据应该分类的标签。
算法优缺点和使用场景:
优点:准确度高、可以忽略异常数据、无数据假定输入
缺点:计算复杂度高、空间复杂度高
适用范围:数值型和标称型