1. 程式人生 > 程式設計 >python中sklearn的pipeline模組例項詳解

python中sklearn的pipeline模組例項詳解

最近在看《深度學習:基於Keras的Python實踐(魏貞原)》這本書,書中8.3建立了一個Scikit-Learn的Pipeline,首先標準化資料集,然後建立和評估基線神經網路模型,程式碼如下:

# 資料正態化,改進演算法
steps = []
steps.append(('standardize',StandardScaler()))
steps.append(('mlp',model))
pipeline = Pipeline(steps)
kfold = KFold(n_splits=10,shuffle=True,random_state=seed)
results = cross_val_score(pipeline,x,Y,cv=kfold)
print('Standardize: %.2f (%.2f) MSE' % (results.mean(),results.std()))

而PipeLine是什麼來的呢?

Pipelines and composite estimators(官方文件)

轉換器通常與分類器,迴歸器或其他估計器組合在一起,以構建複合估計器。最常用的工具是Pipeline。Pipeline通常與FeatureUnion結合使用,FeatureUnion將轉換器的輸出連線到一個複合特徵空間中。 TransformedTargetRegressor處理轉換目標(即對數變換y)。相反,Pipelines僅轉換觀察到的資料(X)。

Pipeline可用於將多個估計器連結為一個。這很有用,因為在處理資料時通常會有固定的步驟順序,例如特徵選擇,歸一化和分類。Pipeline在這裡有多種用途:

  • 方便和封裝:只需呼叫一次fit並在資料上進行一次predict即可擬合整個估計器序列。
  • 聯合引數選擇:可以一次對Pipeline中所有估計器的引數進行網格搜尋(grid search )。
  • 安全性:通過確保使用相同的樣本來訓練轉換器和預測器,Pipeline有助於避免在交叉驗證中將測試資料的統計資訊洩漏到經過訓練的模型中。

Pipeline是使用 (key,value) 對的列表構建的,其中key是包含要提供此步驟名稱的字串,而value是一個估計器物件:

from sklearn.pipeline import Pipeline
from sklearn.svm import SVC
from sklearn.decomposition import PCA
estimators = [('reduce_dim',PCA()),('clf',SVC())]
pipe = Pipeline(estimators)
pipe

output:

在這裡插入圖片描述

函式make_pipeline是構建pipelines的簡寫;它接受不同數量的估計器,並返回一個pipeline。它不需要也不允許命名估計器。而是將其名稱自動設定為其型別的小寫字母:

from sklearn.pipeline import make_pipeline
from sklearn.naive_bayes import MultinomialNB
from sklearn.preprocessing import Binarizer
make_pipeline(Binarizer(),MultinomialNB())

output:

在這裡插入圖片描述

總結

到此這篇關於python中sklearn的pipeline模組的文章就介紹到這了,更多相關python pipeline模組內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!