這是Regression-房價預測的第(3)篇筆記戴质。介紹outline里的:
- Data preparation-Train/Test split
- Define performance metric
- Analyze model performance-Bias&Variance
3. Data preparation-Train/Test split
假設我們一開始拿到一個X,y都有的數(shù)據集'data'。為了在用模型預測沒有y值的數(shù)據集'final_test'(不含y)之前檢測模型準確度,我們需要把data分為兩個部分:Train(X,y), Test(X,y)。這樣經過Train訓練過的模型,先用來根據Test(X)預測一個Test_predict_y棚辽。這個Test_predict_y跟原有的Test_y做比較锄俄,得出模型準確度局劲。這個將數(shù)據集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之外的數(shù)據歸納的不夠好蜡励。相對而言令花,第一行的max_depth=1就是欠擬合的情況(high bias/underfit)×挂校可以看到隨著training points增加兼都,training score和testing score都保持低位。