模型評估和超引數調整(一)——管道機制(pipeline)
阿新 • • 發佈:2019-01-03
讀《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資料集
2、【將30個特徵放入陣列儲存,將標籤M,B 轉化為數值型】# 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()
# 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.
具體流程圖如下: