極限梯度提升 eXtreme Gradient Boosting(XGBoost) ,被稱為 Kaggle 競賽神器,常常第一名都是使用這個演算法。先來前情提要一下樹的發展(開始上生物課XD?)


從下圖可以發現,XGBoost 相比其他演算法的優點是訓練速度快、準確率也高 -> 總而言之 快、狠、準

pip install xgboost
from xgboost import XGBClassifier
classifier = XGBClassifier(n_estimators=1000, learning_rate= 0.01)
classifier.fit(X_train, y_train)
y_pred = classifier.predict(X_test)
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
print(cm)
>>> [[59  8]
     [ 5 28]]
from sklearn.metrics import classification_report
print(classification_report(y_test, y_pred))

# 我們可以畫特徵的重要程度
from xgboost import plot_importance
plot_importance(classifier)
print('每個特徵重要程度: ', classifier.feature_importances_)
>>> 每個特徵重要程度:  [0.49414912 0.50585085]

請先安裝 graphviz
mac 安裝
brew install graphviz 
或是安裝
pip install graphviz
from xgboost import plot_tree
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(30, 30))
plot_tree(classifier, ax=ax)
plt.savefig('xgboost_tree.png')
plt.show()

更詳細可以請參考連結