《數(shù)據(jù)挖掘原理、算法與應(yīng)用(Python語(yǔ)言描述)》課件 【第十一章】機(jī)器學(xué)習(xí)流水線_第1頁(yè)
《數(shù)據(jù)挖掘原理、算法與應(yīng)用(Python語(yǔ)言描述)》課件 【第十一章】機(jī)器學(xué)習(xí)流水線_第2頁(yè)
《數(shù)據(jù)挖掘原理、算法與應(yīng)用(Python語(yǔ)言描述)》課件 【第十一章】機(jī)器學(xué)習(xí)流水線_第3頁(yè)
《數(shù)據(jù)挖掘原理、算法與應(yīng)用(Python語(yǔ)言描述)》課件 【第十一章】機(jī)器學(xué)習(xí)流水線_第4頁(yè)
《數(shù)據(jù)挖掘原理、算法與應(yīng)用(Python語(yǔ)言描述)》課件 【第十一章】機(jī)器學(xué)習(xí)流水線_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第十一章流水線數(shù)據(jù)挖掘原理、算法與應(yīng)用(Python語(yǔ)言描述)流水線的定義流水線(Pipeline)也稱管道。將數(shù)據(jù)挖掘的不同步驟組合在一起,封裝所有的數(shù)據(jù)挖掘處理步驟,例如特征選擇、歸一化和分類,形成復(fù)雜的估計(jì)器,只需要對(duì)數(shù)據(jù)調(diào)用

fit

擬合一次,就可以擬合整個(gè)估計(jì)序列;結(jié)合網(wǎng)格搜索可以一次對(duì)流水線中所有估計(jì)器的參數(shù)進(jìn)行搜索;在交叉驗(yàn)證中,流水線有助于避免將測(cè)試數(shù)據(jù)中的統(tǒng)計(jì)信息泄漏到訓(xùn)練好的模型中。學(xué)習(xí)目標(biāo)(1)了解流水線的結(jié)構(gòu)。(2)了解構(gòu)建預(yù)處理流水線的方法。(3)了解構(gòu)建帶學(xué)習(xí)器的流水線構(gòu)建方法。(4)了解網(wǎng)格搜索流水線中模型參數(shù)的方法。(5)了解網(wǎng)格搜索選擇流水線中模型的方法。(6)了解構(gòu)建復(fù)雜流水線的方法。目錄流水線結(jié)構(gòu)預(yù)處理流水線帶學(xué)習(xí)器的流水線網(wǎng)格搜索流水線中模型的參數(shù)采用網(wǎng)格搜索選擇流水線中的模型復(fù)雜的流水線案例:乳腺腫瘤數(shù)據(jù)集的分類模型選擇 通常流水線包含轉(zhuǎn)換序列(預(yù)處理、特征工程)、學(xué)習(xí)器等。主要包含以下幾部分:11.1流水線結(jié)構(gòu)數(shù)據(jù)預(yù)處理學(xué)習(xí)器:數(shù)據(jù)標(biāo)準(zhǔn)化、數(shù)據(jù)編碼等。此階段必須有transform方法。特征選擇、降維學(xué)習(xí)器:學(xué)習(xí)器同樣必須有transform方法,用于數(shù)據(jù)轉(zhuǎn)換。算法學(xué)習(xí)器:選擇最優(yōu)的模型,通常具有predict方法,是執(zhí)行預(yù)測(cè)的學(xué)習(xí)器。目錄流水線結(jié)構(gòu)預(yù)處理流水線帶學(xué)習(xí)器的流水線網(wǎng)格搜索流水線中模型的參數(shù)采用網(wǎng)格搜索選擇流水線中的模型復(fù)雜的流水線案例:乳腺腫瘤數(shù)據(jù)集的分類模型選擇 11.2預(yù)處理流水線預(yù)處理流水線是將數(shù)據(jù)預(yù)處理中的各個(gè)步驟組合,包含缺失值處理、特征編碼、標(biāo)準(zhǔn)化等。sklearn.pipeline中

Pipeline模塊實(shí)現(xiàn)流水線。Pipeline主要參數(shù)說(shuō)明:Pipeline(Steps=[]#元組構(gòu)成的list,每一個(gè)元組為一個(gè)步驟包含兩個(gè)元素:(名稱(自定義),實(shí)例化對(duì)象))11.2預(yù)處理流水線參數(shù)說(shuō)明steps學(xué)習(xí)器列表,按順序以元組列表的方式給出,最后一個(gè)是估計(jì)器屬性說(shuō)明name_steps查看每個(gè)步驟的名稱和參數(shù),字典對(duì)象,鍵為名稱,值為參數(shù)方法說(shuō)明fit(X,y)訓(xùn)練模型fit_predict(X,y)先訓(xùn)練模型,再進(jìn)行預(yù)測(cè)fit_transform(X,y)先訓(xùn)練模型,再利用最后一個(gè)學(xué)習(xí)器進(jìn)行轉(zhuǎn)換predict(X)進(jìn)行預(yù)測(cè)predict_log_proba(X)預(yù)測(cè)對(duì)數(shù)概率predict_proba(X)預(yù)測(cè)概率score(X,y)模型評(píng)價(jià)set_params()修改學(xué)習(xí)器的參數(shù)11.2預(yù)處理流水線例11-1缺失值填充與標(biāo)準(zhǔn)化組合fromsklearn.pipelineimportPipeline

#導(dǎo)包fromsklearn.preprocessingimportStandardScaler

#導(dǎo)包fromsklearn.imputeimportSimpleImputer

#導(dǎo)包pre_pipeline=Pipeline(steps=[("imputer",SimpleImputer(strategy="mean")),("std",StandardScaler())])

#“imputer”、“std”為流水線兩步驟11.2預(yù)處理流水線如果需要對(duì)不同特征分別進(jìn)行處理,然后將不同處理的輸出組合,可以使用pose提供的ColumnTransformer方法將不同特征的處理方法組合。ColumnTransformer常用參數(shù)說(shuō)明:ColumnTransformer([]#元組構(gòu)成的list,每一個(gè)元組為一個(gè)步驟,包含三個(gè)元素:名稱,實(shí)例化對(duì)象,屬性列表remainder='drop'#沒(méi)有處理的列的處理辦法,{'drop','passthrough'})11.2預(yù)處理流水線例11-2將不同特征的處理組合fromsklearn.pipelineimportPipeline#導(dǎo)包fromposeimportColumnTransformer#導(dǎo)包fromsklearn.preprocessingimportLabelEncoder,OneHotEncoder#導(dǎo)包attr_1=["x1","x2","x3"]#屬性X1,X2,X3attr_2=["x4","x5"]#屬性X4,X5cat=["x6"]#標(biāo)簽attr_pipeline=ColumnTransformer([("1",LabelEncoder(),attr_1),("2",pre_pipeline,attr_2),("3",OneHotEncoder(),cat)],remainder='passthrough')data_new=attr_pipeline.fit_transform(data)目錄流水線結(jié)構(gòu)預(yù)處理流水線帶學(xué)習(xí)器的流水線網(wǎng)格搜索流水線中模型的參數(shù)采用網(wǎng)格搜索選擇流水線中的模型復(fù)雜的流水線案例:乳腺腫瘤數(shù)據(jù)集的分類模型選擇 前面介紹的流水線將預(yù)處理過(guò)程組合在一起,可以是對(duì)數(shù)據(jù)集的順序處理,也可以是對(duì)不同特征單獨(dú)處理后組合,輸出結(jié)果仍然是一個(gè)數(shù)據(jù)集。以下例子將在流水線中加入分類學(xué)習(xí)器。例11-3

標(biāo)準(zhǔn)化與KNN分類流水線fromsklearn.pipelineimportPipelinefromsklearn.treeimportKNeighborsClassifierpipe=Pipeline(steps=[('scaler',StandardScaler()),('knn',KNeighborsClassifier())])#構(gòu)建帶標(biāo)準(zhǔn)化與KNN分類學(xué)習(xí)器的流水線pipe.fit(X_train,y_train)#訓(xùn)練:標(biāo)準(zhǔn)化與KNN學(xué)習(xí)print("測(cè)試集分類正確率:",round(pipe.score(X_test,y_test),2))#評(píng)估11.3帶學(xué)習(xí)器的流水線目錄流水線結(jié)構(gòu)預(yù)處理流水線帶學(xué)習(xí)器的流水線網(wǎng)格搜索流水線中模型的參數(shù)采用網(wǎng)格搜索選擇流水線中的模型復(fù)雜的流水線案例:乳腺腫瘤數(shù)據(jù)集的分類模型選擇 11.4網(wǎng)格搜索流水線中模型的參數(shù)流水線中的參數(shù)調(diào)優(yōu)也可以通過(guò)網(wǎng)格搜索來(lái)實(shí)現(xiàn),通過(guò)param_grid指定流水線中的參數(shù)。指定“步驟名”+“雙下劃線”+“參數(shù)名”的參數(shù)取值范圍,設(shè)定該步驟參數(shù)的搜索空間。11.4網(wǎng)格搜索流水線中模型的參數(shù)例11-4

網(wǎng)格搜索例11-3流水線中“knn”模型的最優(yōu)參數(shù)fromsklearn.model_selectionimportGridSearchCV#設(shè)置參數(shù)網(wǎng)絡(luò),knn流水線中對(duì)KNN分類的命名knn__(雙下劃線)接對(duì)應(yīng)模型的參數(shù)param_grid={'knn__n_neighbors':[2,4,6,8,10],'knn__weights':['uniform','distance']}#搜索鄰居數(shù)量以及是否按距離加權(quán)#網(wǎng)格搜索grid_search=GridSearchCV(estimator=pipe,param_grid=param_grid,cv=5)#設(shè)定網(wǎng)格搜索,5折交叉驗(yàn)證grid_search.fit(X_train,y_train)#

訓(xùn)練#測(cè)試集上的得分print(grid_search.score(X_test,y_test))#輸出測(cè)試集上的得分目錄流水線結(jié)構(gòu)預(yù)處理流水線帶學(xué)習(xí)器的流水線網(wǎng)格搜索流水線中模型的參數(shù)采用網(wǎng)格搜索選擇流水線中的模型復(fù)雜的流水線案例:乳腺腫瘤數(shù)據(jù)集的分類模型選擇 11.5采用網(wǎng)格搜索選擇流水線中的模型前面介紹了通過(guò)網(wǎng)格搜索尋找流水線中的最優(yōu)參數(shù)的組合。本例介紹通過(guò)網(wǎng)格搜索尋找最優(yōu)的模型組合。圖11-2包含標(biāo)準(zhǔn)化(StandardScaler、MinMaxScaler共2個(gè)模型)以及分類(LogisticRegression、KNeighborsClassifier、SVC共3個(gè)模型),可以組合成6條不同的流水線。通過(guò)網(wǎng)格搜索尋找最優(yōu)的標(biāo)準(zhǔn)化模型與分類模型的組合。圖11-2含模型選擇的流水線11.5采用網(wǎng)格搜索選擇流水線中的模型例11-5通過(guò)網(wǎng)格搜索尋找最優(yōu)的模型組合#導(dǎo)包fromsklearn.preprocessingimportMinMaxScalerfromsklearn.preprocessingimportStandardScalerfromsklearn.linear_modelimportLogisticRegressionfromsklearn.neighborsimportKNeighborsClassifierfromsklearn.svmimportSVCfromsklearn.pipelineimportPipeline11.5采用網(wǎng)格搜索選擇流水線中的模型例11-5通過(guò)網(wǎng)格搜索尋找最優(yōu)的模型組合#建立流水線pipe=Pipeline(steps=[("scaler",MinMaxScaler()),("model",LogisticRegression())])scale_selector=[StandardScaler(),MinMaxScaler()]#設(shè)置搜索的兩種標(biāo)準(zhǔn)化模型model_selector=[KNeighborsClassifier(),SVC(),LogisticRegression()]#3種分類模型param_grid={"scaler":scale_selector,"model":model_selector}#設(shè)定網(wǎng)格搜索的參數(shù)grid_search=GridSearchCV(estimator=pipe,param_grid=param_grid,cv=5)#設(shè)定網(wǎng)格搜索grid_search.fit(X_train_s,y_train)#訓(xùn)練print(grid_search.best_estimator_)#輸出最優(yōu)的參數(shù)grid_search.score(X_test_s,y_test)#輸出測(cè)試集上的得分目錄流水線結(jié)構(gòu)預(yù)處理流水線帶學(xué)習(xí)器的流水線網(wǎng)格搜索流水線中模型的參數(shù)采用網(wǎng)格搜索選擇流水線中的模型復(fù)雜的流水線案例:乳腺腫瘤數(shù)據(jù)集的分類模型選擇 11.6復(fù)雜的流水線除了將標(biāo)準(zhǔn)化以及分類模型選擇組合,還可以將降維方法、特征選擇方法組合到流水線形成更復(fù)雜的流水線。如圖11-3所示。圖11-3復(fù)雜流水線11.6復(fù)雜的流水線例11-6含特征選擇的流水線fromsklearn.decompositionimportPCAfromsklearn.feature_selectionimportRFECVfromsklearn.treeimportDecisionTreeClassifierfromsklearn.ensembleimportRandomForestClassifierpipe_new2=Pipeline(steps=[("scaler",StandardScaler),("selector",PCA(3)),("model",KNeighborsClassifier())])

#建立流水線model_selector=[LogisticRegression(random_state=10),SVC(),KNeighborsClassifier()]scaler_selector=[StandardScaler(),MinMaxScaler()]selector_selector=[PCA(3),RFECV(DecisionTreeClassifier(random_state=10),cv=5)]11.6復(fù)雜的流水線例11-6含特征選擇的流水線param_grid_2={"scaler":scaler_selector,"selector":selector_selector,"model":model_selector,

#實(shí)現(xiàn)對(duì)模型的選擇

"model__class_weight":["balanced",None],

#模型參數(shù)的選擇,模型共同的參數(shù)

"model__C":[0.01,0.1,0.2,0.5,1]}#模型參數(shù)的選擇,模型共同的參數(shù)grid_search=GridSearchCV(estimator=pipe_new2,param_grid=param_grid_2,cv=5)#網(wǎng)格搜索grid_search.fit(X_train,y_train)#訓(xùn)練grid_search.best_estimator_.named_steps["selector"].explained_variance_ratio_.sum()#輸出最好的模型組合目錄流水線結(jié)構(gòu)預(yù)處理流水線帶學(xué)習(xí)器的流水線網(wǎng)格搜索流水線中模型的參數(shù)采用網(wǎng)格搜索選擇流水線中的模型復(fù)雜的流水線案例:乳腺腫瘤數(shù)據(jù)集的分類模型選擇目標(biāo)數(shù)據(jù)集介紹實(shí)現(xiàn)代碼

