sklearn 中的 pipeline 機制
from sklearn.pipeline import pipeline
管道機制實現了對全部步驟的流式化封裝和管理(streaming workflows with pipelines)。
注意:管道機制更像是程式設計技巧的創新,而非演算法的創新。
接下來我們以乙個具體的例子來演示sklearn庫中強大的pipeline用法:
1 載入資料集
import pandas as pd
from sklearn.cross_validation import train_test_split
from sklearn.preprocessing import labelencoder
df = pd.read_csv(''
'breast-cancer-wisconsin/wdbc.data', header=none)
x, y = df.values[:, 2:], df.values[:, 1]
# y為字元型標籤
# 使用labelencoder類將其轉換為0開始的數值型
encoder = labelencoder()
y = encoder.fit_transform(y)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=.2, random_state=0)
2. 構思演算法的流程
可放在pipeline中的步驟可能有:
特徵標準化是需要的,可作為第乙個環節
既然是分類器,classifier也是少不了的,自然是最後乙個環節
中間可加上比如資料降維(pca)
……from sklearn.preprocessing import standardscaler
from sklearn.decomposition import pca
from sklearn.linear_model import logisticregression
from sklearn.pipeline import pipeline
pipe_lr = pipeline([('sc', standardscaler()),
('pca', pca(n_components=2)),
('clf', logisticregression(random_state=1))
])pipe_lr.fit(x_train, y_train)
print('test accuracy: %.3f' % pipe_lr.score(x_test, y_test))
pipeline物件接受二元tuple構成的list
3. pipeline執行流程的分析
流水線的輸入為一連串的資料探勘步驟,其中最後一步必須是估計器(estimator),可理解成分類器前幾步是轉換器(transformer)。輸入的資料集經過轉換器的處理後,輸出的結果作為下一步的輸入。最後,用位於流水線最後一步的估計器對資料進行分類。
當我們執行 pipe_lr.fit(x_train, y_train)時,首先由standardscaler在訓練集上執行 fit和transform方法,transformed後的資料又被傳遞給pipeline物件的下一步,也即pca()。和standardscaler一樣,pca也是執行fit和transform方法,最終將轉換後的資料傳遞給 losigsticregression。
下面再舉乙個例子:
sklean提供的pipeline來將多個學習器組成流水線,通常流水線的形式為:
將資料標準化的學習器---特徵提取的學習器---執行**的學習器
除了最後乙個學習器之外,前面的所有學習器必須提供transform方法,該方法用於資料轉化(例如:歸一化,正則化,以及特徵提取)
from sklearn.datasets import load_digits
from sklearn import cross_validation
from sklearn.svm import linearsvc
from sklearn.linear_model import logisticregression
from sklearn.pipeline import pipeline
def test_pipeline(data):
x_train,x_test,y_train,y_test=data
steps=[('linear_svm',linearsvc(c=1,penalty='l1',dual=false)),
('logisticregression',logisticregression(c=1))]
pipeline=pipeline(steps)
pipeline.fit(x_train,y_train)
print('name steps:',pipeline.named_steps)
print('pipeline score:',pipeline.score(x_test,y_test))
if __name__=='__main__':
data=load_digits()
x=data.data
y=data.target
test_pipeline(cross_validation.train_test_split(x,y,test_size=0.25,
random_state=0,stratify=y))
from sklearn.datasets import load_digits
from sklearn import cross_validation
from sklearn.linear_model import logisticregression
from sklearn.pipeline import pipeline
from sklearn.decomposition import pca
'''工作流程:先進行pca降為,然後使用logistic回歸,來分類
'''def test_pipeline(data):
x_train,x_test,y_train,y_test=data
steps=[('pca',pca()),
('logisticregression',logisticregression(c=1))]
pipeline=pipeline(steps)
pipeline.fit(x_train,y_train)
print('name steps:',pipeline.named_steps)
print('pipeline score:',pipeline.score(x_test,y_test))
if __name__=='__main__':
data=load_digits()
x=data.data
y=data.target
test_pipeline(cross_validation.train_test_split(x,y,test_size=0.25,
random_state=0,stratify=y))
sklearn 中的 Pipeline 機制
管道機制在機器學習 演算法中得以應用的根源在於,引數集在新資料集 比如測試集 上的重複使用。管道機制實現了對全部步驟的流式化封裝和管理 streaming workflows with pipelines 注意 管道機制更像是程式設計技巧的創新,而非演算法的創新。接下來我們以乙個具體的例子來演示sk...
sklearn 中的 Pipeline 機制
from sklearn.pipeline import pipelinefrom pandas as pd from sklearn.cross validation import train test split from sklearn.preprocessing import labelen...
sklearn中的Lasso函式
lasso alpha 1.0,fit intercept true,normalize false,precompute false,copy x true,max iter 1000,tol 1e 4,warm start false,positive false,random state no...