Python機器學習 第5部分 整合學習

2021-08-14 18:30:58 字數 2704 閱讀 7156

將不同的分類器組合成元分類器,得到更好的泛化效能,穩定性和準確性更好。在訓練和**中,最終結果採用多數投票原則。元分類器中每個子分類器都參與分類,最終結果採用少數服從多數的方式獲取。整合學習可將決策樹、支援向量機、邏輯斯蒂回歸等方法整合在一起。

1、多數投票分類器----votingclassifier

from xgboost.sklearn import xgbclassifier

from sklearn.ensemble import randomforestclassifier

from sklearn import svm

from sklearn.svm import svc

clf1 = xgbclassifier(learning_rate =0.1, n_estimators=140, max_depth=1,min_child_weight=2, gamma=0, subsample=0.7, colsample_bytree=0.6,objective= 'binary:logistic', nthread=4, scale_pos_weight=1)

clf2 = randomforestclassifier(n_estimators=50,max_depth=1,min_samples_split=4,min_samples_leaf=54,oob_score=true)

clf3 = svc(c=0.1,probability=true)

from sklearn.ensemble import votingclassifier

from sklearn.model_selection import cross_val_score

eclf = votingclassifier(estimators=[('xgb', clf1), ('rf', clf2), ('svc', clf3)], voting='hard')

for clf, label in zip([clf1, clf2, clf3, eclf], ['xgbboosting', 'random forest', 'svm', 'ensemble']):

scores = cross_val_score(clf, x, y, cv=5, scoring='accuracy')

print("accuracy: %0.2f (+/- %0.2f) [%s]" % (scores.mean(), scores.std(), label))

2、bagging分類器----基於bootstrap抽樣的整合分類器

bagging分類器可以指定乙個子分類器及其個數,在訓練時將採用bootstrap(有放回)隨機抽樣分別訓練子分類器,得到多個子模型。**時每個子模型都得出結論,最後少數服從多數得到**結果。

from sklearn.ensemble import baggingclassifier

tree = decisiontreeclassifier(criterion = 'entropy',

max_depth = none)

bag = baggingclassifier(base_estimator = tree, #這裡還可以指定其他分類器,如感知器、支援向量機、邏輯斯蒂回歸等

n_estimators = 500, #子分類器個數

max_sample=1.0,

max_feature=1.0,

bootstrap=true,

bootstrap_features=false,

n_jobs=-1,

random_state = 1) #random_state引數指定分類器訓練時使用的隨機演算法的隨機種子

bag.fit(x_train, y_train)

y_pred = bag.predict(x_test)

隨機森林演算法是bagging的乙個特例。baggin分類器與子分類器的準確率更高,降低過擬合程度。到計算成本較高。

3、自適應boosting----adaboost

在boosting中,整合分類器中包含多個簡單成員分類器,這些成員分類器效能僅僅稍好於隨機猜測--弱學習機(如單層決策樹),boostring主要使用分類錯誤的樣本來訓練弱學習機,進而提高整合分類的效能。

from sklearn.ensemble import adaboostclassifier

tree = decisiontreeclassifier(criterion = 'entropy',

max_depth = none)

ada = adaboostclassifier(base_estimator = tree, #這裡還可以指定其他分類器,如感知器、支援向量機、邏輯斯蒂回歸等

n_estimators = 500, #子分類器個數

learning_rate=0.1,

random_state = 1) #random_state引數指定分類器訓練時使用的隨機演算法的隨機種子

ada = ada.fit(x_train, y_train)

y_train_pred = ada.predict(x_train)

y_test_pred = ada.predict(x_test)

accuracy_score(y_train, y_train_pred) #得到訓練集上準確率

accuracy_score(y_test, y_test_pred) #得到測試集上準確率

機器學習理論 第1部分 機器學習基礎

對於機器學習演算法也使用了一段時間,現在進行乙個系統的學習和總結,也給自己補缺補差,回頭來看,發現對於機器學習的理解更加的清晰,更加有條理,在整體的思路上的把握也更加的完善,所以建議對於機器學習的學習一定要多實踐,多回頭檢視 監督學習 在監督學習中,我們只需要給定輸入樣本集,機器就可以從中推測出指定...

BPMN 第5部分 訊息

訊息是乙個基本的 bpmn概念,是不同流程參與者之間通訊的內容。通訊本身稱為訊息流。它顯示了兩個通訊參與者之間的互動,他們由兩個單獨的池表示。訊息流必須將兩個單獨的池或乙個池的物件與另乙個池的物件連線。它無法連線乙個池中的兩個物件。從圖形上看,訊息流是帶有開啟箭頭的虛線。虛線將其與 序列流 區分開來...

docker集群部署 第5部分 堆疊

docker集群部署 第5部分 堆疊 介紹在第4部分 服務中,我們學習了如何設定swarm 集群 如執行docker集群 部署了乙個應用程式,容器在多台機器上執行等。在第5部分 堆疊中,將到達分布式應用程式層次結構的頂部 堆疊。堆疊是一組相互關聯的服務,它們可以共享依賴關係,並且可以一起協調和縮放。...