亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

pipeline處理機制是什么

發布時間:2021-12-27 15:10:04 來源:億速云 閱讀:347 作者:iii 欄目:大數據

本篇內容主要講解“pipeline處理機制是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“pipeline處理機制是什么”吧!

why Pipeline?

你有沒有遇到過這種情況:在機器學習項目中,對訓練集的各種數據預處理操作,比如:特征提取、標準化、主成分分析等,在測試集上要重復使用這些參數。

為了避免重復操作,這里就要用到機器學習中的pipeline機制

按照sklearn官網的解釋 pipeline 有以下妙用:

1、便捷性和封裝性:直接調用fit和predict方法來對pipeline中的所有算法模型進行訓練和預測。 

2、聯合的參數選擇:你可以一次grid search管道中所有評估器的參數。 

3、安全性:訓練轉換器和預測器使用的是相同樣本,管道有助于防止來自測試數據的統計數據泄露到交叉驗證的訓練模型中。

Pipeline的原理

pipeline可以將許多算法模型串聯起來,形成一個典型的機器學習問題工作流。

pipeline處理機制是什么  

Pipeline處理機制就像是把所有模型塞到一個管子里,然后依次對數據進行處理,得到最終的分類結果,

例如模型1可以是一個數據標準化處理,模型2可以是特征選擇模型或者特征提取模型,模型3可以是一個分類器或者預測模型(模型不一定非要三個,根據自己實際需要)。

Pipleline中最后一個之外的所有評估器都必須是變換器,最后一個評估器可以是任意類型(transformer,classifier,regresser),若最后一個評估器是分類器,則整個pipeline就可以作為分類器使用,如果最后一個estimator是個回歸器,則整個pipeline就可以作為回歸器使用。

注:

Estimator:估計器,所有的機器學習算法模型,都被稱為估計器。

Transformer:轉換器,比如標準化。轉換器的輸出可以放入另一個轉換器或估計器中作為輸入。

一個完整的Pipeline步驟舉例:

1.首先對數據進行預處理,比如缺失值的處理

2.數據的標準化

3.降維

4.特征選擇算法

5.分類或者預測或者聚類算法(估計器,estimator)

pipeline處理機制是什么  

實際上,調用pipeline的fit方法,是用前n-1個變換器處理特征,之后傳遞給最后的estimator訓練。pipeline繼承最后一個estimator的所有方法。 

Pipeline的用法

調用方法:

sklearn.pipeline.Pipeline(steps, memory=None, verbose=False)
 

參數詳解:

steps : 步驟:使用(key, value)列表來構建,其中 key 是你給這個步驟起的名字, value 是一個評估器對象。

memory:內存參數,默認None

Pipeline的function

Pipline的方法都是執行各個學習器中對應的方法,如果該學習器沒有該方法,會報錯。假設該Pipline共有n個學習器:

transform:依次執行各個學習器的transform方法

fit:依次對前n-1個學習器執行fit和transform方法,第n個學習器(最后一個學習器)執行fit方法

predict:執行第n個學習器的predict方法

score:執行第n個學習器的score方法

set_params:設置第n個學習器的參數

get_param:獲取第n個學習器的參數 

Pipeline妙用:模塊化Feature Transform

以鳶尾花數據集分類任務為例

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
iris=load_iris()
pipe=Pipeline([('sc', StandardScaler()),('pca',PCA()),('svc',SVC())])
#('sc', StandardScaler()) sc為自定義轉換器名稱,StandardScaler()為執行標準化任務的轉換器
pipe.fit(iris.data,iris.target)
 

先用 StandardScaler 對數據集每一列做標準化處理(transformer)

再用 PCA 主成分分析進行特征降維(transformer)

最后再用 SVC 模型(Estimator)

輸出結果:

Pipeline(memory=None,
         steps=[('sc',
                 StandardScaler(copy=True, with_mean=True, with_std=True)),
                ('pca',
                 PCA(copy=True, iterated_power='auto', n_components=None,
                     random_state=None, svd_solver='auto', tol=0.0,
                     whiten=False)),
                ('svc',
                 SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
                     decision_function_shape='ovr', degree=3,
                     gamma='auto_deprecated', kernel='rbf', max_iter=-1,
                     probability=False, random_state=None, shrinking=True,
                     tol=0.001, verbose=False))],
         verbose=False)
 

