sklearn實現XGBoost模型訓練,預測並實現可視化

xgboost的原理:

參考鏈接:xgboost原理介紹

1.準備數據集

這利用的是經典的乳腺癌數據集,568條數據,30種特徵。
乳腺癌數據集:breast_cancer.csv

import pandas as pd
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.metrics import accuracy_score
from xgboost import XGBClassifier
from xgboost import plot_importance
from xgboost import plot_tree
from sklearn import metrics
#1.訓練集和測試集準備
df = pd.read_csv('../data/data/breast_cancer.csv')
 #label
print(df.loc[:,"label"])
label = df.loc[:,"label"]
 #特徵
print(df.iloc[:,:30])
features = df.iloc[:,:30]
#分訓練集測試集
X_train, X_test, y_train, y_test = train_test_split(features, label, test_size=0.2, random_state=3)

2.訓練模型

sklearn提供了各種機器學習算法的接口,實現算法更爲簡易,當然建議在應用sklearn還有其他之前還是得好好推公式,寫原生代碼。

#2.訓練模型
model = XGBClassifier(learning_rate=0.01,
                      n_estimators=10,           # 樹的個數-10棵樹建立xgboost
                      max_depth=4,               # 樹的深度
                      min_child_weight = 1,      # 葉子節點最小權重
                      gamma=0.,                  # 懲罰項中葉子結點個數前的參數
                      subsample=1,               # 所有樣本建立決策樹
                      colsample_btree=1,         # 所有特徵建立決策樹
                      scale_pos_weight=1,        # 解決樣本個數不平衡的問題
                      random_state=27,           # 隨機數
                      slient = 0
                      )
model.fit(X_train,y_train)

3.模型可視化:

這裏直接用導師matplot,你也可以用graphviz庫

plot_tree(model)
plt.show()

4.預測模型

y_test, y_pred = y_test, model.predict(X_test)
print("Accuracy : %.4g" % metrics.accuracy_score(y_test, y_pred))
y_train_proba = model.predict_proba(X_train)[:,1]
print("AUC Score (Train): %f" % metrics.roc_auc_score(y_train, y_train_proba))
y_proba = model.predict_proba(X_test)[:,1]
print("AUC Score (Test): %f" % metrics.roc_auc_score(y_test, y_proba))

結果:
這裏用的是auc模型評價指標

Accuracy : 0.9123
AUC Score (Train): 0.995224
AUC Score (Test): 0.923986

可以看出準確率在91%左右

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章