【机器学习实战学习笔记】之 1机器学习基础

本学习笔记参考书目《机器学习实战》

本博客系列文章如下:

机器学习基础 :https://blog.csdn.net/shuiyixin/article/details/86650642

 k-近邻算法 :https://blog.csdn.net/shuiyixin/article/details/86681831

决策树01(含Matplotlib模块介绍):https://blog.csdn.net/shuiyixin/article/details/86832600

目录

一、机器学习相关概念

1、什么是机器学习

2、关键术语

二、机器学习主要任务

1、分类与回归

2、监督学习与无监督学习

三、如何学习合适算法

1、选择算法考虑的因素

2、选择算法的注意事项

四、开发机器学习应用程序的步骤

五、Python语言简介

1、选择Python的原因

2、Python语言优势

3、Python语言与其他编程语言对比

六、NumPy库函数基础

1、构造4×4随机数组

2、NumPy矩阵与数组的区别

3、将数组转化为矩阵

4、矩阵乘法

5、计算误差值


一、机器学习相关概念

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.运行结果

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值