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 Pipelinefrom sklearn.svm import SVCfrom sklearn.decomposition import PCAestimators = [(’reduce_dim’, PCA()), (’clf’, SVC())]pipe = Pipeline(estimators)pipe
output:
函數make_pipeline是構建pipelines的簡寫;它接受不同數量的估計器,并返回一個pipeline。它不需要也不允許命名估計器。而是將其名稱自動設置為其類型的小寫字母:
from sklearn.pipeline import make_pipelinefrom sklearn.naive_bayes import MultinomialNBfrom sklearn.preprocessing import Binarizermake_pipeline(Binarizer(), MultinomialNB())
output:
總結
到此這篇關于python中sklearn的pipeline模塊的文章就介紹到這了,更多相關python pipeline模塊內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!
相關文章: