这是Regression-房价预测的第(3)篇笔记。介绍outline里的:
- Data preparation-Train/Test split
- Define performance metric
- Analyze model performance-Bias&Variance
3. Data preparation-Train/Test split
假设我们一开始拿到一个X,y都有的数据集'data'。为了在用模型预测没有y值的数据集'final_test'(不含y)之前检测模型准确度,我们需要把data分为两个部分:Train(X,y), Test(X,y)。这样经过Train训练过的模型,先用来根据Test(X)预测一个Test_predict_y。这个Test_predict_y跟原有的Test_y做比较,得出模型准确度。这个将数据集data分离成Train和Test的过程称为train_test_split。
import numpy as np
from sklearn.cross_validation import train_test_split
# fix random seed to reproduce results
seed = np.random.seed(29)
X_train, X_test, y_train, y_test = train_test_split(features, prices, test_size=0.2, random_state=seed)
4. Define performance metric
在这个案例中,我们可以用coefficient of determination, R2来量化模型预测准确度。
from sklearn.metrics import r2_score
score = r2_score(Test_y, Test_predict_y)
5. Analyze model performance-Bias&Variance
对于任意一个机器学习模型,我们都很关系在训练过程中bias/vairance程度如何。我们可以通过查看training/testing score来衡量bias/vairance的程度。以下图为例,第二行的两个图max_depth=6和max_depth=10就是过拟合(high variance/overfit)的情况。因为这里很明显,随着training points增加,training score很高,而testing score一直没有提升。这说明模型对于除training set之外的数据归纳的不够好。相对而言,第一行的max_depth=1就是欠拟合的情况(high bias/underfit)。可以看到随着training points增加,training score和testing score都保持低位。