在使用sklean處理一個機器學習實例時,可能會通過數據縮放、特徵合併以及模型學習擬合等過程;而且,當問題更爲複雜時,所應用到的算法以及模型則較爲繁雜。算法
與此同時,通過實踐發現,在忽略一些細節的前提下,能夠經過將這些數據處理步驟結合成一條算法鏈,以更加高效地完成整個機器學習流程;由此,管道(pipeline)概念與機制應運而生。機器學習
所謂管道,即由一系列數據轉換步驟或待擬合模型(若是有,則模型必須處於管道末端)構成的加工鏈條。
下面以實例釋之:學習
可能有同窗指出,管道只是能簡化代碼,但也不是缺其不可。實際上,管道的做用不只在於簡化代碼,更在於一些關鍵的數據轉換步驟須要管道機制加持,好比交叉驗證。測試
看下圖,是使用傳統處理流程進行交叉驗證的圖示;
能夠看到,在圖的上半部分表示交叉驗證區域中,進行數據縮放處理時,同時用到了訓練數據與驗證數據,可是這是不符合要求的;
即便是驗證數據的縮放,也要使用經訓練數據擬合事後的MinMaxScaler(),而驗證數據自己不該該參與到MinMaxScaler()擬閤中,這樣會泄露驗證數據包含的信息,從而致使驗證結果偏離實際。
blog
因此,符合要求的交叉驗證圖示應相似於下圖
ip
若是要手動實現上述劃分是異常麻煩的,由於須要人工干預每一次的交叉驗證操做;但若是用到pipeline,則實現的代碼很是簡潔,只不過把網格搜索的估計器置換成構建的管道(pipe),部分關鍵代碼以下圖:
it