美文网首页我爱编程
机器学习实战

机器学习实战

作者: 奉先 | 来源:发表于2018-03-28 17:02 被阅读19次

    读书日期: 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个样本中出现次数最多的标签,就是这条数据应该分类的标签。

    算法优缺点和使用场景:
    优点:准确度高、可以忽略异常数据、无数据假定输入
    缺点:计算复杂度高、空间复杂度高
    适用范围:数值型和标称型

    相关文章

      网友评论

        本文标题:机器学习实战

        本文链接:https://www.haomeiwen.com/subject/xgeycftx.html