麻豆亚洲av熟女国产-精品国产亚洲av高清在线-天天干天天操美女麻豆-轻一点我要你搞我小穴视频-av免费在线观看日韩-久热伊人这里只有精品-亚洲中文字幕一区在线观看-制服人妻丝袜中文字幕在线-中野七绪隔壁的人妻中文字幕

lv

管道模型Pipeline《Python機器學(xué)習(xí)》之十九

發(fā)布時間 2018年09月16日 18:44    編輯:landyliao    來源:陸洪春曉

1.導(dǎo)入

前面有過這樣的比方,首要對數(shù)據(jù)進行縮放,然后手動兼并特征,再運用無監(jiān)督機器學(xué)習(xí)來學(xué)習(xí)特征。因而,大多數(shù)機器學(xué)習(xí)運用不只需求運用單個算法,而且還需求將許多不同的處理進程和機器學(xué)習(xí)模型鏈接在一起。接下來將介紹怎樣運用Pipeline 類來簡化構(gòu)建改換和模型鏈的進程,將要點介紹怎樣將Pipeline 和GridSearchCV 結(jié)合起來,然后一起查找一切處理進程中的參數(shù)。

舉一個比方來闡明模型鏈的重要性。咱們知道,能夠經(jīng)過運用MinMaxScaler 進行預(yù)處理來大大提高核SVM 在cancer 數(shù)據(jù)集上的功能。下面這些代碼完成了區(qū)分數(shù)據(jù)、核算最小值和最大值、縮放數(shù)據(jù)與練習(xí)SVM:

上面的代碼第11行,是在x_train數(shù)據(jù)中找到最大值、最小值,然后用它別離縮放練習(xí)集和測驗集,如第13、15行所示。這是所要求的正確的做法。

現(xiàn)看下面的比方:練習(xí)集和驗證集卻沒有遵從這個要求。

!!! 問題所在 : 穿插驗證的數(shù)據(jù)集是已經(jīng)在外面進行縮放處理的練習(xí)集,在穿插驗證內(nèi)部將其格外 練習(xí)集和驗證集如圖 6-1所示。

謹記一條準(zhǔn)則:先區(qū)分數(shù)據(jù)集,再進行縮放處理或其它預(yù)處理。

那么,在穿插驗證內(nèi)部,怎樣做到呢?

在scikit-learn 中,要想運用cross_val_score 函數(shù)和GridSearchCV 函數(shù)完成這一點,能夠運用Pipeline 類。Pipeline 類能夠?qū)⒍鄠€處理進程兼并(glue)為單個scikit-learn 估量器。Pipeline 類自身具有fit、predict 和score 辦法,其行為與scikit-learn 中的其他模型相同。Pipeline 類最常見的用例是將預(yù)處理進程(比方數(shù)據(jù)縮放)與一個監(jiān)督模型(比方分類器)鏈接在一起。2.構(gòu)建管道的辦法

咱們來看一下怎樣運用Pipeline 類來表明在運用MinMaxScaler 縮放數(shù)據(jù)之后再練習(xí)一個SVM 的作業(yè)流程(對應(yīng)本文最初的第一個比方)。首要,咱們構(gòu)建一個由進程列表組成的管道目標(biāo)。每個進程都是一個元組,其間包含一個稱號和一個估量器的實例。

這兒創(chuàng)立了兩個進程:第一個叫作"scaler",是MinMaxScaler 的實例;第二個叫作"svm",是SVC 的實例。現(xiàn)在來擬合這個管道,pipe.fit 首要對第一個進程(縮放器)調(diào)用fit,然后運用該縮放器對練習(xí)數(shù)據(jù)進行改換,最終用縮放后的數(shù)據(jù)來擬合SVM。要想在測驗數(shù)據(jù)上進行評價,咱們只需調(diào)用pipe.score,代碼如下:

在對管道調(diào)用score 辦法時,首要運用縮放器對測驗數(shù)據(jù)進行改換,然后運用縮放后的測驗數(shù)據(jù)對SVM 調(diào)用score 辦法。如你所見,這個成果與咱們從本章最初的第一個比方中的代碼得到的成果是相同的。運用管道,咱們削減了“預(yù)處理+ 分類”進程所需求的代碼量。

運用管道的首要長處在于,現(xiàn)在咱們能夠在cross_val_score 或GridSearchCV 中運用這個估量器,針對本文最初的第二比方運用管道:3.解決問題:在網(wǎng)絡(luò)查找中運用管道