11.7.1目標(biāo)根據(jù)乳腺腫瘤的半徑,紋理,周長(zhǎng),區(qū)域,平滑度,緊湊性,凹度,凹點(diǎn),對(duì)稱,分形維數(shù)等特征,構(gòu)建模型預(yù)測(cè)乳腺腫瘤是良性還是惡性。11.7.2數(shù)據(jù)集介紹BreastCancer數(shù)據(jù)集包含569個(gè)患者樣本,30個(gè)特征。數(shù)據(jù)集為sklearn自帶數(shù)據(jù)集。11.7.3實(shí)現(xiàn)代碼1.導(dǎo)包importpandasaspdimportnumpyasnpimportwarningswarnings.filterwarnings("ignore")2.導(dǎo)入數(shù)據(jù)fromsklearn.datasetsimportload_breast_cancerdata=load_breast_cancer()3.查看數(shù)據(jù)(右圖)print(data.DESCR)11.7.3實(shí)現(xiàn)代碼4.測(cè)試集訓(xùn)練集劃分X=data.datay=data.targetfromsklearn.model_selectionimporttrain_test_splitX_train_s,X_test_s,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=10)11.7.3實(shí)現(xiàn)代碼5.構(gòu)建流水線及訓(xùn)練#包含標(biāo)準(zhǔn)化與K近鄰分類模型fromsklearn.pipelineimportPipelinepipe=Pipeline(steps=[("scaler",StandardScaler()),("knn",KNeighborsClassifier())])#構(gòu)建流水線pipe.fit(X_train_s,y_train)#訓(xùn)練print(pipe.score(X_test_s,y_test))#輸出模型的正確率正確率:0.991228070175438611.7.3實(shí)現(xiàn)代碼6.網(wǎng)格搜索最優(yōu)的模型組合fromsklearn.decompositionimportPCAfromsklearn.ensembleimportRandomForestClassifierpipe_new2=Pipeline(steps=[("scaler",StandardScaler),("selector",PCA(3)),("model",KNeighborsClassifier())])model_selector=[LogisticRegression(random_state=10),SVC()]scaler_selector=[StandardScaler(),MinMaxScaler()]selector_selector=[PCA(3),RFECV(DecisionTreeClassifier(random_state=10),cv=5)]11.7.3實(shí)現(xiàn)代碼6.網(wǎng)格搜索最優(yōu)的模型組合param_grid_2={"scaler":scaler_selector,"selector":sel

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論