最近买了本书《Python 机器学习 - 预测分析核心算法》,感觉还挺靠谱的。主要是讲得简单, 对于新手来说特别友好。果然对工程师来说,可能直接上手,比学数学理论还是容易一些。

没错,就是这本

简单做个笔记

第一章 核心算法概述

介绍两种有效的机器学习方法,惩罚线性回归和集成方法

惩罚线性回归方法

惩罚线性回归是由普通最小二乘法衍生的,主要目的是为了解决最小二乘法容易过拟合的问题。 当可用数据量小于或者等于预测的自由度的时候,很容易产生过拟合。 惩罚线性回归可以减少自由度,使之与数据规模、问题复杂度相匹配

集成方法

集成方法的基本思想是构建多个不同的预测模型,将其输出做某种组合作为最终输出。 单个预测模型叫做基学习器。只要基学习器比随机猜测稍好,继承方法就可以组合出相当好的效果。 集成方法为了实现最广泛的应用,通常将二元决策树作为基学习器

算法的选择

惩罚线性回归的优势在于训练速度和预测速度都很快,能处理大量自由度,但不善于解决复杂问题。 即使面对复杂问题,在早期的特征选择阶段也可以先用惩罚线性回归。

训练的基本步骤

  1. 提取或组合预测所需特征
  2. 设定训练目标
  3. 训练模型
  4. 评估模型在测试数据上的表现

构造一个机器学习问题

什么是特征,什么是目标 特征提取和特征工程 确定训练后模型性能

第二章 通过理解数据了解问题

数据是按照行和列组织的,通常每行代表一个实例,每一列为一个属性

目标变量也被称为标签、目标、结果、响应等

属性可以分成两类:数值变量和类别 类别有叫做因素变量,特点是不同值之间没有顺序关系,不像数值变量有大小关系,可比较。 许多机器学习算法只能处理数值变量,不能处理类别变量。例如惩罚线性回归算法。

标签是数值的问题叫做回归问题,标签是类别的叫做分类问题。如果分类结果只取 2 个值,叫做二元分类问题, 取多个值,就是多类别分类问题。

新数据集的注意事项

  • 行数、列数
  • 类别变量的数目,类别的取值范围
  • 缺失的值
  • 属性和标签的统计特性

使用 Python 的时候会用到的一些类库

这些库都可以通过 pip 安装

  • numpy
  • pylab 包含了 matplotlib,可以用来方便地绘图
  • scipy 开源的 Python 算法和数学工具包
  • pandas 数据处理常用的库,处理表格很方便,快速了解一下可以看这里
  • sklearn 一些常用的学习算法

通过数据可视化了解数据

平行坐标图

    dataset = pandas.read_csv(...)
    for i in range(200):
        # 获取指定位置的数据
        dataRow = dataset.iloc[i, 0:60]
        # 直接使用 plot 方法即可绘制平行坐标图
        dataRow.plot(color=red)
        # 绘制
        matplotlib.pyplot.show()

可以参照 这里的代码

交会图

    # 绘制交会图
    matplotlib.pyplot.scater(dataRow1, dataRow2)
    matplotlib.pyplot.show()

可以参照 这里的代码

热图

    #绘制热图
    from pandas import DataFrame  # DataFrame 是一种 pandas 中描述表格的数据格式
    dataSet = pandas.read_csv(...)
    corMat = DataFrame(dataSet.corr())    # pandas 可以直接计算相关性矩阵
    matplotlib.pyplot.pcolor(corMat)
    atplotlib.pyplot.show()

可以参照 这里的代码

箱线图

    import pylab
    pylab.boxplot(dataSet)
    pylab.show()

可以参照 这里的代码

数据归一化

最普遍的方法是,将数据都变成均值为 0,标准差为 1 即对每一项执行 item = (item - mean) / std

可以参照 这个文件中 28 行处对数据的归一化

分对数函数归一

x = 1 / (1 + exp(-x)) 可以将很大的负数映射成 0,很大的正数映射成 1,0 映射成 0.5

可以参照 这个文件中 32 行处对数据的归一化