Python 《机器学习实战》学习笔记(一)——机器学习基础

《机器学习实战》共分为四个部分:

第一部分——分类

共七章,第一章介绍机器学习的基础;第二章讲述最简单的分类算法:k-近邻算法;第三章引入决策树;第四章将讨论如何使用概率论建立分类器;第五章讨论Logistic回归;第六章介绍支持向量机;第七章介绍元算法:AdaBoost。

第二部分——利用回归预测数值类型数

介绍了预测数值型数据——回归和树回归

第三部分——无监督学习

第四部分——其他工具

前两部分是监督学习(supervised learning),第三部分是无监督学习。

第一部分 分类

监督学习——只需要给定输入样本值,机器就可以从中推演处指定目标变量的可能结果。

两种类型的目标变量:

标称型——目标变量的结果只在优先目标集中取值,如真与假、动物分类集合{爬行类、鱼类、扑入类、两栖类、植物、真菌}

数值型——目标变量可以从无限的数值集合中取值,如0.100、42.001、1000.743等(数值型目标变量主要用于回归分析)

第一章 机器学习的基础

1.1 何谓机器学习

单地说,机器学习就是把无序的数据转换成有用的信息。

机器学习的主要任务就是分类。使用某个机器学习算法进行分类,首先需要做的事算法训练,即学习如何分类。为了测试机器学习算法的效果,通常使用两套独立的样本集:训练数据测试数据

1.3机器学习的主要任务

它的主要任务是将实例数据划分到合适的分类中。另一个任务是回归——主要用于预测数值型数据。

分类和回归属于监督学习,因为这类算法必须知道预测什么,即目标变量的分类信息。

无监督学习——数据没有类别信息,也不会给定目标值。在无监督学习中,将数据集合分成由类似的对象组成的多个类的过程被称为聚类;将寻找描述数据统计值的过程称之为密度估计。此外,无监督学习还可以减少数据特征的维度,以便我们可以使用二维或三维图形更加直观地展示数据信息。

用于执行分类、回归、聚类和密度估计得机器学习算法:

监督学习的用途
1. k-近邻算法——先行回归
2. 朴素贝叶斯算法——局部加权线性回归
3. 支持向量机——Ridge回归
4. 决策树——Lasso最小回归系数估计

无监督学习的用途
1.K-均值——最大期望算法
2.DBSCAN——Parzen窗设计

1.4如何选择合适的算法

选择实际可用的算法,必须考虑下面两个问题:

  1. 使用机器学习算法的目的,想要算法完成何种任务,比如是预测明天下雨的概率还是对投票者按照兴趣分组;
  2. 需要分析或手机的数据是什么。

如果不想预测目标变量的值,则可以选择无监督学习算法。进一步分析是否需要将数据划分为离散的组。如果这是唯一的需求,则使用聚类算法;如果还需要估计数据与每个分组的相似程度,则需要使用密度估计算法。

其次需要考虑的事数据问题。主要了解数据的特性有:特征值是离散型变量还是连续性变量,特征值中是否存在缺失的值,何种原因造成缺失值,数据中是否存在异常值,某个特征发生的频率如何(是否罕见的如同海底捞针),等等。

一般来着发现最好算法的关键环节是反复试错的迭代过程。

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

  • 收集数据:
    通过不同方法收集样本数据;
  • 准备输入数据
    保证数据格式符合要求,为机器学习算法准备特定的数据格式;
  • 分析输入数据
    人工分析以前的到的数据(这一步主要是确保数据集中没有垃圾数据);
  • 训练算法
    机器学习算法从这一步才是这正开始学习
  • 测试算法
  • 使用算法

1.6 Python语言的优势

1.Python的语法清晰
2.易于操作纯文本文件

选择Python实现机器学习算法的编程语言,是因为它具有其他编程语言不具备的优势,如易于理解、丰富的函数库(尤其是矩阵操作——NumPy库函数)、活跃的开发者社区等。

  • 可执行伪代码
    Python具有清晰地语法结构,也称作可执行伪代码。Python语言处理和操作文本非常简单,非常易于处理非数值型数据。

  • Python比较流行
    Python语言使用广泛,代码范例也很多,便于读者快速学习和掌握。在科学和金融领域,Python余压得到了广泛应用。Python的科学工具可以与绘图工具Matplotlib协同工作。Python开发环境还提供了交互式shell环境,允许用户开发程序是查看和检测程序内容。

