Python机器学习项目模版
1. 准备
a) 导入类库
b) 导入数据集
2. 概述数据
a) 描述性统计
b) 数据可视化
3. 预处理数据
a) 数据清洗
b) 特征选择
c) 数据转换
4. 评估算法
a) 分离数据集
b) 评估选项和评估矩阵
c) 算法审查
d) 算法比较
5. 提高模型准确度
a) 算法调参
b) 集成算法
6. 序列化模型
a) 预测评估数据集
b) 利用整个数据集生产模型
c) 序列化模型
1. 问题定义
在这个项目中将会分析研究波士顿房价(Boston House Price)数据集。在这个数据集的每一行数据都是对波士顿周边或者城镇的房价的描述。数据是1978年统计手机的。数据中包含如下14和特征,506条数据(UCI机器学习仓库中的定义):
- CRIM:城镇人均犯罪率
- ZN:住宅地所占比例
- INDUS:城镇中非住宅用地所占比例
- CHAS:查尔斯河虚拟变量,用于回归分析
- NOX:环保指数
- RM:每栋住宅的房间数
- AGE:1940年以前建成的自住单位的比例
- DIS:距离5个波士顿的就业中心的加权距离
- RAD:距离高速公路的便利指数
- TAX:每一万美元的不动产税率
- PTRATIO:城镇中教师学生比例
- B:城镇中黑人比例
- LSTAT:地区中有多少房东属于低收入人群
- MEDV:自住房屋价中位数
通过这些特质属性的描述,我们可以发现输入的特质属性的度量单位是不统一的。
数据集地址:https://archive.ics.uci.edu/ml/machine-learning-databases/housing/
2. 导入数据
# 导入类库
import pandas as pd
import numpy as np
import matplotlib as mpl
from numpy import arange
import matplotlib.pyplot as plt
from pandas import set_option
from pandas.plotting import scatter_matrix
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import GridSearchCV
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import Lasso
from sklearn.linear_model import ElasticNet
from sklearn.tree import DecisionTreeRegressor
from sklearn.neighbors import KNeighborsRegressor
from sklearn.svm import SVR
from sklearn.pipeline import Pipeline
from sklearn.ensemble import RandomForestRegressor
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.ensemble import ExtraTreesRegressor
from sklearn.ensemble import AdaBoostRegressor
from sklearn.metrics import mean_squared_error
import warnings
warnings.filterwarnings('ignore')
接下来我们将数据集导入到Python中。
# 导入数据
filename = 'housing.csv'
names = ['CRIM','ZN','INDUS','CHAS','NOX','RM','AGE','DIS','RAD','TAX','PRTATIO','B','LSTAT','MEDV']
dataset = pd.read_csv(filename,names= names, delim_whitespace=True)
这里对每个特质属性设定了一个名字,方便后面程序中使用它们,因在CSV文件是通过空格键来做分隔符,因此在这里读入CSV文件时,指定分隔符为空格键(delim_whitespace = True)。
3. 分析数据
现在需要对导入的数据进行分析,以便能够构建合适的模型。
3.1 描述性统计
首先看一下数据的维度,例如数据集中有多少条记录,有多少个数据特征
# 数据维度
print(dataset.shape)
执行之后我们可以看到总共有506条记录和14个特征属性,这与我们在UCI上得到的信息一致。
接下来看一下各个特征属性的字段类型
# 特征属性的字段类型
print(dataset.dtypes)