如果想要快速的搭建机器学习的模型,scikit - learn 是最好的工具之一,他提供的 packages 能够快速帮助我们使用 Python 搭建起一个机器学习模型,在这里我们就用一个 cheatsheet 来快速展示一个用机器学习 Pipeline。
一个基础的 机器学习Pipeline 主要包含了下述 5 个步骤:
- 数据读取
- 数据预处理
- 创建模型
- 评估模型结果
- 模型调参
那我们接下去就根据 Pipeline 里面的 5 个步骤,来分别结合 scikit-learn 进行说明。
1. 数据读取,拆分训练集、测试集
数据读取之后,通常可以存储在 NumPy 数组或 SciPy 矩阵或者 Pandas DataFrame 中。我们一般推荐 Pandas 的处理方法,其后也会介绍 Pandas 库中的缺失值处理。
- NumPy
>>> import numpy as np
>>> X = np.random.random((10,5))
>>> y = np.array(['M','M','F','F','M','F','M','M','F','F','F'])
>>> X[X < 0.7] = 0
- Pandas
>>> import pandas as pd
>>> data = pd.read_csv('data.csv')
>>> X = data[['a',''b]]
>>> y = data['c']
加载数据后,您的下一个任务就是将数据集:
- 拆分训练数据和测试数据
当然你也可能听说过训练集、验证集、测试集,他们的关系是训练集(可在训练时拆分成训练集、验证集)、测试集。所以在此处单独划分出测试集,没有任何的问题。
>>> from sklearn.model_selection import train_test_split
>>> X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
注解一下 random_state,这是计算机内部的一个随机函数,通过这个参数设置可以确保每次拆分的测试集是一样的,方便在后续测试不同模型性能时进行控制变量。
2. 数据预处理
- 数据标准化
数据标准化是数据预处理步骤之一,用于重新调整一个或多个属性,使属性的平均值为0,标准差为1。标准化会让数据符合高斯(钟形曲线)分布。
>>> from sklearn.preprocessing import StandardScaler
>>> scaler = StandardScaler().fit(X_train)
>>> standardized_X = scale