機器學習原理與應用課件 第13章 集成學習_第1頁
機器學習原理與應用課件 第13章 集成學習_第2頁
機器學習原理與應用課件 第13章 集成學習_第3頁
機器學習原理與應用課件 第13章 集成學習_第4頁
機器學習原理與應用課件 第13章 集成學習_第5頁
已閱讀5頁,還剩126頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

第13章

集成學習1學習目標理解集成學習的基本原理。掌握利用Scikit-learn、mlxtend等庫實現(xiàn)集成學習的基本方法。122目錄頁313.1基本原理13.2應用實例集成學習集成學習(EnsembleLearning)的核心思想在于“博采眾長”,其通過融合多個同質(zhì)或異質(zhì)機器學習器求解分類或回歸問題,可有效克服單個分類或回歸器存在的易出現(xiàn)過擬合、精度較低等缺點。(類似于“三個臭皮匠頂個諸葛亮”的思想)。4集成學習的理論基礎來自于Kearns和Valiant提出的基于PAC(Probablyapproximatelycorrect)的可學習性理論,PAC定義了學習算法的強弱:弱學習算法:識別錯誤率小于1/2(即準確率僅比隨機猜測略高的算法)。強學習算法:識別準確率很高并能在多項式時間內(nèi)可完成的算法。513.1基本原理如圖所示,集成學習首先根據(jù)已知訓練數(shù)據(jù)產(chǎn)生多個個體學習器(通常為弱學習器),然后通過特定的集成策略將個體學習器進行融合以生成強學習器;其中,如何生成個體學習器與如何選擇集成策略是集成學習首要解決的核心問題。613.1基本原理舉個例子,假設你想考研而不知道報哪個學校,你有10個在不同高校讀研的學長,你想得到他們的幫助,你可以這樣做:

(1)選出你最信任的那個朋友,聽從他的建議(普通的學習算法,選擇驗證效果最好的)。

(2)讓所有朋友給你建議,通過某個加權(quán)計算或者投票,計算出最終的答案(集成學習,訓練多個基學習器,用某種結(jié)合策略得到最終學習器)。713.1基本原理(1)個體學習器通常是是一個已訓練好的機器學習模型(例如決策樹、支持向量機等),若集成后強學習器只包含同種類型的個體學習器(如僅包含決策樹),則稱為“同質(zhì)集成”。同質(zhì)集成中的個體學習器也稱為“基學習器”,相應的學習算法稱為“基學習算法”。有同質(zhì)就有異質(zhì),若集成包含不同類型的個體學習器,例如同時包含決策樹和神經(jīng)網(wǎng)絡,那么這時個體學習器一般不稱為基學習器,而稱作“組件學習器”。813.1.1基本概念弱學習器:常指泛化性能略優(yōu)于隨機猜測的學習器,例如在二分類問題上精度略高于50%的分類器。但需要注意的是,雖然理論上來說使用弱學習器集成足以獲得好的性能,但在實際中出于種種考慮,例如希望使用較少的個體學習器,或是重用關于常見學習器的一些經(jīng)驗等,人們往往會使用比較強的學習器。913.1.1基本概念(2)集成策略如果把好壞不一的結(jié)果混合在一起,則混合后的結(jié)果很可能比最壞的單個結(jié)果要好一些,但又比最好的單個結(jié)果要壞一些,這種情況下不如直接取單個最好的結(jié)果,而不用混合。但是集成學習還是對多個學習器進行了結(jié)合,那它怎么保證整體的效果會比最好的那個單一學習器的效果更好呢?1013.1.1基本概念在一個二分類任務中,三個分類器在三個測試樣本上的表現(xiàn)如下圖所示。假設集成學習的結(jié)果通過三個個體學習器投票的方式產(chǎn)生,即“少數(shù)服從多數(shù)”,那么當三個個體學習器分別對三個測試例有不同的判別優(yōu)勢時,集成的效果也會不一樣。1113.1.1基本概念在情況[1]中,每個個體學習器均只有66.6%的精度但針對不同測試集的表現(xiàn)不一,集成后學習器的精度卻達到了100%;在情況[2]中,每個個體學習器也均只有66.6%的精度但針對不同測試集的表現(xiàn)相同,集成后學習器的精度沒有任何提高;在情況[3]中,每個個體學習器的精度均只有33.3%但針對不同測試集的表現(xiàn)不一,集成后學習器的精度反而更低。1213.1.1基本概念13此例表明:要獲得好的集成,個體學習器應“好而不同”,即:個體學習器要有一定的準確性(精度通常大于0.5),即學習器性能不能太差。。個體學習器要有“多樣性”,即學習器間具有差異。13.1.1基本概念

13.1.2基礎方法14在集成學習中,基礎集成方法側(cè)重于直接將不同個體學習器的輸出結(jié)果進行匯總并采用特定的方式產(chǎn)生更可靠的結(jié)果,其間并不關注個體學習器之間的關聯(lián)性?;A集成方法主要包括投票法與平均法兩種。(1)投票法投票法分為硬投票與軟投票兩種,其中,硬投票是指個體學習器的預測結(jié)果為樣本所屬類別的標記,軟投票是指個體學習器的預測結(jié)果為樣本所屬類別的概率。根據(jù)投票方式的不同,投票法又分為絕對多數(shù)投票、相對多數(shù)投票與加權(quán)投票三種。

13.1.2基礎方法①絕對多數(shù)投票若超過半數(shù)的個體學習器預測類別標記相同,則將該類別標記作為集成后學習器的預測結(jié)果,否則拒絕預測。②相對多數(shù)投票在所有個體學習器預測結(jié)果中,若某類別標記的票數(shù)最多,則將其作為集成后學習器的預測結(jié)果;若同時有多個類別標記獲得最高票數(shù),則從中隨機選取一個類別標記作為集成后學習器的預測結(jié)果。③加權(quán)投票根據(jù)不同個體分類器

預先設置的權(quán)重將相應的結(jié)果(通常為概率值)進行加權(quán)與累加,然后將結(jié)果最大者對應的類別標記作為集成后學習器的預測結(jié)果。15

