一、概述
sklearn.ensemble模塊是scikit-learn庫的一個重要子模塊。它提供了一些常用的集成演算法,如隨機森林、Bagging、Boosting等。集成演算法通過組合多個基分類器(或基回歸模型)來實現更加準確、魯棒的預測結果。sklearn.ensemble模塊封裝了這些演算法,方便用戶快速地構建集成學習模型。
二、隨機森林
隨機森林是集成演算法中的一種。它將多個決策樹組成一個森林,每個決策樹都是基於從原始數據集中隨機抽取的子樣本和特徵集構建的。隨機森林通過投票機制來確定最終的預測結果。
下面是用隨機森林對iris數據集進行分類的示例:
from sklearn.datasets import load_iris from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split # 載入數據 iris = load_iris() X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=42) # 構建模型 rfc = RandomForestClassifier(n_estimators=100, random_state=42) rfc.fit(X_train, y_train) # 預測並評估模型 score = rfc.score(X_test, y_test) print("Accuracy: %f" % score)
在上述代碼中,我們首先載入了iris數據集,並將其分為訓練集和測試集。然後,我們使用RandomForestClassifier類構建了一個隨機森林分類器。在訓練好隨機森林模型後,我們對測試集進行預測,並計算預測準確率。
三、Bagging
Bagging是另一種集成演算法,它通過在原始數據集中隨機抽取一部分樣本來構建多個基分類器。每個基分類器都是使用不同的樣本進行訓練的,並且它們的預測結果通過投票機制來決定最終的預測結果。
下面是用Bagging對digits數據集進行分類的示例:
from sklearn.datasets import load_digits from sklearn.ensemble import BaggingClassifier from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split # 載入數據 digits = load_digits() X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, random_state=42) # 構建模型 bagging = BaggingClassifier(DecisionTreeClassifier(), n_estimators=100, max_samples=0.8, max_features=0.8, random_state=42) bagging.fit(X_train, y_train) # 預測並評估模型 score = bagging.score(X_test, y_test) print("Accuracy: %f" % score)
在上述代碼中,我們首先載入了digits數據集,並將其分為訓練集和測試集。然後,我們使用BaggingClassifier類構建了一個基於決策樹的Bagging分類器。在訓練好Bagging模型後,我們對測試集進行預測,並計算預測準確率。
四、Boosting
Boosting是另一種集成學習演算法,它通過逐步調整樣本的權重來訓練多個弱分類器,並將它們組合成一個強分類器。Boosting演算法通常是按順序進行的,即每個新的基分類器都是在之前的分類器的基礎上訓練出來的。通過不斷提高誤分類樣本的權重,Boosting演算法最終得到的模型比Bagging演算法更加準確。
下面是用AdaBoost對digits數據集進行分類的示例:
from sklearn.datasets import load_digits from sklearn.ensemble import AdaBoostClassifier from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split # 載入數據 digits = load_digits() X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, random_state=42) # 構建模型 ada = AdaBoostClassifier(DecisionTreeClassifier(max_depth=2), n_estimators=600, algorithm="SAMME", learning_rate=0.5, random_state=42) ada.fit(X_train, y_train) # 預測並評估模型 score = ada.score(X_test, y_test) print("Accuracy: %f" % score)
在上述代碼中,我們首先載入了digits數據集,並將其分為訓練集和測試集。然後,我們使用AdaBoostClassifier類構建了一個基於決策樹的AdaBoost分類器。在訓練好AdaBoost模型後,我們對測試集進行預測,並計算預測準確率。
五、總結
sklearn.ensemble模塊提供了常見的集成學習演算法,包括隨機森林、Bagging和Boosting。這些演算法可以幫助我們構建更加準確、魯棒的預測模型。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/311217.html