訓練得到的是一個模型,可直接用來預測,預測時,數據會從step1開始進行轉換,避免了模型用來預測的數據還要額外寫代碼實現。還可通過pipe.score(X,Y)得到這個模型在X訓練集上的正確率。

array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
       2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
       2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])
  

Pipeline妙用:自動化 Grid Search

Pipeline可以結合GridSearch來對參數進行選擇:

from sklearn.datasets import fetch_20newsgroups
import numpy as np
news = fetch_20newsgroups(subset='all')
from sklearn.cross_validation import train_test_split
X_train,X_test,y_train,y_test = train_test_split(news.data[:3000],news.target[:3000],test_size=0.25,random_state=33)
from sklearn.feature_extraction.text import TfidfVectorizer
vec = TfidfVectorizer()
X_count_train = vec.fit_transform(X_train)
X_count_test = vec.transform(X_test)
from sklearn.svm import SVC
from sklearn.pipeline import Pipeline
#使用pipeline簡化系統搭建流程,將文本抽取與分類器模型串聯起來
clf = Pipeline([
    ('vect',TfidfVectorizer(stop_words='english')),('svc',SVC())
])
# 注意,這里經pipeline進行特征處理、SVC模型訓練之后,得到的直接就是訓練好的分類器clf
 
parameters = {
    'svc__gamma':np.logspace(-2,1,4),
    'svc__C':np.logspace(-1,1,3),
    'vect__analyzer':['word']
}
 
#n_jobs=-1代表使用計算機的全部CPU
from sklearn.grid_search import GridSearchCV
gs = GridSearchCV(clf,parameters,verbose=2,refit=True,cv=3,n_jobs=-1)
 
gs.fit(X_train,y_train)
print (gs.best_params_,gs.best_score_)
print (gs.score(X_test,y_test))
 

輸出

{'svc__C': 10.0, 'svc__gamma': 0.1, 'vect__analyzer': 'word'} 0.7906666666666666
0.8226666666666667
   

Pipeline其他用法

Pipeline 還有一些其他用法,這里只簡單介紹最最常用的兩個make_pipeline

pipeline.make_pipeline(\*steps, \*\*kwargs)
 

make_pipeline函數是Pipeline類的簡單實現,只需傳入每個step的類實例即可,不需自己命名,自動將類的小寫設為該step的名。

make_pipeline(StandardScaler(),GaussianNB())
 

輸出

Pipeline(steps=[('standardscaler', StandardScaler(copy=True, with_mean=
True, with_std=True)), ('gaussiannb', GaussianNB(priors=None))])
p=make_pipeline(StandardScaler(),GaussianNB())
p.steps
 

輸出

[('standardscaler', StandardScaler(copy=True, with_mean=True, with_std=True)),
 ('gaussiannb', GaussianNB(priors=None))]
 

FeatureUnion

pipeline.FeatureUnion(transformer_list[, …])
 

FeatureUnion,同樣通過(key,value)對來設置,通過set_params設置參數。不同的是,每一個step分開計算,FeatureUnion最后將它們計算得到的結果合并到一塊,返回的是一個數組,不具備最后一個estimator的方法。有些數據需要標準化,或者取對數,或onehot編碼最后形成多個特征項,再選擇重要特征,這時候FeatureUnion非常管用。

from sklearn.pipeline import FeatureUnion
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import FunctionTransformer
from numpy import log1p

step1=('Standar',StandardScaler())
step2=('ToLog',FunctionTransformer(log1p))
steps=FeatureUnion(transformer_list=[step1,step2])
 
steps.fit_transform(iris.data)
data=steps.fit_transform(iris.data)

到此,相信大家對“pipeline處理機制是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

江西省| 兴山县| 白朗县| 五寨县| 抚州市| 延寿县| 霍林郭勒市| 德州市| 松原市| 彰化县| 若尔盖县| 定远县| 海晏县| 宁海县| 筠连县| 龙游县| 宜昌市| 西昌市| 瓮安县| 万源市| 巴里| 平阴县| 邵东县| 水富县| 都兰县| 万源市| 潍坊市| 扶余县| 宁国市| 庆元县| 共和县| 得荣县| 福清市| 牟定县| 梁山县| 古交市| 石阡县| 临漳县| 衡东县| 景泰县| 潍坊市|