13.1.2基礎方法(2)平均法平均法通常用于求取回歸或分類問題的概率,主要包括以下兩種:①普通平均將所有個體學習器的輸出結(jié)果的平均值作為集成后學習的預測結(jié)果。②加權(quán)平均根據(jù)不同個體分類器預先設置的權(quán)重將相應概率進行加權(quán)與累加,然后將結(jié)果最大者對應的類別標記作為集成后學習器的預測結(jié)果。16在Scikit-learn庫中,集成學習學習模塊的導入方法如下:fromsklearn.ensembleimportVotingClassifier#分類fromsklearn.ensembleimportVotingRegressor#回歸函數(shù)原型:VotingClassifier(estimators,

voting='hard',

weights=None)VotingRegressor(estimators,weights=None,n_jobs=None)17

13.1.2基礎方法18

13.1.2基礎方法名稱說明estimators個體學習器設置;格式為[('學習器標示1',學習器模型1),...,('學習器標示n',學習器n模型)],如estimators=[('log_model',log_model),('svm_model',svm_model),('dt_model',dt_model)]voting集成策略的選擇;設置為'hard'時為少數(shù)服從多數(shù),設置為'soft'時將所有個體學習器預測樣本所屬類別概率的平均值作為標準(最高平均值對應的類型為最終的預測結(jié)果)weights設置權(quán)重序列以對個體學習器預測結(jié)果進行加權(quán)平均(未設置時則使用均勻的權(quán)重)常用參數(shù)19

13.1.2基礎方法常用方法名稱說明fit(X,y)利用訓練樣本(X與y分別為訓練樣本相應的特征與分類標記)訓練決策樹模型predict(X)預測測試樣本特征對應的分類標記predict_proba(X)預測測試樣本特征所屬類別的概率score(X,y)利用指定測試樣本(X與y分別為訓練樣本相應的特征與分類標記)評估模型的平均準確度集成學習旨在訓練多個個體學習器并以特定策略將其進行組合以產(chǎn)生比單個個體學習器性能優(yōu)越的強學習器。從理論上而言,只要個體學習器性能不比弱學習器差且不同個體學習器之間相互獨立,隨著個體學習器數(shù)目的增大,集成后的強學習器的錯誤率將趨于零。然而,在實際中,不同個體學習器通常是利用同一個數(shù)據(jù)集訓練而得的,很難保證其完全相互獨立;在此情況下,如何根據(jù)同一個數(shù)據(jù)集訓練出具有“多樣性”與“準確性”的個體學習器是提升最終集成效果的關鍵。20

13.1.3集成框架(1)Boosting集成學習框架Boosting是一種將弱學習器不斷提升為強學習器的同質(zhì)集成框架。21

13.1.3集成框架流程:首先根據(jù)初始訓練樣本D1與相應的權(quán)重W1訓練初始基學習器H1,根據(jù)H1的錯誤率E1更新訓練樣本D2與相應的權(quán)重W2,進而利用訓練樣本D2與相應的權(quán)重W2訓練下一個基學習器H2;最終,以上訓練樣本權(quán)重調(diào)整與基學習器訓練兩個過程不斷重復執(zhí)行直至滿足預設迭代收斂條件(如基學習器數(shù)目),而所生成的多個基學習器則通過特定的組合策略(如加權(quán)求和)構(gòu)成相應的強學習器。需要注意的是,在基學習器生成的過程中,新基學習器的生成以上一個基學習器為基礎,因而其間存在較強的依賴性。

22

Boosting集成學習框架13.1.3集成框架

23

Boosting集成學習框架13.1.3集成框架

Boosting集成學習框架基于Boosting框架的集成學習算法主要有AdaBoost、梯度提升樹(GradientBoostingTree)、XGBoost(eXtremeGradientBoosting)三種。①AdaBoostAdaBoost算法的關鍵在于樣本權(quán)重與弱分類器(或基于學習器)權(quán)重的更新,前者通過增大被錯誤分類樣本的權(quán)重而降低被正確分類樣本的權(quán)重不斷調(diào)整樣本在構(gòu)造不同弱分類器中的作用,而后者則通過增大準確率較高弱分類器的權(quán)重而降低準確率較低弱分類器的權(quán)重提高集成分類器的整體性能。2413.1.3集成框架②梯度提升樹梯度提升樹是一種在Boosting框架下采用回歸決策樹構(gòu)建強學習器的算法;由于涉及梯度計算且回歸決策樹相應數(shù)值加減具有特定的意義,因而,無論解決回歸問題還是分類問題,梯度提升樹均采用回歸決策樹(葉節(jié)點為數(shù)值而非類別標記)作為基學習器。在此情況下,回歸決策樹的構(gòu)建依據(jù)將無法采用熵或基尼系數(shù)(適于分類決策樹),而是采用平方誤差

或均方差。25

Boosting集成學習框架13.1.3集成框架26

Boosting集成學習框架13.1.3集成框架

27

Boosting集成學習框架梯度提升樹是在回歸決策樹基礎上通過學習或擬合殘差的方式將多個回歸決策樹進行集成以提高整體回歸或分類精度的算法,其中,殘差擬合或?qū)W習是構(gòu)建梯度提升樹的關鍵,其基本思想與日常年齡推斷例子較為類似。13.1.3集成框架例:某同學實際年齡為30歲,若以20歲進行推斷(或擬合)則產(chǎn)生10歲的殘差,而若以6歲進行推斷(或擬合)該殘差則產(chǎn)生4歲的殘差,第三次以3歲進行推斷(或擬合)余下的殘差則產(chǎn)生僅1歲的殘差,如此類推則歲數(shù)殘差將持續(xù)減小;最后將每次推斷(或擬合)的歲數(shù)進行累加后即生成最終推斷的結(jié)果。28

Boosting集成學習框架13.1.3集成框架

29

Boosting集成學習框架13.1.3集成框架

30

Boosting集成學習框架13.1.3集成框架根據(jù)上式可知,損失函數(shù)旨在鼓勵弱學習器及集成強學習器盡可能地擬合訓練樣本以使偏差最小化,正則化項旨在簡化弱學習器及集成強學習器的復雜度以使方差最小化(復雜度較低的模型在有限樣本上的表現(xiàn)隨機性更小,因而更穩(wěn)定或不易出現(xiàn)過擬合問題)。整體上,要使上式最小化,不但應保證誤差要盡可能小,而且應保證葉節(jié)點要盡可能少且節(jié)點權(quán)重不過于偏向較大值。31