1.7 NumPy函数库基础

机器学习算法涉及很多线性代数只是,使用Python语言构造机器学习应用时,会经常使用NumPy函数库。

NumPy函数库是Python开发环境的一个独立模块,而且大多数Python发行版没有默认安装Numpy函数库,因此在安装Python之后必须单独安装NumPy函数库。

WIN10 64bit python2.7 安装 numpy scipy matplotlib

Windows10可以通过点击菜单栏里的IDLE(Python Guy)进入Python shell开发环境,前提已成功安装了Python。

在Python shell开发环境中输入谢列命令:

>>> from numpy import *

上述命令将Numpy函数库的所有模块引入当前的命名空间。然后在Python shell开发环境中输入下述命名:

>>> random.rand(4,4)
array([[ 0.78314482,  0.7239554 ,  0.3108891 ,  0.51277561],
       [ 0.78408743,  0.37782528,  0.23968518,  0.85503523],
       [ 0.4666761 ,  0.38926782,  0.75106318,  0.06438148],
       [ 0.59958743,  0.35981518,  0.16095452,  0.84342553]])

上述命令构造了一个4x4的随机数组,计算机不一样,生成的随机数也会不一样。

NumPy矩阵与数组的区别

NumPy函数库中存在两种不同的数据类型(矩阵matrix和数组arry),都可以用于处理行列表示的数字元素。虽然他们看起来很相似,但是在这两个数据类型上执行相同的数学运算可能得到不同的结果,其中NumPy函数库中的matrix与MATLAB中matriccs等价。

调用mat()函数可以将数组转化为矩阵,输入下述命令:

>>> randMat = mat(random.rand(4,4))
>>> randMat.I
matrix([[ 0.98017444,  0.21122576, -2.36904023,  2.28842775],
        [ 0.82414424, -2.75841087,  0.27908233,  2.61223953],
        [-0.9695299 ,  0.97877418,  0.48761212,  0.23723141],
        [-0.18363084,  2.07333355,  1.715797  , -4.37572914]])

.I操作符实现了矩阵求逆的运算。

执行下面的命令存储逆矩阵:

>>> invRandMat = randMat.I

接着执行矩阵乘法,得到矩阵与其逆矩阵相乘的结果:

>>> randMat*invRandMat
matrix([[  1.00000000e+00,  -1.12760617e-17,  -3.63418003e-16,
           2.52530441e-16],
        [ -5.86254723e-17,   1.00000000e+00,  -2.92120779e-17,
          -3.70375431e-17],
        [ -3.75560507e-17,  -9.71493500e-17,   1.00000000e+00,
          -5.85783766e-17],
        [ -5.59998459e-17,  -4.54482523e-17,  -5.99937790e-17,
           1.00000000e+00]])

结果应该是单位矩阵,除了对角线元素是1,4X4矩阵的其他元素应该全是0。实际输出结果略有不同,矩阵里还留下了许多非常小的元素,这是计算机处理误差产生的结果,输入下述命令,得到误差值:

>>> myBye = randMat*invRandMat
>>> myBye - eye(4)
matrix([[  0.00000000e+00,  -1.12760617e-17,  -3.63418003e-16,
           2.52530441e-16],
        [ -5.86254723e-17,   0.00000000e+00,  -2.92120779e-17,
          -3.70375431e-17],
        [ -3.75560507e-17,  -9.71493500e-17,   0.00000000e+00,
          -5.85783766e-17],
        [ -5.59998459e-17,  -4.54482523e-17,  -5.99937790e-17,
          -1.11022302e-16]])

函数eye(4)创建4X4的单位矩阵。

以上基本为第一部分的第一章,第一本分的前七章主要研究分类问题。学习机器学习算法,必须了解数据实例,每个数据实例由多个特征值组成。分类是基本的机器学习任务,它分析未分类的数据,以确定如何将其放入移植群组中。为了构建和训练分类器,必须先输入大量已知的数据,我们将这些数据成为训练样本集。

参考文献

《机器学习实战》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值