日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sklearn快速入门教程:(五)集成学习

發布時間:2025/4/16 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sklearn快速入门教程:(五)集成学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

sklearn快速入門教程–(五)集成學習

一、集成學習簡述

集成學習是目前各類競賽和工程中應用最廣泛的模型提升方法。比如在kaggle中就有關于集成學習的介紹(Kaggle模型融合原文)。這里所謂的模型融合實際上主要就是集成學習方法。

常見的集成學習有以下幾種:

  • Boosting
  • Bagging
  • Stacking

其中boosting和bagging應用最多。比如目前流行的xgboost就是(gradient)boosting的一種,而random forest則是bagging的一種。

二、集成學習的兩種主要思路

各種集成學習的思路不盡相同,尤其對于初學者通常一看到集成學習的理論都會很頭疼。那么要快速學會集成學習的使用,就先要對其關鍵的思路有所了解。

顧名思義,集成學習是將多個模型放在一起,通過某種方式將其組合起來,從而得到一個統一的預測模型。自然地,在集成之前就要有基本的模型用于集成。目前所用的集成學習模式主要分為兩種:

  • 采用同一基模型,在樣本的不同子集上進行訓練,從而得到對應的多個不同的具體模型。這類學習方法的代表就是boosting, bagging。
  • 采用多種基模型,在同一樣本上進行訓練,將多個模型組合起來得到具體模型。voting和stacking都是采用這類方式。

明白這一點之后其實就很容易分析sklearn中的對應方法了,對單一模型對應的方法,它的語法通常是這樣:

ensemble_method(estimator,**args)

這里estimator是指sklearn中的基模型,比如Tree,LinearRegression等都屬于這一類型,而**args則表示其它參數。結合上一教程中的內容不難想到,這個estimator實際上就是一種通用模式,也就是說它只要屬于這一類型,其它的方面就可以完全自由設定。比如我想用一個SVC來進行集成,同時又想指定它的核函數,那么就可以直接將SVC(kernel='rbf')傳入函數。這種靈活的操作方式會給我們各類改進和提升提供便利。

而對于多個模型通常是這樣:

ensemble_method(estimators,**args)

注意這里是estimators,也就是多個模型。那么很自然地想到多個模型肯定是以集合的形式輸入。事實上在sklearn中,這里是用列表表示多個模型,而每個模型則由其名稱和實體類型來表示。比如:

estimators = [('lr', RidgeCV()),('svr', LinearSVR(random_state=42))]

可想而知,如果有更多的模型,則直接在列表中繼續加入即可。

三、單一模型集成 - - 以Adaboost為例

這里我們以iris數據集作為樣本,將100個Logistic Regression模型用Adaboost集成起來。

from sklearn.model_selection import cross_val_score from sklearn.datasets import load_iris from sklearn.ensemble import AdaBoostClassifier from sklearn.linear_model import LogisticRegressionX, y = load_iris(return_X_y=True) clf = AdaBoostClassifier(LogisticRegression(), n_estimators=100) clf.fit(X,y) clf.predict(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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2,2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 1, 1, 2, 2, 2, 2,2, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2])

可以看到,在sklearn中實現這樣的集成學習是非常簡單的,只需要一句代碼即可。訓練和預測和直接使用機器學習模型是完全一樣的語法。這一點也是sklearn中一個亮點,它盡最大可能減小了程序員去背工具模式的工作,從而可以將更多精力集中在問題本身。

四、多模型集成 - - 以Voting例

Voting是一種多模型集成的常用方法,它先將多個模型進行投票,再按照投票結果對模型進行組合。這里我們以iris數據集為基礎,將Logistic Regression, 高斯樸素貝葉斯和隨機森林進行集成。

from sklearn import datasets from sklearn.model_selection import cross_val_score from sklearn.linear_model import LogisticRegression from sklearn.naive_bayes import GaussianNB from sklearn.ensemble import RandomForestClassifier from sklearn.ensemble import VotingClassifieriris = datasets.load_iris() X, y = iris.data[:, 1:3], iris.targetclf1 = LogisticRegression(random_state=1) clf2 = RandomForestClassifier(n_estimators=50, random_state=1) clf3 = GaussianNB()eclf = VotingClassifier(estimators=[('lr', clf1), ('rf', clf2), ('gnb', clf3)],voting='hard')for clf, label in zip([clf1, clf2, clf3, eclf], ['Logistic Regression', 'Random Forest', 'naive Bayes', 'Ensemble']):scores = cross_val_score(clf, X, y, scoring='accuracy', cv=5)print("Accuracy: %0.2f (+/- %0.2f) [%s]" % (scores.mean(), scores.std(), label))

運行結果:

Accuracy: 0.95 (+/- 0.04) [Logistic Regression] Accuracy: 0.94 (+/- 0.04) [Random Forest] Accuracy: 0.91 (+/- 0.04) [naive Bayes] Accuracy: 0.95 (+/- 0.04) [Ensemble]

如上文所述,在sklearn中對多個模型進行集成時是將多個模型實例傳給集成方法,源碼中的第16行即是如此。

五、小結

本文簡要介紹了sklearn中集成學習的使用方法,從基模型的角度上可以簡單地將方法分為兩類,從而快速掌握兩類方法的基本使用。以下小結了sklearn中對應的方法和模型類型:

方法名稱基模型
Adaboost單個模型
Bagging單個模型
Gradient boost決策樹
Voting多個模型
Staking多個模型

在本文的基礎上,強烈建議再去學習Kaggle模型融合原文 ,此時在文中提到的各類集成方法其實都可以用sklearn中的方法進行實現了。而仔細學完這篇文章,參加各類競賽的入門級標準也就基本達到了。

sklearn的快速入門到此就結束。當然這個系列只是一個簡單的入門教程,涉及的模型和方法都非常有限,要想掌握更多的方法,更有效地解決自己的問題,則需要耐心地長期積累。

  • sklearn快速入門教程:(一)準備工作

  • klearn快速入門教程:(二)線性回歸

  • sklearn快速入門教程:(三)機器學習的通用模式及實現方法

  • sklearn快速入門教程:(四)模型自動調參

總結

以上是生活随笔為你收集整理的sklearn快速入门教程:(五)集成学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。