Boosting集成學習框架13.1.3集成框架32Bagging集成學習框架13.1.3集成框架Bagging是BootstrapAggregating算法的縮寫,其中的Bootstrapping是一種自助采樣技術,有放回的從原始數(shù)據(jù)集上創(chuàng)建觀察子集,子集的大小與原始集的大小相同。其基本思想在于:給定樣本集,隨機從中取出1個樣本放入采樣集,然后再將其放回原樣本集以使下次采樣時該樣本仍有可能被選中;如此經(jīng)過n次隨機采樣操作則可得到包含大小為n的采樣集(初始樣本集中部分樣本可能在采樣集中多次出現(xiàn)或從未出現(xiàn))。類似地可采樣獲得T個大小為n的采樣集,然后對每個采樣集進行訓練以獲得基學習器,進而將基學習進行集成(如投票法)而生成強學習器。通過“少數(shù)服從多數(shù)”的原則來確定最終的結(jié)果。33

Bagging集成學習框架13.1.3集成框架Bagging為獲得好的集成,同時希望個體學習器不能太差,使用相互有交疊的采樣子集?;蛘哒f是通過在樣本上產(chǎn)生多樣性,從而給予學習器之間獨立性。由于每個樣本被選中的概率相同,因此Bagging并不側(cè)重于訓練數(shù)據(jù)集中的任何特定實例。34

Bagging集成學習框架13.1.3集成框架Bagging與Boosting的主要區(qū)別在于:①樣本選擇:Boosting每一輪的訓練集不變,只是訓練集中每個樣例在分類器中的權(quán)重發(fā)生變化,而權(quán)值是根據(jù)上一輪的分類結(jié)果進行調(diào)整。Bagging訓練集是在原始集中有放回選取的,從原始集中選出的各輪訓練集之間是獨立的。②樣例權(quán)值:Boosting根據(jù)錯誤率不斷調(diào)整樣例的權(quán)值,錯誤率越大則權(quán)重越大。Bagging使用均勻取樣,每個樣例的權(quán)重相等。③預測函數(shù):Boosting每個弱分類器都有相應的權(quán)重,對于分類誤差小的分類器會有更大的權(quán)重。Bagging所有預測模型的權(quán)重相等。④計算方式:Boosting各個預測模型只能順序生成,因為后一個模型參數(shù)需要前一輪模型的結(jié)果。Bagging各個預測模型可以并行生成。35Stacking集成學習框架13.1.3集成框架與Boosting與Bagging等同質(zhì)集成框架不同,Stacking通過特定的學習器集成多種同構(gòu)或異構(gòu)的基學習器,是典型的基于“學習法”的重要集成框架。其基本原理在于:根據(jù)訓練集訓練出N個初級學習器(可為同構(gòu)基學習器或互不相同的異構(gòu)基學習器,如決策樹、神經(jīng)網(wǎng)絡等),然后以初級學習器的輸出作為特征輸入訓練次級學習器(初始樣本的標記仍被當做是樣例標記),進而獲得最終的強學習器。36

Stacking集成學習框架13.1.3集成框架由于性能不同的初級學習器(如支持向量機、決策樹等)針對當前問題或相關特征空間區(qū)域的側(cè)重點也不相同,因而可能產(chǎn)生不同程度的錯誤,元學習器(或?qū)W習器的學習器)則可綜合不同初級學習器的學習行為以從中歸納出更深層次的學習規(guī)律,進而糾正初級學習器的錯誤以輸出正確的結(jié)果。37

Stacking集成學習框架13.1.3集成框架

38

Stacking集成學習框架13.1.3集成框架

根據(jù)以上步驟可知,Stacking框架融合了不同類型個體學習器(如支持向量機、K近鄰等)的特征表達能力并采用元學習器替換了Bagging與Boosting框架中的投票、平均等簡單的集成方法,有利于獲得誤差與方差均低的高性能學習器。Stacking集成學習框架在實際中,由于個體學習器已對輸入數(shù)據(jù)進行了復雜的非線性變換或特征表達,元學習器通常采用相對較簡單的個體學習器(如Logistic回歸)以避免過擬合問題的發(fā)生;此外,層次越多的Stacking框架雖然其特征表達能力越強,但也易導致過擬合問題發(fā)生,通常采用兩層結(jié)構(gòu)的Stacking框架即可獲得較好的結(jié)果。3913.1.3集成框架Stacking集成學習框架在一定程度上,Stacking框架與深度神經(jīng)網(wǎng)絡非常類似,其元學習器相當于深度神經(jīng)網(wǎng)絡中的輸出層,而其個體學習器則對應于深度神經(jīng)網(wǎng)絡中的隱層,兩者均以特征表達為目的,卻也均具有不可解釋性的問題。此外,在數(shù)據(jù)量不足的情況下,以數(shù)據(jù)驅(qū)動為基礎的深度神經(jīng)網(wǎng)絡可能無法應用,而Stacking框架則可能獲得較好的結(jié)果。4013.1.3集成框架13.2.1基礎方法利用加權(quán)投票集成方式對樣本進行分類。(1)問題描述利用鳶尾花數(shù)據(jù)集實現(xiàn)不同分類器的加權(quán)投票集成,具體要求如下。①采用投票方式集成決策樹、K近鄰與支持向量機三種分類器并將相應的權(quán)重設置為0.2、0.1與0.7。②對個體分類器與集成分類器的分類結(jié)果進行可視化。4113.2應用實例

13.2.1基礎方法1.導入庫importmatplotlib.pyplotasplt#導入繪圖庫fromitertoolsimportproduct

#導入迭代器處理模塊fromsklearnimportdatasets#導入數(shù)據(jù)集fromsklearn.treeimportDecisionTreeClassifier#導入決策樹分類模塊fromsklearn.neighborsimportKNeighborsClassifier#導入K近鄰分類模塊fromsklearn.svmimportSVC#導入支持向量機模塊fromsklearn.ensembleimportVotingClassifier#導入分類學習器模塊fromsklearn.inspectionimportDecisionBoundaryDisplay#導入決策邊界顯示模塊fromsklearn.model_selectionimporttrain_test_split#導入數(shù)據(jù)劃分模塊4213.2應用實例

13.2.1基礎方法2.訓練分類器#加載數(shù)據(jù)集iris=datasets.load_iris()x=iris.data[:,[0,2]]y=iris.targetx_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3,random_state=13)#訓練分類器dt_model=DecisionTreeClassifier(max_depth=4).fit(x_train,y_train)#決策樹kn_model=KNeighborsClassifier(n_neighbors=7).fit(x_train,y_train)#K近鄰svm_model=SVC(gamma=0.1,kernel="rbf",probability=True).fit(x_train,y_train)#支持向量機4313.2應用實例

13.2.1基礎方法3.集成學習(加權(quán)投票)vc_model=VotingClassifier(estimators=[("dt",dt_model),("knn",kn_model),("svc",svm_model)],voting="soft",weights=[0.2,0.1,0.7],)vc_model.fit(x_train,y_train)4413.2應用實例

13.2.1基礎方法4.繪制決策邊界dt_score=format(dt_model.score(x_test,y_test),'.2f')kn_score=format(kn_model.score(x_test,y_test),'.2f')svm_score=format(svm_model.score(x_test,y_test),'.2f')vc_score=format(vc_model.score(x_test,y_test),'.2f')f,axarr=plt.subplots(2,2,sharex="col",sharey="row",figsize=(10,8))4513.2應用實例

13.2.1基礎方法forix,model,nameinzip(product([0,1],[0,1]),[dt_model,kn_model,svm_model,vc_model],['Decision_Tree(depth=4)'+'Accuracy:'+str(dt_score),'KNN(k=7)'+'Accuracy:'+str(kn_score),'SVM(kernel="rbf")'+'Accuracy:'+str(svm_score),'Voting(Weight=(0.2,0.1,0.7))'+'Accuracy:'+str(vc_score)],):DecisionBoundaryDisplay.from_estimator(model,x,alpha=0.4,ax=axarr[ix[0],ix[1]],response_method="predict")axarr[ix[0],ix[1]].scatter(x[:,0],x[:,1],c=y,s=20,edgecolor="k")axarr[ix[0],ix[1]].set_title(name)plt.show()4613.2應用實例

13.2.1基礎方法在此例中,支持向量機與K近鄰精度稍高于決策樹,而投票式集成學習根據(jù)預設權(quán)重突出了支持向量機的性能,因而最終的精度不低于支持向量機。4713.2應用實例13.2.1基礎方法利用回歸器集成方式對糖尿病進行預測。(1)問題描述利用集成學習回歸方式對Scikit-learn庫糖尿病數(shù)據(jù)進行分析,具體要求如下。①利用投票集成學習方式集成線性回歸、隨機森林與梯度提升等個體回歸器

。②比較個體回歸器與集成回歸器擬合優(yōu)度(R2分數(shù))。③對個體回歸器與集成回歸器的預測結(jié)果進行可視化。

4813.2應用實例

13.2.1基礎方法1.導入庫importmatplotlib.pyplotasplt

#導入繪圖庫fromsklearn.ensembleimportGradientBoostingRegressor#導入梯度增強模塊fromsklearn.ensembleimportRandomForestRegressor#導入隨機森林模塊fromsklearn.linear_modelimportLinearRegression#導入線性回歸模塊fromsklearn.ensembleimportVotingRegressor#導入集成學習模塊fromsklearn.datasetsimportload_diabetes#導入糖尿病數(shù)據(jù)庫fromsklearn.model_selectionimporttrain_test_split#導入數(shù)據(jù)劃分模型fromsklearn.metricsimportr2_score#判定系數(shù)4913.2應用實例

13.2.1基礎方法2.加載并劃分數(shù)據(jù)#加載糖尿病數(shù)據(jù)diabetes=load_diabetes()x=diabetes.datay=diabetes.target#將數(shù)據(jù)劃分為訓練數(shù)據(jù)與測試數(shù)據(jù)x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3)5013.2應用實例

13.2.1基礎方法3.訓練個體學習器#構(gòu)建個體學習器GB=GradientBoostingRegressor()RF=RandomForestRegressor()LR=LinearRegression()#個體學習器訓練GB.fit(x_train,y_train)RF.fit(x_train,y_train)LR.fit(x_train,y_train)5113.2應用實例

13.2.1基礎方法4.集成學習#利用投票方式對個體學習器進行集成EL=VotingRegressor([("gb",GB),("rf",RF),("lr",LR)])#集成學習器訓練EL.fit(x_train,y_train)#個體學習器與集成學習器測試xt=x_test[:20]#選擇20個樣本GB_Pred=GB.predict(xt)RF_Pred=RF.predict(xt)LR_Pred=LR.predict(xt)EL_Pred=EL.predict(xt)5213.2應用實例

13.2.1基礎方法#顯示評價指標值ACC=[]ACC.append(r2_score(y_test[:20],GB_Pred))ACC.append(r2_score(y_test[:20],RF_Pred))ACC.append(r2_score(y_test[:20],LR_Pred))ACC.append(r2_score(y_test[:20],EL_Pred))#顯示對比結(jié)果plt.figure(1)label=['GradientBoostingRegressor','RandomForestRegressor','LinearRegression','VotingRegressor']plt.bar(range(4),height=ACC,color=['r','g','b','c'],tick_label=label,width=0.4)plt.xlabel('Method')plt.ylabel('Accuracy')forxx,yyinzip(range(4),ACC):plt.text(xx,yy,format(yy,'.2f'),ha='center',fontsize=10)plt.grid(True)plt.show()5313.2應用實例

13.2.1基礎方法5.可視化結(jié)果plt.figure(2)plt.plot(y_test[:20],'ko',label='Ground_Truth')plt.plot(GB_Pred,'gd',label='GradientBoostingRegressor')plt.plot(RF_Pred,'b^',label='RandomForestRegressor')plt.plot(LR_Pred,'ys',label='LinearRegression')plt.plot(EL_Pred,'r*',ms=10,label='VotingRegressor')plt.tick_params(axis="x",which='both',bottom=False,top=False,labelbottom=False)plt.ylabel('Predicted_Values')plt.xlabel('Testingsamples')plt.legend(loc='best')plt.grid(True)plt.show()5413.2應用實例

13.2.1基礎方法投票與平均等基礎集成方法不但適用于普通個體學習器(如支持向量機、線性回歸等)的集成,而且也適于集成學習器(如隨機森林、梯度增強等)集成。如上圖可知,隨機森林與梯度提升等集成學習器比線性回歸器的擬合精度要高,而將三者融合后的精度不低于單個回歸器的精度。5513.2應用實例

13.2.2AdaBoost基于Boosting框架的集成學習算法主要有AdaBoost與梯度提升樹兩種。Scikit-learn庫包含用于分類與回歸的AdaBoost模塊,其引入方法如下。fromsklearn.ensembleimportAdaBoostClassifierfromsklearn.ensembleimportAdaBoostRegressor函數(shù)原型如下。AdaBoostClassifier(base_estimator=None,n_estimators=50,learning_rate=1.0,algorithm=’SAMME.R’,random_state=None)AdaBoostRegressor(base_estimator=None,n_estimators=50,learning_rate=1.0,loss=’linear’,random_state=None)5613.2應用實例

13.2.2AdaBoost5713.2應用實例名稱說明base_estimator弱分類或回歸學習器,通常為CART決策樹或者神經(jīng)網(wǎng)絡MLP(默認為決策樹)algorithmAdaboost分類算法有SAMME和SAMME.R兩種(默認為SAMME.R),由于SAMME.R使用概率度量的連續(xù)值,迭代效率一般比SAMME高,因此默認使用SAMME.Rloss損失度量包括線性linear(默認)、平方square和指數(shù)exponential三種n_estimators弱學習器的最大個數(shù)(默認為50);值太小容易欠擬合,太大容易過擬合learning_rate每個弱學習器的權(quán)重縮減系數(shù)(或?qū)W習率),取值范圍為[0,1](默認為1)random_state控制每次boosting迭代中在每個弱學習器處的隨機種子常用參數(shù)13.2.2AdaBoost利用AdaBoost分類器對復雜分布形態(tài)數(shù)據(jù)進行分類。(1)問題描述首先利用make_gaussian_quantiles方法生成仿真實驗數(shù)據(jù),然后構(gòu)建AdaBoost分類器實現(xiàn)樣本分類,具體要求如下。①在相同條件下比較SAMME.R與SAMME兩種算法的收斂速度。②繪制樣本分類邊界。

5813.2應用實例

13.2.2AdaBoost1.導入庫fromsklearn.ensembleimportAdaBoostClassifier#導入AdaBoost分類器模塊fromsklearn.treeimportDecisionTreeClassifier#導入分類決策樹模塊importmatplotlib.pyplotasplt#導入繪圖庫importmatplotlibasmplimportnumpyasnp#導入科學計算庫fromsklearn.metricsimportaccuracy_scorefromsklearn.datasetsimportmake_gaussian_quantilesfromsklearn.model_selectionimporttrain_test_split#導入數(shù)據(jù)劃分模型5913.2應用實例

13.2.2AdaBoost2.構(gòu)建AdaBoost分類器(SAMME.R)#構(gòu)建多類別數(shù)據(jù)x,y=make_gaussian_quantiles(mean=(1,1),cov=2.0,n_samples=1000,n_features=2,n_classes=3,random_state=1)#將數(shù)據(jù)劃分為訓練數(shù)據(jù)與測試數(shù)據(jù)x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3)#構(gòu)建AdaBoost分類器(SAMME.R)ABC_SR=AdaBoostClassifier(DecisionTreeClassifier(max_depth=2),n_estimators=300,learning_rate=1)ABC_SR.fit(x_train,y_train)6013.2應用實例

13.2.2AdaBoost3.構(gòu)建AdaBoost分類器(SAMME)ABC_S=AdaBoostClassifier(DecisionTreeClassifier(max_depth=2),n_estimators=300,learning_rate=1.5,algorithm="SAMME")ABC_S.fit(x_train,y_train)#計算誤差ABC_SR_ERR=[]ABC_S_ERR=[]forABC_SR_predict,ABC_S_predictinzip(ABC_SR.staged_predict(x_test),ABC_S.staged_predict(x_test)):ABC_SR_ERR.append(1.0-accuracy_score(ABC_SR_predict,y_test))ABC_S_ERR.append(1.0-accuracy_score(ABC_S_predict,y_test))6113.2應用實例

13.2.2AdaBoost4.繪制誤差變化曲線plt.figure(2)plt.plot(range(len(ABC_S_ERR)),ABC_S_ERR,"b

",label="SAMME",alpha=0.5)plt.plot(range(len(ABC_SR_ERR)),ABC_SR_ERR,"r",label="SAMME.R",alpha=0.5)plt.ylabel('Error')plt.xlabel('NumberofTrees')plt.legend(loc='best')plt.grid(True)plt.show()6213.2應用實例

13.2.2AdaBoost本例采用make_gaussian_quantiles函數(shù)生成不同類別的樣本相交嵌套的樣本,其分類難度較高。事實上,如左圖所示,AdaBoost分類器仍能表現(xiàn)較好的性能。對于AdaBoost分類器模型的求解方法,SAMME根據(jù)分類器的準確性進行加權(quán),要求基分類器的輸出是離散的,而SAMME.R則通過使用預測類別的概率信息來進行加權(quán),允許基分類器的輸出是實數(shù)值的概率。如右圖所示,SAMME.R算法通常比SAMME收斂得更快且穩(wěn)定性較高。6313.2應用實例13.2.2AdaBoost利用AdaBoost回歸器進行曲線擬合。(1)問題描述首先利用正弦曲線生成仿真實驗數(shù)據(jù),然后構(gòu)建AdaBoost回歸器進行回歸分析并測試其在不同數(shù)量基學習器時的精度;具體要求如下。①比較不同基學習器時AdaBoost回歸器的擬合優(yōu)度。②對不同基學習器時AdaBoost回歸器生成的曲線進行可視化。

6413.2應用實例

13.2.2AdaBoost1.導入庫fromsklearn.ensembleimportAdaBoostRegressor#導入AdaBoost回歸模塊importmatplotlib.pyplotasplt#導入繪圖庫importnumpyasnp#導入科學計算庫fromsklearn.metricsimportr2_score#r2分數(shù)6513.2應用實例

13.2.2AdaBoost2.構(gòu)造數(shù)據(jù)x=np.linspace(0,10,200)x=x.reshape(-1,1)y=np.sin(x).ravel()+np.random.normal(0,0.1,x.shape[0])6613.2應用實例

13.2.2AdaBoost3.測試不同數(shù)量基學習器時AdaBoost回歸器擬合效果AB_R2=[]foriinrange(10):AB=AdaBoostRegressor(n_estimators=(i+1)*10,random_state=0)AB.fit(x,y)AB_R2.append(r2_score(y,AB.predict(x)))6713.2應用實例

13.2.2AdaBoost4.集成不同數(shù)量個體回歸器的擬合效果#1個個體學習器集成AB_1=AdaBoostRegressor(n_estimators=1,random_state=0)AB_1.fit(x,y)y_1=AB_1.predict(x)#100個個體學習器集成AB_2=AdaBoostRegressor(n_estimators=100,random_state=0)AB_2.fit(x,y)y_2=AB_2.predict(x)6813.2應用實例

13.2.2AdaBoost根據(jù)左圖所示結(jié)果可知,隨著基學習器數(shù)量的增加,AdaBoost回歸器的擬合優(yōu)度也隨之增加,表明曲線擬合效果越好。然而,需要注意的是,當基學習器數(shù)量較大時,AdaBoost回歸器模型復雜度較高,則易導致過擬合問題的發(fā)生(嘗試擬合所有樣本),相應的曲線可能由于較大噪聲或異常樣本而出現(xiàn)較大的偏差。此外,由于AdaBoost算法通過增大錯分樣本權(quán)重的方式突出其在弱學習器訓練中的作用,因而易導致噪聲或異常樣本的權(quán)重過大,進而導致其穩(wěn)定性可能受到較大的影響。如右圖所示,較少數(shù)量的基學習器由于欠擬合問題而不易生成較好的曲線,適度數(shù)量的基學習器則可生成較好的結(jié)果。6913.2應用實例

13.2.3梯度提升樹梯度提升樹在損失函數(shù)負梯度的基礎上通過逐步擬合殘差的方式訓練基學習器,由于梯度值是連續(xù)值,因而在構(gòu)建梯度提升樹解決回歸或分類任務時,相應的基學習器均為CART回歸樹。在具體應用中,可通過正則化方法(如學習率、子采樣等)可以控制模型的復雜度以在一定程度上避免過擬合問題的發(fā)生。Scikit-learn庫中梯度提升樹模塊的導入方式如下。fromsklearn.ensembleimportGradientBoostingClassifierfromsklearn.ensembleimportGradientBoostingRegressor函數(shù)原型如下。sklearn.ensemble.GradientBoostingClassifier(loss='deviance',learning_rate=0.1,n_estimators=100,max_depth=3,warm_start=False)sklearn.ensemble.GradientBoostingRegressor(loss='is',learning_rate=0.1,n_estimators=100,max_depth=3,warm_start=False)7013.2應用實例

13.2.3梯度提升樹7113.2應用實例名稱說明n_estimators弱學習器數(shù)量loss損失函數(shù)。對于分類模型,可設置為deviance(似然損失函數(shù))與exponential(指數(shù)損失函數(shù));對于回歸模型,可設置為is(均方差)、lad(絕對損失)、huber(huber損失)與quantile(分位數(shù)損失)learning_rate步長或?qū)W習率(默認為0.1)max_depth決策樹的最大深度(默認為3)常用參數(shù)13.2.3梯度提升樹利用“早期停止”控制梯度提升樹迭代次數(shù)。在梯度提升樹中,可以采用“早期停止”確定最少的迭代次數(shù)?!霸缙谕V埂笔且环N可在模型訓練過程中監(jiān)測模型性能的技術,其在模型性能不再改善時停止模型的訓練,從而避免過擬合問題的發(fā)生。在此過程中,通常利用驗證集計算每次迭代后模型的性能指標(如誤差),如果性能不再改善,則停止訓練,進而確定最佳的迭代次數(shù)。(1)問題描述利用鳶尾花數(shù)據(jù)集、乳腺癌與Hastie數(shù)據(jù)集確定梯度提升樹的最少的迭代次數(shù),具體要求如下。①采用“早期停止”方式確定模型的精度與訓練時間。②在未采用“早期停止”的情況確定模型的精度與訓練時間。③利用柱狀圖比較采用與未采用“早期停止”時模型精度與訓練時間。7213.2應用實例

13.2.3梯度提升樹1.導入庫fromsklearn.model_selectionimporttrain_test_split#導入數(shù)據(jù)劃分模塊importmatplotlib.pyplotasplt#導入繪圖庫importnumpyasnp#導入科學計算庫importtime#導入時間模塊fromsklearn.ensembleimportGradientBoostingClassifier#導入梯度提升樹分類器模塊fromsklearnimportdatasets#導入數(shù)據(jù)集7313.2應用實例

13.2.3梯度提升樹2.構(gòu)建梯度提升樹[非早停]#GB=GradientBoostingClassifier(n_estimators=n_estimators,random_state=0)start=time.time()GB.fit(x_train,y_train)Time_GB.append(time.time()-start)Acc_GB.append(GB.score(x_test,y_test))Num_GB.append(GB.n_estimators_)7413.2應用實例

13.2.3梯度提升樹3.構(gòu)建梯度提升樹[早停]GBES=GradientBoostingClassifier(n_estimators=n_estimators,validation_fraction=0.2,n_iter_no_change=5,tol=0.01,random_state=0)#validation_fraction=0.2是指在訓練過程中將訓練數(shù)據(jù)的20%作為驗證數(shù)據(jù)以用于模型性能的評估;n_iter_no_change=5是指如果在連續(xù)5次迭代中模型的性能沒有提升則停止模型的訓練。

start=time.time()GBES.fit(x_train,y_train)Time_GBES.append(time.time()-start)Acc_GBES.append(GBES.score(x_test,y_test))Num_GBES.append(GBES.n_estimators_)7513.2應用實例

13.2.3梯度提升樹4.梯度提升樹非早停與早停兩種情況下的精度對比bar_width=0.4index=np.arange(0,len(data_list))plt.figure(figsize=(8,4))Bar_GB=plt.bar(index,Acc_GB,bar_width,label='Withoutearlystopping',color='blue')fori,binenumerate(Bar_GB):plt.text(b.get_x()+b.get_width()/2.0,b.get_height(),'n_est=%d'%Num_GB[i],ha='center',va='bottom')Bar_GBES=plt.bar(index+bar_width,Acc_GBES,bar_width,label='Withearlystopping',color='cyan')fori,binenumerate(Bar_GBES):plt.text(b.get_x()+b.get_width()/2.0,b.get_height(),"n_est=%d"%Num_GBES[i],ha="center",va="bottom")plt.xticks(index+bar_width,data_names)plt.yticks(np.arange(0,1.2,0.1))plt.ylim([0,1.2])7613.2應用實例

13.2.3梯度提升樹5.梯度提升樹非早停與早停兩種情況下的時間對比plt.figure(figsize=(8,4))Bar_GB=plt.bar(index,Time_GB,bar_width,label='Withoutearlystopping',color='blue')fori,binenumerate(Bar_GB):plt.text(b.get_x()+b.get_width()/2.0,b.get_height(),'n_est=%d'%Num_GB[i],ha='center',va='bottom')Bar_GBES=plt.bar(index+bar_width,Time_GBES,bar_width,label='Withearlystopping',color='cyan')fori,binenumerate(Bar_GBES):plt.text(b.get_x()+b.get_width()/2.0,b.get_height(),'n_est=%d'%Num_GBES[i],ha='center',va="bottom")max_time=np.amax(np.maximum(Time_GB,Time_GBES))plt.xticks(index+bar_width,data_names)plt.yticks(np.linspace(0,max_time,10))plt.ylim([0,max_time])7713.2應用實例

13.2.3梯度提升樹根據(jù)實驗結(jié)果表明,如上圖所示,在模型訓練過程中,采用“早期停止”時模型訓練時間明顯低于未采用“早期停止”時的模型訓練時間。此外,采用“早期停止”時由于有效控制了模型的復雜度,進而采用較少的基分類器構(gòu)建梯度提升樹,因而相應的精度也高于未采用“早期停止”時梯度提升樹的精度。7813.2應用實例13.2.3梯度提升樹利用梯度提升樹回歸器解決糖尿病預測。梯度提升樹不但可用于求解分類問題,而且可用于求解回歸問題或?qū)μ卣鞯闹匾赃M行評估。本例以糖尿病預測模型構(gòu)建為例介紹其在回歸問題求解中的應用方法。(1)問題描述構(gòu)建梯度提升樹回歸器以對糖尿病進行預測,具體要求如下。①輸出模型訓練時每次迭代訓練數(shù)據(jù)與測試數(shù)據(jù)相應的誤差并繪制相應的變化曲線。②對特征重要性進行評估并可視化。7913.2應用實例

13.2.3梯度提升樹1.導入庫fromsklearn.ensembleimportGradientBoostingRegressor#導入梯度提升樹回歸模塊importmatplotlib.pyplotasplt#導入繪圖庫importnumpyasnp#導入科學計算庫fromsklearnimportdatasets#導入數(shù)據(jù)庫fromsklearn.inspectionimportpermutation_importance#導入特征重要性評估模塊fromsklearn.metricsimportmean_squared_error#導入均方差評價指標模塊fromsklearn.model_selectionimporttrain_test_split#導入數(shù)據(jù)劃分模塊8013.2應用實例

13.2.3梯度提升樹2.訓練梯度提升樹回歸模型#構(gòu)建數(shù)據(jù)集diabetes=datasets.load_diabetes()x,y=diabetes.data,diabetes.target#數(shù)據(jù)處理x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.1,random_state=13)#構(gòu)建梯度提升樹回歸模型params={'n_estimators':500,'max_depth':4,'min_samples_split':5,'learning_rate':0.01,'loss':'squared_error'}GBR=GradientBoostingRegressor(**params)#訓練梯度提升樹回歸模型GBR.fit(x_train,y_train)8113.2應用實例

13.2.3梯度提升樹3.訓練偏差#計算與輸出梯度提升樹回歸模型相應的均方差MSE=mean_squared_error(y_test,GBR.predict(x_test))print('Meansquarederror(MSE):{:.4f}'.format(MSE))#訓練偏差(staged_predict函數(shù)用于返回每個訓練輪次的預測結(jié)果)test_score=np.zeros((params['n_estimators'],),dtype=np.float64)fori,y_predinenumerate(GBR.staged_predict(x_test)):test_score[i]=mean_squared_error(y_test,y_pred)8213.2應用實例

13.2.3梯度提升樹4.特征重要性可視化#基于不純度的特征重要性feature_importance=GBR.feature_importances_sorted_idx=np.argsort(feature_importance)pos=np.arange(sorted_idx.shape[0])+0.5plt.figure(2)plt.barh(pos,feature_importance[sorted_idx],align='center')plt.yticks(pos,np.array(diabetes.feature_names)[sorted_idx])#特征重要性(排列)plt.figure(3)PI=permutation_importance(GBR,x_test,y_test,n_repeats=10,random_state=42,n_jobs=2)sorted_idx=PI.importances_mean.argsort()plt.boxplot(PI.importances[sorted_idx].T,vert=False,labels=np.array(diabetes.feature_names)[sorted_idx])plt.show()8313.2應用實例

13.2.3梯度提升樹8413.2應用實例均方差變化隨著迭代次數(shù)的增加,梯度提升樹的擬合誤差逐漸降低;其中,針對測試數(shù)據(jù)的擬合誤差在開始階段不斷降低,之后則趨于平穩(wěn),表明模型的性能達到一定程度時不再明顯提升,此時可通過“早期停止”方式提前結(jié)束模型的訓練。

13.2.3梯度提升樹8513.2應用實例特征重要性(不純度)特征重要性(排列)對于特征重要性分析,梯度提升性的生成結(jié)果與基于隨機排列的特征重要性分析方法生成的結(jié)果較為相近(如三個最重要的特征均為bmi、s5與bp)。事實上,樹模型依據(jù)不純度的下降判斷特征重要性,而出現(xiàn)過擬合問題時,其結(jié)果可靠性可能會受到一定的影響;此外,樹模型更利用數(shù)值型特征而不利于高基數(shù)類別特征,因而,數(shù)值型特征在重要性排名上更可能靠前。相對而言,基于隨機排列的特征重要性分析方法與模型無關,適用性更廣。需要注意的是,如果特征具有較強的多重共線性,通常只從中選擇一個重要的特征。

13.2.4XGBoostXGBoost是經(jīng)過優(yōu)化的分布式梯度提升庫,具有高效、靈活、可移植較高(可在Hadoop、MPI、Dask等多種分布式環(huán)境上運行)等優(yōu)勢。XGBoost在解決工業(yè)界大規(guī)模數(shù)據(jù)分析及Kaggle數(shù)據(jù)挖掘競賽中應用較廣。在應用XGBoost算法時,應首先安裝XGBoost庫,然后導入相應的分類或回歸模塊,即:fromxgboost.sklearnimportXGBClassifierfromxgboost.sklearnimportXGBRegressor函數(shù)原型如下。XGBClassifier/XGBRegressor(max_depth=3,learning_rate=0.1,n_estimators=100,objective='binary:logistic')8613.2應用實例

13.2.4XGBoost8713.2應用實例名稱說明n_estimators基學習器的數(shù)量learning_rate學習率(默認值為0.3)max_depth構(gòu)建樹的深度(默認值為6)objective需要被最小化的損失函數(shù)常用參數(shù)13.2.4XGBoost利用XGBoost分類器對乳腺癌預測。(1)問題描述利用乳腺癌數(shù)據(jù)構(gòu)建XGBoost分類器以實現(xiàn)乳腺癌病癥的預測,具體要求如下。①通過直接設置基學習器數(shù)的方式構(gòu)建XGBoost分類器。②通過交叉驗證的方式確定最優(yōu)參數(shù)并構(gòu)建相應的XGBoost分類器。③對比以上兩種方式構(gòu)建的XGBoost分類器之間的精度與訓練時間差異。④繪制XGBoost分類器相應的AUC曲線。⑤對特征重要性進行可視化。8813.2應用實例

13.2.4XGBoost1.導入庫importnumpyasnpfromsklearn.datasetsimportload_breast_cancer#導入數(shù)據(jù)庫fromsklearn.model_selectionimporttrain_test_split#導入數(shù)據(jù)劃分模塊importxgboostasxgb#導入xgboost庫fromxgboost.sklearnimportXGBClassifier#導入XGBoost分類模塊importmatplotlib.pyplotasplt#導入繪圖庫fromsklearn.metricsimportroc_auc_score#導入評價指標模塊fromsklearn.metricsimportroc_curvefromxgboostimportplot_importance#導入特征重要性繪制模塊importtime#導入時間模塊8913.2應用實例

13.2.4XGBoost2.加載數(shù)據(jù)Cancer=load_breast_cancer()x=Cancer.data#特征值y=Cancer.target#目標值x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.4,random_state=1)Acc_XGB_1=[]Acc_XGB_2=[]Time_XGB=[]9013.2應用實例

13.2.4XGBoost3.通過直接設置基學習器數(shù)的方式構(gòu)建XGBoost分類器params={'n_estimators':300,'num_class':2,'booster':'gbtree','objective':'multi:softmax','max_depth':5,'colsample_bytree':0.75,'min_child_weight':1,'max_delta_step':0,'seed':0,'gamma':0.15,'learning_rate':0.01}XGB=XGBClassifier(**params)start=time.time()XGB.fit(x_train,y_train,eval_set=[(x_train,y_train),(x_test,y_test)])Time_XGB.append(time.time()-start)9113.2應用實例

13.2.4XGBoost4.通過交叉驗證的方式確定最優(yōu)參數(shù)并構(gòu)建相應的XGBoost分類器dtrain=xgb.DMatrix(x,label=y)xgb_param=XGB.get_xgb_params()XGB_CV=xgb.cv(xgb_param,dtrain,num_boost_round=5000,nfold=3,metrics=['auc'],early_stopping_rounds=10,stratified=True)#更新基學習器數(shù)并重新訓練xgboost分類器XGB.set_params(n_estimators=XGB_CV.shape[0])start=time.time()XGB.fit(x_train,y_train,eval_set=[(x_train,y_train),(x_test,y_test)])Time_XGB.append(time.time()-start)9213.2應用實例

13.2.4XGBoost5.繪制AUC曲線fpr,tpr,T=roc_curve(y_test,XGB.predict(x_test))auc_score=roc_auc_score(y_test,XGB.predict(x_test))plt.plot(fpr,tpr,label=f'AUC={auc_score:.4f}')plt.plot([0,1],[0,1],linestyle='--',color='r',label='RandomClassifier')plt.xlabel('FalsePositiveRate')plt.ylabel('TruePositiveRate')plt.legend()plt.grid(True)plt.show()9313.2應用實例

13.2.4XGBoost利用最優(yōu)基學習器數(shù)(16)構(gòu)建的XGBoost分類器模型訓練時間明顯低于指定基學習器數(shù)(300)相應的XGBoost分類器模型訓練時間,而兩者對應評估指標值基本相同。9413.2應用實例不同基學習器訓練時間差異不同基學習器評估指標差異

13.2.4XGBoost根據(jù)左圖所示的AUC曲線可知,最終的XGBoost分類器模型整體性能較高。此外,如右圖所示,XGBoost分類器可用于評估特征重要性。9513.2應用實例AUC曲線特征重要性

13.2.5隨機森林Bagging框架的代表算法為隨機森林,其在以決策樹作為基學習器的基礎上進一步在基學習器的訓練中引入隨機屬性選擇機制以進一步提高基學習器的多樣性與獨立性。具體而言,構(gòu)建基學習器時,對于其每個節(jié)點,首先從屬性集合(包含d個屬性)中通過隨機選擇的方式生成一個包含k≤d個屬性(通常將k值設置為log_2?d)的屬性子集,再從此屬性子集中選擇一個最優(yōu)屬性用于構(gòu)造該節(jié)點相應的樣本分類判別依據(jù)或函數(shù)。9613.2應用實例

13.2.5隨機森林隨機森林算法的基本步驟如下。第一步:在初始樣本集的基礎上利用隨機采樣技術創(chuàng)建多個采樣集。第二步:利用每個采樣集構(gòu)造基學習器,其中的節(jié)點最優(yōu)判別函數(shù)利用隨機選擇屬性子集確定。第三步:通過特定的組合策略對所有基學習器進行集成以生成最終的強學習器。隨機森林的原理雖然很簡單且易于實現(xiàn),但在實際性能卻很好。一般情況下,其初始誤差比較大,隨著基學習器數(shù)量的增加,最終效果通常會有很大的提高。9713.2應用實例

13.2.5隨機森林Scikit-learn庫包含隨機森林分類與回歸器模塊,其導入方式如下。fromsklearn.ensembleimportRandomForestClassifierfromsklearn.ensembleimportRandomForestRegressor函數(shù)原型如下。RandomForestClassifier(n_estimators=100,criterion='gini',max_depth=None,min_samples_split=2,min_samples_leaf=1,min_weight_fraction_leaf=0.0,max_features=’auto’,max_leaf_nodes=None,min_impurity_decrease=0.0,min_impurity_split=None,bootstrap=True,oob_score=False,n_jobs=1,random_state=None,verbose=0,warm_start=False,class_weight=None)RandomForestReg

溫馨提示

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

評論

0/150

提交評論