本学习笔记参考书目《机器学习实战》
目录
2、关键术语
4、矩阵乘法
一、机器学习相关概念
1、什么是机器学习
1.机器学习就是把无序的数据转换成有用的信息。
2.机器学习中需要用到统计学知识,
原因:现实生活中的大多数事情没有确定存在的解决方案,无法建立精确的模型。
举例:人对幸福的概念是不同的,所以很难确立一个确定的特性。
3.时代的发展,(包括移动计算和传感器产生的海量数据)意味着我们将面临越来越多的数据。一个非常重要的课题是:如何从海量的数据中抽取有用的信息。
2、关键术语
1.分类:如果我们能够得到所研究物体的全部特征信息,从而判断某物体是否为我们所研究的物体。这个过程就是分类。
2.算法训练:学习如何分类。通常我们为算法输人大量已分类数据作为算法的训练集。
3.训练集:用于训练机器学习算法的数据样本集合。
表1-1 包含六个训练样本的训练集,每个训练样本有4种特征、一个目标变量
表注:特征或者属性通常是训练样本集的列,它们是独立测量得到的结果,多个特征联系在一起共同组成一个训练样本。
4.目标变量:机器学习算法的预测结果。(表1-1中的种属)。在分类算法中目标变量的类型通常是标称型的,而在回归算法中通常是连续型的。训练样本集必须确定知道目标变量的值,以便机器学习算法可以发现特征和目标变量之间的关系。
5.类别:分类问题中的目标变量。(假定分类问题中只存在有限个数的类别)
6.两套独立的样本集:训练数据与测试数据。机器学习程序开始运行时,使用训练样本集作为算法的输人,训练完成之后输人测试样本。
7.算法实际精确度:输人测试样本时并不提供测试样本的目标变量,由程序决定样本属于哪个类别。比较测试样本预测的目标变量值与实际样本类别之间的差别,就可以得到算法实际精确度。
8.知识表示:分类程序经过测试满足精确度要求,可以区分不同物体种类,即知识表示。知识表示可以采用规则集的形式,也可以采用概率分布的形式。
二、机器学习主要任务
1、分类与回归
1.分类:主要任务是将实例黎据划分到合适的分类中。
2.回归:主要用于预测数值型数据。例:数据拟合曲线(通过给定数据点的最优拟合曲线)。
2、监督学习与无监督学习
1.监督学习
此类算法必须知道预测什么,即目标变量的分类信息。分类与回归属于监督学习。
2.无监督学习
1.与监督学习相对应。此时数据没有类别信息,也不会给定目标值。
2.在无监督学习中,将数据集合分成由类似的对象组成的多个类的过程被称为聚类;将寻找描述数据统计值的过程称之为密度估计。
3.无监督学习还可以减少数据特征的维度,以便我们可以使用二维或三维图形更加直观地展示数据信息。
表1-2 用于执行分类、回归、聚类和密度估计的机器学习算法
三、如何学习合适算法
1、选择算法考虑的因素
1.使用机器学习算法的目的
即想要算法完成何种任务。比如是预测明天下雨的概率还是对投票者按照兴趣分组?
机器学习算法的目的
2.需要分析或收集的数据是什么?
1.应该充分了解数据,对实际数据了解得越充分,越容易创建符合实际需求的应用程序。
2.主要应该了解数据的以下特性
(1)特征值是离散型变量还是连续型变量;
(2)特征值中是否存在缺失的值;
(3)何种原因造成缺失值;
(4)数据中是否存在异常值;
(5)某个特征发生的频率如何。
2、选择算法的注意事项
1.我们只能在一定程度上缩小算法的选择范围,一般并不存在最好的算法或者可以给出最好结果的算法
2.要尝试不同算法的执行效果。对于所选的每种算法,都可以使用其他的机器学习技术来改进其性能。
3.在处理输入数据之后,两个算法的相对性能也可能会发生变化。
四、开发机器学习应用程序的步骤
1.收集数据
可以使用很多方法收集样本数据,提取数据的方法非常多,为了节省时间与精力,可以使用公开可用的数据源。
2.准备输入数据
1.必须确保数据格式符合要求。
2.需要为机器学习算法准备特定的数据格式,如:某些算法要求特征值使用特定的格式,一些算法要求目标变量和特征值是字符串类型,而另一些算法则可能要求是整数类型。
3.分析输入数据
1.主要是人工分析以前得到的数据。为了确保前两步有效,最简单的方法是用文本编辑器打开数据文件,査看得到的数据是否为空值。
2.还可以进一步浏览数据,分析是否可以识别出模式;数据中是否存在明显的异常值,如某些数据点与数据集中的其他值存在明显的差异。通过一维、二维或三维图形展示数据也是不错的方法,但大多数时候我们得到数据的特征值都不会低于三个,无法一次图形化展示所有特征。
3.分析数据的主要作用是确保数据集中没有垃圾数据。
4.训练算法
1.机器学习算法从这一步才真正开始学习。
2.根据算法的不同,第4步和第5步是机器学习算法的核心。我们将前两步得到的格式化数据输入到算法,从中抽取知识或信息。这里得到的知识需要存储为计算机可以处理的格式,方便后续步骤使用。
5.测试算法
1.实际使用第4步机器学习得到的知识信息。
2.为了评估算法,必须测试算法工作的效果。对于监督学习,必须已知用于评估算法的目标变量值;对于无监督学习,也必须用其他的评测手段来检验算法的成功率。
3.如果不满意算法的输出结果,则可以回到第4步,改正并加以测试。
4.问题常常会跟数据的收集和准备有关,这时你就必须跳回第1步重新开始。
6.使用算法
将机器学习算法转换为应用程序,执行实际任务,以检验上述步骤是否可以在实际环境中正常工作。此时如果碰到新的数据问题,同样需要重复执行上述的步骤。
五、Python语言简介
1、选择Python的原因
1.语法清晰;
2.易于操作纯文本文件;
3.使用广泛,存在大量开发文档。
2、Python语言优势
1.可执行伪代码
(1)Python语言具有清晰的语法结构,大家也把它称作可执行伪代码。
(2)默认安装的Python开发环境附带大量高级数据类型,如:列表、元组、字典、集合、队列等。无需进一步编程就可直接使用。使用这些数据类型使得实现抽象的数学概念非常简单。
(3)可以使用自己熟悉的编程风格,如面向对象编程、面向过程编程、或者函数式编程。
(4)Python语言处理和操作文本文件非常简单,非常易于处理非数值型数据。
(5)提供了丰富的正则表达式函数以及很多访问Web页面的函数库,使得从HTML中提取数据变得非常简单、直观。
2.比较流行
(1)使用广泛,代码范例也很多,便于读者快速学习和掌握。
(2)在开发实际应用程序时,可以利用丰富的模块库缩短开发周期。
(3)SciPy、NumPy等许多科学函数库都实现了向量和矩阵操作,这些函数库增加了代码的可读性,学过线性代数的人都可以看懂代码的实际功能。并且科学函数库SciPy、NumPy使用底层语言(C和Fortran) 编写,提高了相关应用程序的计算性能。
(4)Python的科学工具可以与绘图工具Matplotlib协同工作。Matplotlib可以绘制2D、3D图形,也可以处理科学研究中经常使用到的图形。
(5)Python开发环境还提供了交互式shell环境,允许用户开发程序时查看和检测程序内容。
(6)Python开发环境将来还会集成Pylab模块,它将SciPy、NumPy和Matplotlib合并为一个开发环境。
3、Python语言与其他编程语言对比
1.其他编程语言
(1)MATLAB和Mathematica等高级程序语言也允许用户执行矩阵操作,MATLAB有许多内嵌的特征可以轻松地构造机器学习应用。缺点:花费太高。
(2)JAVA和C等强类型程序设计语言也有矩阵数学库。
缺点:为了完成一个简单的工作,我们必须花费大量时间编写了很多无用冗长的代码。且对于非编程人员,难以理解。
2.Python
(1)清晰简练,而且易于理解,便于读者快速学习和掌握。
(2)缺点(唯一不足):性能问题,运行效率不如Java或C代码高。解决方法:用Python调用C编译的代码。
步骤:首先使用Python编写实验程序,逐步用C代码替换核心代码改进性能。
六、NumPy库函数基础
注:NumPy函数库Python开发环境的一个独立模块,大多数Python发行版没有默认安装NumPy函数库,需要独立安装。
附:对安装不太熟悉的同学请点击(安装教程)。
1、构造4×4随机数组
1.代码
"""
构造4×4随机数组,不同计算机的输出结果可能不同。
"""
from numpy import *
random.rand(4,4)
2.运行结果
2、NumPy矩阵与数组的区别
NumPy函数库中存在两种不同的数据类型(矩阵matrix和数组array),都可以用于处理行列表示的数字元素。虽然它们看起来很相似,但是在这两个数据类型上执行相同的数学运算可能得到不同的结果,其中NumPy函数库中的matrix与MATLAB中matrices等价。
3、将数组转化为矩阵
1.代码
"""
调用mat()函数可以将数组转化为矩阵
.I操作符实现了矩阵求逆的运算
invRandMat = randMat.I 用于存储逆矩阵
"""
from numpy import *
random.rand(4,4)
randMat = mat(random.rand(4,4))
randMat.I
invRandMat = randMat.I
2.运行结果
4、矩阵乘法
1.代码
"""
矩阵乘法,即矩阵与其逆矩阵的乘积。
"""
randMat*invRandMat
2.运行结果
注:结果应该是单位矩阵,除了对角线元素是1,矩阵的其他元素应该全是0。实际输出结果略有不同,矩阵里还留下了许多非常小的元素,这是计算机处理误差产生的结果。
5、计算误差值
1.代码
"""
eye(4)为创建一个4×4的单位矩阵
"""
myEye = randMat*invRandMat
myEye - eye(4)
2.运行结果
标签:机器,Python,矩阵,笔记,学习,算法,数据 From: https://blog.51cto.com/u_12001271/5751252