Scikit-learn 介绍
Scikit-learn 是开源的 Python 库,通过统一的界面实现机器学习、预处理、交叉验证及可视化算法。
scikit-learn 网站:https://scikit-learn.org
Python 中的机器学习
- 简单有效的数据挖掘和数据分析工具
- 可供所有人访问,并可在各种环境中重复使用
- 基于 NumPy,SciPy 和 matplotlib 构建
- 开源,商业上可用 - BSD 许可证
分类
确定对象属于哪个类别。
应用:垃圾邮件检测,图像识别。
算法: SVM,最近邻居,随机森林,……
回归
预测与对象关联的连续值属性。
应用:药物反应,股票价格。
算法: SVR,岭回归,套索,……
聚类
将类似对象自动分组到集合中。
应用:客户细分,分组实验结果
算法: k-Means,谱聚类,均值漂移,……
降维
减少要考虑的随机变量的数量。
应用:可视化,提高效率
算法: PCA,特征选择,非负矩阵分解。
模型选择
比较,验证和选择参数和模型。
目标:通过参数调整提高准确性
模块: 网格搜索,交叉验证,指标。
预处理
特征提取和规范化。
应用程序:转换输入数据(如文本)以与机器学习算法一起使用。
模块: 预处理,特征提取。
Scikit-learn 机器学习步骤
1 | # 导入 sklearn |
导入常用库
1 | import numpy as np |
加载数据
Scikit-learn 处理的数据是存储为 NumPy 数组或 SciPy 稀疏矩阵的数字,还支持 Pandas 数据框等可转换为数字数组的其它数据类型。
1 | X = np.random.random((11, 5)) |
划分训练集与测试集
1 | from sklearn.model_selection import train_test_split |
数据预处理
标准化
1 | from sklearn.preprocessing import StandardScaler |
归一化
1 | from sklearn.preprocessing import Normalizer |
二值化
1 | from sklearn.preprocessing import Binarizer |
编码分类特征
1 | from sklearn.preprocessing import LabelEncoder |
输入缺失值
1 | from sklearn.preprocessing import Imputer |
生成多项式特征
1 | from sklearn.preprocessing import PolynomialFeatures |
创建模型估计器
监督学习
1 | # 线性回归 |
无监督学习
1 | # 主成分分析(PCA) |
拟合数据
监督学习
1 | lr.fit(X, y) |
无监督学习
1 | k_means.fit(X_train) |
预测
监督学习
1 | # 预测标签 |
无监督学习
1 | y_pred = k_means.predict(X_test) |
评估模型性能
分类指标
1 | # 准确率 |
回归指标
1 | # 平均绝对误差 |
群集指标
1 | # 调整兰德系数 |
交叉验证
1 | from sklearn.cross_validation import cross_val_score |
模型调整
网格搜索
1 | from sklearn.grid search import GridSearchcV |
随机参数优化
1 | from sklearn.grid_search import RandomizedSearchCV |