咱們界說一個需求查找的參數(shù)網(wǎng)格,并運用管道和參數(shù)網(wǎng)格構(gòu)建一個GridSearchCV。不過在指定參數(shù)網(wǎng)格時存在一處纖細的改變。咱們需求為每個參數(shù)指定它在管道中所屬的進程。咱們要調(diào)理的兩個參數(shù)C 和gamma 都是SVC 的參數(shù),歸于第二個進程。咱們給這個進程的稱號是"svm"。為管道界說參數(shù)網(wǎng)格的語法是為每個參數(shù)指定進程稱號,后邊加上__(雙下劃線),然后是參數(shù)稱號。因而,要想查找SVC 的C 參數(shù),有必要運用"svm__C" 作為參數(shù)網(wǎng)格字典的鍵,對gamma 參數(shù)也是同理:

與本文最初的第二比方中所做的網(wǎng)格查找不同,現(xiàn)在關(guān)于穿插驗證的每次區(qū)分來說,僅運用練習(xí)部分對MinMaxScaler 進行擬合。將圖6-2 與圖6-1 進行比照。

圖6-2: 運用管道在穿插驗證循環(huán)內(nèi)部進行預(yù)處理時的數(shù)據(jù)運用情況4.簡析管道的作業(yè)流程

Pipeline 類不光可用于預(yù)處理和分類,實踐上還能夠?qū)㈨б鈹?shù)量的估量器銜接在一起。例如,你能夠構(gòu)建一個包含特征提取、特征挑選、縮放和分類的管道,總共有4 個進程。相同,最終一步能夠是回歸或聚類等。

關(guān)于管道中估量器的僅有要求就是,除了最終一步之外的一切進程都需求具有transform辦法,這樣它們能夠生成新的數(shù)據(jù)表明,以供下一個進程運用。在調(diào)用Pipeline.fit 的進程中,管道內(nèi)部順次對每個進程調(diào)用fit 和transform,其輸入是前一個進程中transform 辦法的輸出。關(guān)于管道中的最終一步,則僅調(diào)用fit。

疏忽某些細枝末節(jié),其完成辦法如下所示。請記住,pipeline.steps 是由元組組成的列表,所以pipeline.steps[0][1] 是第一個估量器,pipeline.steps[1][1] 是第二個估量器,以此類推:

4.1 用make_pipline辦法創(chuàng)立管道?

咱們一般不需求為每一個進程供給用戶指定的稱號。有一個很便利的函數(shù)make_pipeline,能夠創(chuàng)立管道并依據(jù)每個進程所屬的類為其主動命名。make_pipeline 的語法如下所示:

4.2 拜訪進程特點

一般來說,想拜訪管道中的進程,最簡略的辦法是經(jīng)過named_steps 特點,它是一個字典,將進程稱號映射為估量器:

4.3 拜訪網(wǎng)格查找管道中的特點

運用管道的首要場景就是進行網(wǎng)格查找。一個常見的使命是在網(wǎng)格查找內(nèi)拜訪管道的某些進程。咱們對cancer 數(shù)據(jù)集上的LogisticRegression 分類器進行網(wǎng)格查找,在將數(shù)據(jù)傳入LogisticRegression 分類器之前,先用Pipeline 和StandardScaler對數(shù)據(jù)進行縮放。首要,咱們用make_pipeline 函數(shù)創(chuàng)立一個管道:

5. 運用舉例一:網(wǎng)格查找預(yù)處理進程與模型參數(shù)

咱們能夠運用管道將機器學(xué)習(xí)作業(yè)流程中的一切處理進程封裝成一個scikit-learn 估量器。這么做的另一個優(yōu)點在于,現(xiàn)在咱們能夠運用監(jiān)督使命(比方回歸或分類)的輸出來調(diào)理預(yù)處理參數(shù)。在運用嶺回歸之前運用boston 數(shù)據(jù)集的多項式特征,下面咱們用一個管道來重復(fù)這個建模進程,管道包含3 個進程:縮放數(shù)據(jù)、核算多項式特征與嶺回歸:

咱們怎樣知道挑選幾回多項式,或許是否挑選多項式或交互項呢?抱負情況下,咱們期望依據(jù)分類成果來挑選degree 參數(shù)。咱們能夠運用管道查找degree 參數(shù)以及Ridge 的alpha參數(shù)。為了做到這一點,咱們要界說一個包含這兩個參數(shù)的param_grid,并用進程稱號作為前綴:

