1. 程式人生 > >模型評估和超引數調整(一)——管道機制(pipeline)

模型評估和超引數調整(一)——管道機制(pipeline)

讀《python machine learning》chapt 6 

Learning Best Practices for Model Evaluation and Hyperparameter Tuning

【主要內容】

(1)獲得對模型評估的無偏估計

(2)診斷機器學習演算法的常見問題

(3)調整機器學習模型

(4)使用不同的效能指標對評估預測模型

【Streamlining workflows with pipeline】

【使用管道機制簡化工作流程】

1、【載入資料集】

使用 Breast Cancer Wisconsin dataset資料集

# import dataset
import pandas as pd
df = pd.read_csv("G:\Machine Learning\python machine learning\python machine learning code\code\ch06\wdbc.data",header = None)
'''
column 0,1——ID 和病症(Malignant or benign
column 2-31 特徵集 用於診斷病症
'''
df.head()
2、【將30個特徵放入陣列儲存,將標籤M,B 轉化為數值型】
# assign 30 features into numpy array 
# transform "M" and "B" into integers using LabelEncoder
from sklearn.preprocessing import LabelEncoder
X = df.loc[:,2:].values # X includes all features
y = df.loc[:,1].values  # y is the result of prediction
#transform M and B into integers
le = LabelEncoder()
y = le.fit_transform(y) #此時y的值為0,1
le.classes_

檢視轉換對映結果


即M為,B為0

3、【切分資料為訓練集和測試集】

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split( X, y ,
                                                    test_size = 0.2, 
                                                    stratify = y, 
                                                    random_state = 0)

4、【Combining transformers and estimators in a pipeline】

【將轉換器和評估器結合到一個管道中】

管到機制(轉換器,評估器)

pipeline接受任意個數的轉換器(transformer),這些轉換器必須包含fit 和 transform 函式;最後的引數必須是一個評估器(estimator),包含fit和predict函式。

from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.decomposition import PCA
from sklearn.pipeline import make_pipeline

pipe_lr = make_pipeline(StandardScaler(),
                        PCA(n_components = 2),
                        LogisticRegression(random_state = 1))
pipe_lr.fit(X_train,y_train)
pipe_lr.predict(X_test)
print('Test Accuracy: %.3f' % pipe_lr.score(X_test, y_test))

執行pipe_lr.fit(  )函式時

(1)先執行StandardScaler()的fit 和 transform 函式,將執行後的結果傳遞給下一個引數,即PCA

(2)上一步的資料繼續執行PCA的fit 和 transform 函式,生成結果傳遞給下一步,即LR

(3)最後執行LogisticRegression.

具體流程圖如下: