模型评估与验证
当我们的机器学习模型建立好之后,如何训练数据以获得最优的模型参数,又用什么指标来评价模型的优劣呢?本文以波士顿房价为例,说明如何训练数据以及对模型做评估,辨别模型的优劣。
第一步:导入数据
将数据的Features和Values分开,以便后续步骤可以分开使用(训练时只使用Features,验证时二者都要使用)。数据集来自[UCI机器学习知识库]。
import pandas as pd
import numpy as np
import visuals as vs
data = pd.read_csv('housing.csv')
features = data.drop('MEDV',axis=1)
prices = data['MEDV']
print data.head()
下面是运行结果
RM LSTAT PTRATIO MEDV
0 6.575 4.98 15.3 504000.0
1 6.421 9.14 17.8 453600.0
2 7.185 4.03 17.8 728700.0
3 6.998 2.94 18.7 701400.0
4 7.147 5.33 18.7 760200.0
数据解释如下:
RM表示该地区中每个房屋的平均房间数量;
LTSAT表示有多少百分比的业主属于低收入阶层;
PARATIO表示该地区的中学和小学里,学生和老师的数目比(学生/老师);
MEDV表示当地的房价。
其中RM,LTSAT,PARATIO三个是Features,MEDV是我们需要预测的Values。
第二步:分析数据
特征观察,观察数据,分析每个变量与预测值之间的关系(正相关,负相关);
将数据分割为训练集(train set)和验证集(validation set),使用以下方法:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(features, prices, test_size=0.2,random_state=1)
print X_train.head()
下面是运行结果
RM LSTAT PTRATIO
307 6.382 10.36 18.4
58 6.145 6.86 19.7
424 6.406 19.52 20.2
78 6.232 12.34 18.7
439 5.976 19.01 20.2
下面来解释train_test_split()中的用到的参