99网
您的当前位置:首页sklearn实现XGBoost模型训练,预测并实现可视化

sklearn实现XGBoost模型训练,预测并实现可视化

来源:99网

xgboost的原理:

参考链接:

1.准备数据集

这利用的是经典的乳腺癌数据集,56数据,30种特征。
乳腺癌数据集:

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%左右

因篇幅问题不能全部显示,请点此查看更多更全内容