從穿插驗證的成果中能夠看出,運用二次多項式很有用,但三次多項式的作用比一次或二次都要差許多。從找到的最佳參數(shù)中也能夠看出這一點:

正與咱們調(diào)查圖6-4 中的網(wǎng)格查找成果所意料的那樣,不運用多項式特征得到了顯著更差的成果。

一起查找預(yù)處理參數(shù)與模型參數(shù)是一個十分強壯的戰(zhàn)略。可是要記住,GridSearchCV 會測驗指定參數(shù)的一切可能組合。因而,向網(wǎng)格中增加更多參數(shù),需求構(gòu)建的模型數(shù)量將呈指數(shù)增加。6.運用舉例二:網(wǎng)格查找挑選運用哪個模型

進一步將GridSearchCV 和Pipeline 結(jié)合起來:查找管道中正在履行的實踐進程。下面是一個比方:在iris 數(shù)據(jù)集上比較RandomForestClassifier 和SVC。咱們知道,SVC需求對數(shù)據(jù)進行縮放,運用StandardScaler。RandomForestClassifier 不需求預(yù)處理。先界說管道,顯式地對進程命名。咱們需求兩個進程,一個用于預(yù)處理,然后是一個分類器。咱們能夠用SVC 和StandardScaler 來將其實例化:

界說需求查找的parameter_grid。咱們期望classifier 是RandomForestClassifier或SVC。因為這兩種分類器需求調(diào)理不同的參數(shù),而且需求不同的預(yù)處理,所以運用查找網(wǎng)格列表。為了將一個估量器分配給一個進程,運用進程稱號作為參數(shù)稱號。假如咱們想越過管道中的某個進程(例如,RandomForest 不需求預(yù)處理),則能夠?qū)⒃撨M程設(shè)置為None:

網(wǎng)格查找的成果是SVC 與StandardScaler 預(yù)處理,在C=10 和gamma=0.01 時給出最佳成果。7.小結(jié)

Pipeline 類是一種通用東西,能夠?qū)C器學(xué)習(xí)作業(yè)流程中的多個處理進程鏈接在一起。運用管道能夠?qū)⒍鄠€進程封裝為單個Python 目標(biāo),這個目標(biāo)具有咱們了解的scikit-learn 接口fit、predict 和transform。特別是運用穿插驗證進行模型評價與運用網(wǎng)格查找進行參數(shù)挑選時,運用Pipeline 類來包含一切處理進程對正確的評價至關(guān)重要。

運用Pipeline 類還能夠讓代碼愈加簡練,并削減不必pipeline 類構(gòu)建處理鏈時可能會犯的過錯(比方忘掉將一切改換器運用于測驗集,或許運用次序過錯)的可能性。挑選特征提取、預(yù)處理和模型的正確組合,這在某種程度上是一門藝術(shù),一般需求一些試錯。可是有了管道,這種“測驗”多個不同的處理進程是十分簡略的。在進行實驗時,要當(dāng)心不要將處理進程復(fù)雜化,而且一定要評價一下模型中的每個組件是否必要。

全文完

步驟 管道 參數(shù)
FASHION GUIDE
  • MICHAEL KORS北京國貿(mào)商城旗艦店盛大啟幕 呈現(xiàn)首家餐飲概念JET SET LOUNGE (MK旅行吧)
    MICHAEL KORS北京國貿(mào)商城旗艦店盛大啟幕 呈現(xiàn)首家餐飲概念JET SET LOUNGE (MK旅行吧)
    [2026年3月27日] MICHAEL KORS欣然宣布,位于北京國貿(mào)商城的全新旗艦店正式啟幕,以品牌最新零售設(shè)計理念打造,呈現(xiàn)精致而富有..
  • 2026 鋁面限量版瑞士軍刀:專注鑄就精準(zhǔn)
    2026 鋁面限量版瑞士軍刀:專注鑄就精準(zhǔn)
    Victorinox 維氏隆重推出 2026 鋁面限量版瑞士軍刀,這是備受贊譽的年度鋁面限量系列的第十二款作品。今年,該系列采用冰川藍..
  • GAFE 把快閃店玩成 “自由游樂場”!邀您放肆玩
    GAFE 把快閃店玩成 “自由游樂場”!邀您放肆玩
    近日,自由生活方式品牌GAFE正式登陸杭州潮流地標(biāo)湖濱銀泰IN77 E區(qū),打造以入場即玩為主題的限時快閃空間。把快閃玩成 無規(guī)則..
  • 最新

    lv