美文网首页
《机器学习实战》读书笔记

《机器学习实战》读书笔记

作者: 正则表达式 | 来源:发表于2017-09-19 18:01 被阅读0次

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

    1、收集数据。

    我们可以使用很多方法收集样本数据,如:制作网络爬虫从网站上抽取数据、从RSS反馈或者API中得到信息、设备发送过来的实测数据(风速、血糖等)。提取数据的方法非常多,为了节省时间与精力,可以使用公开可用的数据源。

    2、准备输入数据。

    得到数据之后,还必须确保数据格式符合要求,本书采用的格式是Python语言的List。使用这种标准数据格式可以融合算法和数据源,方便匹配操作。

    3、分析输入数据。

    此步骤主要是人工分析以前得到的数据。为了确保前两步有效,最简单的方法是用文本编辑器打开数据文件,査看得到的数据是否为空值。此外,还可以进一步浏览数据,分析是否可以识别出模式;数据中是否存在明显的异常值,如某些数据点与数据集中的其他值存在明显的差异。通过一维、二维或三维图形展示数据也是不错的方法,然而大多数时候我们得到数据的特征值都不会低于三个,无法一次图形化展示所有特征。本书的后续章节将会介绍提炼数据的方法,使得多维数据可以压缩到二维或三维,方便我们图形化展示数据。
    这一步的主要作用是确保数据集中没有垃圾数据。如果是在产品化系统中使用机器学习算法
    并且算法可以处理系统产生的数据格式,或者我们信任数据来源,可以直接跳过第3步。此步骤需要人工干预,如果在自动化系统中还需要人工干预,显然就降低了系统的价值。

    4、训练算法。

    机器学习算法从这一步才真正开始学习。根据算法的不同,第4步和第5步是机器学习算法的核心。我们将前两步得到的格式化数据输入到算法,从中抽取知识或信息。这里得到的知识需要存储为计算机可以处理的格式,方便后续步骤使用。
    如果使用无监督学习算法,由于不存在目标变量值,故而也不需要训练算法,所有与算法相
    关的内容都集中在第5步。

    5、测试算法。

    这一步将实际使用第4步机器学习得到的知识信息。为了评估算法,必须测试算
    法工作的效果。对于监督学习,必须已知用于评估算法的目标变量值;对于无监督学习,也必须用其他的评测手段来检验算法的成功率。无论哪种情形,如果不满意算法的输出结果,则可以回到第4步,改正并加以测试。问题常常会跟数据的收集和准备有关,这时你就必须跳回第1步重新开始。

    6、使用算法。

    将机器学习算法转换为应用程序,执行实际任务,以检验上述步骤是否可以
    在实际环境中正常工作。此时如果碰到新的数据问题,同样需要重复执行上述的步骤。

    K-近邻算法(KNN)

    工作原理

    存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。输人没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近邻)的分类标签。
    一般来说,我们只选择样本数据集中前k个最相似的数据,这就是k-近邻算法中k的出处,通常k是不大于20的整数。
    最后,选择k个最相似数据中出现次数最多的分类,作为新数据的分类。

    一般流程

    按照开发机器学习应用的通用步骤,K-近邻算法一般流程如下:
    1、收集数据:可以使用任何方法。
    2、准备数据:距离计算所需要的数值,最好是结构化的数据格式。
    3、分析数据:可以使用任何方法。
    4、训练算法:此步驟不适用于1 近邻算法。
    5、测试算法:计算错误率。
    6、使用算法:首先需要输入样本数据和结构化的输出结果,然后运行女-近邻算法判定输
    入数据分别属于哪个分类,最后应用对计算出的分类执行后续的处理。

    python实现

    导入数据

    为了测试机器学习算法的效果,通常使用两套独立的样本集:训练数据和测试数据。当机器
    学习程序开始运行时,使用训练样本集作为算法的输人,训练完成之后输人测试样本。比较测试样本预测的目标变量值与实际样本类别之间的差别,就可以得出算法的实际精确度。
    以下是K-近邻算法的训练数据:

    def create_data_set():
        group = np.array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]])
        labels = ['A', 'A', 'B', 'B']
        return group, labels
    

    这里有4组数据,每组数据有两个我们已知的属性或者特征值。上面的group矩阵每行包含一个不同的数据,我们可以把它想象为某个日志文件中不同的测量点或者入口。由于人类大脑的限制,我们通常只能可视化处理三维以下的事务。因此为了简单地实现数据可视化,对于每个数据点我们通常只使用两个特征。
    labels包含了每个数据点的标签信息,label包含的元素个数等于group矩阵行数。这
    里我们将数据点(1,1.1)定义为类A,数据点(0, 0.1)定义为类B 。为了说明方便,例子中的数值是任意选择的,并没有给出轴标签。


    伪代码

    1、计算已知类别数据集中的点与当前点之间的距离;
    2、按照距离递增次序排序;
    3、选取与当前点距离最小的走个点;
    4、确定前灸个点所在类别的出现频率;
    5、返回前女个点出现频率最高的类别作为当前点的预测分类。

    实现

    相关文章

      网友评论

          本文标题:《机器学习实战》读书笔记

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