將不同的分類器組合成元分類器,得到更好的泛化效能,穩定性和準確性更好。在訓練和**中,最終結果採用多數投票原則。元分類器中每個子分類器都參與分類,最終結果採用少數服從多數的方式獲取。整合學習可將決策樹、支援向量機、邏輯斯蒂回歸等方法整合在一起。
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部分 堆疊中,將到達分布式應用程式層次結構的頂部 堆疊。堆疊是一組相互關聯的服務,它們可以共享依賴關係,並且可以一起協調和縮放。...