scikit-learn机器学习第2版, [美] 加文·海克(Gavin Hackeling) 著,张浩然 译
出版社: 人民邮电出版社
ISBN:9787115503404
版次:2, 出版时间:2019-02
scikit-learn 是一个机器学习算法库.
第 1章 机器学习基础
1.1 定义机器学习
机器学习是从数据中学习, 归纳规则.
1.2 从经验中学习
机器学习的分类:
- 监督学习: 从标记的输入输出的例子中学习
- 强化学习靠近监督学习一侧.
- 无监督学习: 从数据中发现模式
变量的分类:
- 输出: 响应变量
- 输入: 特征变量,解释变量
实例集合的分类:
- 训练集:组成监督学习经验的集合
- 测试集:衡量程序性能的实例的集合
1.3 机器学习任务
两种最常见的监督学习任务:
- 分类:根据一个或多个特征预测一个或多个响应变量的离散值:预测最可能的分类,类别或标签
- 回归:根据一个或多个特征预测一个或多个连续型响应变量的值
两种常见的无监督学习任务:
- 聚类. 聚类常用于探索数据集, 比如为一个产品发现不同的客户群体.使用不同的特征可以实现不同维度的聚类.
- 降维.用途:
- 1.发现对响应变量影响最大的特征集合
- 2.方便可视化
1.4 训练数据、测试数据和验证数据
三个集合:
- 1.训练集:(50% ~ 75%)
- 2.测试集用于评估模型的性能和泛化能力. (10%~ 25%)
- 泛化能力指的是模型能很好的处理新的数据.
- 对训练集产生记忆称为过拟合.
- 训练集不能包含测试集样本,否则会影响模型的泛化能力.
- 在泛化能力和记忆能力之间寻求平衡是很多机器学习算法面临的问题.
- 可以在很多模型中使用正则化来减少过拟合.
- 验证集(保留集):用来微调被称为超参数的变量, 超参数用来控制如何从训练数据中学习.
交叉验证技巧:模型可以在全部数据上训练和评估, 能够为模型提供更准确的性能评估.
1.5 偏差和方差
预测误差的两个根本原因: 模型的偏差和模型的方差
- 模型的偏差:真实的关系和模型描述的关系之间的差别
- 模型的方差:依赖于训练集的误差.
偏差方差权衡: 理想的模型应该具有低偏差低方差, 现实中往往减小一个会增大另一个.
无监督学习问题没有一个误差指标用于衡量模型.
机器学习系统应该使用能够代表产生错误的代价的性能指标来评估. 准确率Accuracy:
$$ACC=\frac{TP+TN}{TP+TN+FP+FN}$$
精确率为:被预测为恶性肿瘤,确实也为恶性肿瘤的比例:
$$P=\frac{TP}{TP+FP}$$
召回率为:识别出的恶性肿瘤的比例
$$R=\frac{TP}{TP+FN}$$
这个任务中,准确率和精确率不是最重要的, 召回率才是最重要的.
衡量分类器的性能的指标需要根据分类的目的设定.
1.6 scikit-learn简介
sklearn 提供的算法:
- 分类
- 回归
- 降维
- 聚类
- 其他模块
- 数据预处理
- 特征提取
- 超参数优化
- 模型评估
sklearn基于 Numpy 和 Scipy构建:
- Numpy:大数组和矩阵
- Scipy:科学计算模块
1.7 安装scikit-learn
pip install scikit-learn
Collecting scikit-learn
Downloading scikit_learn-0.24.2-cp38-cp38-win_amd64.whl (6.9 MB)
|████████████████████████████████| 6.9 MB 6.4 MB/s
Collecting scipy>=0.19.1
Downloading scipy-1.6.3-cp38-cp38-win_amd64.whl (32.7 MB)
|████████████████████████████████| 32.7 MB 1.5 MB/s
Collecting joblib>=0.11
Downloading joblib-1.0.1-py3-none-any.whl (303 kB)
|████████████████████████████████| 303 kB 6.4 MB/s
Collecting threadpoolctl>=2.0.0
Downloading threadpoolctl-2.1.0-py3-none-any.whl (12 kB)
Requirement already satisfied: numpy>=1.13.3 in c:\python38_64\lib\site-packages (from scikit-learn) (1.20.1)
Installing collected packages: threadpoolctl, scipy, joblib, scikit-learn
Successfully installed joblib-1.0.1 scikit-learn-0.24.2 scipy-1.6.3 threadpoolctl-2.1.0
1.8 安装pandas、Pillow、NLTK和matplotlib
pandas 可以用来导入数据和计算一些描述性统计量.
Pillow支持图像处理.
NLTK(Natural Language Toolkit):处理自然语言的类库.
matplotlib是一个绘图库.
pip install pandas pillow nltk matplotlib
Requirement already satisfied: pandas in c:\python38_64\lib\site-packages (1.2.3)
Requirement already satisfied: pillow in c:\python38_64\lib\site-packages (8.1.2)
Collecting nltk
Downloading nltk-3.6.2-py3-none-any.whl (1.5 MB)
|████████████████████████████████| 1.5 MB 819 kB/s
Collecting matplotlib
Downloading matplotlib-3.4.2-cp38-cp38-win_amd64.whl (7.1 MB)
|████████████████████████████████| 7.1 MB 6.4 MB/s
Requirement already satisfied: numpy>=1.16.5 in c:\python38_64\lib\site-packages (from pandas) (1.20.1)
Requirement already satisfied: pytz>=2017.3 in c:\python38_64\lib\site-packages (from pandas) (2021.1)
Requirement already satisfied: python-dateutil>=2.7.3 in c:\python38_64\lib\site-packages (from pandas) (2.8.1)
Requirement already satisfied: six>=1.5 in c:\python38_64\lib\site-packages (from python-dateutil>=2.7.3->pandas) (1.15.0)
Collecting tqdm
Downloading tqdm-4.61.0-py2.py3-none-any.whl (75 kB)
|████████████████████████████████| 75 kB 2.1 MB/s
Requirement already satisfied: regex in c:\python38_64\lib\site-packages (from nltk) (2021.3.17)
Requirement already satisfied: joblib in c:\python38_64\lib\site-packages (from nltk) (1.0.1)
Requirement already satisfied: click in c:\python38_64\lib\site-packages (from nltk) (7.1.2)
Requirement already satisfied: pyparsing>=2.2.1 in c:\python38_64\lib\site-packages (from matplotlib) (2.4.7)
Collecting cycler>=0.10
Downloading cycler-0.10.0-py2.py3-none-any.whl (6.5 kB)
Collecting kiwisolver>=1.0.1
Downloading kiwisolver-1.3.1-cp38-cp38-win_amd64.whl (51 kB)
|████████████████████████████████| 51 kB ...
Installing collected packages: tqdm, kiwisolver, cycler, nltk, matplotlib
Successfully installed cycler-0.10.0 kiwisolver-1.3.1 matplotlib-3.4.2 nltk-3.6.2 tqdm-4.61.0
1.9 小结
无监督学习需要从没有标记的数据中发现结构.
© Licensed under CC BY-NC-SA 4.0退潮时, 便可知道谁在裸泳。——巴菲特