本文主要记录学习xgboost时的学习笔记。同时b站上有一个博主的视频讲的非常好,也推荐给大家,本文既是建立在这个视频的基础上进行学习以及记录。
传送:Xgboost躺懂
以下为Xgboost学习时的思维导图。(与视频中相比缺少了系统设计的模块)
以下为精确贪婪算法的伪代码示例:摘自xgboost好文
η是一个超参,一般选取为0.1,用于防止模型的过拟合风险。
以下并附上Xgboost代码处理:
import math
import matplotlib.pyplot as plt
from xgboost import XGBClassifier
# 这是Sklearn API的实现方式
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error,roc_curve,auc,confusion_matrix
import seaborn as sns
iris_data = datasets.load_iris()
x_data = iris_data.data
y_data = iris_data.target
x_train,x_test,y_train,y_test = train_test_split(x_data,y_data,train_size=0.8,shuffle=True) # 加载数据集
xgb_rg = XGBClassifier(
n_estimators = 20,
max_depth = 5,
learning_rate = 0.1
) # 分别为迭代次数,树最大深度,以及学习率的设置
# 以下就是训练过程,训练时可以采用边训练边测试的方式
xgb_rg.fit(x_train,y_train,eval_set = [(x_train,y_train),(x_test,y_test)])
ypred = xgb_rg.predict(x_test)
math.sqrt(mean_squared_error(ypred,y_test))
# 开始绘制roc曲线 --->由于这里是做的回归任务,不用绘制roc曲线
# fpr,tpr,_ = roc_curve(y_test,ypred,pos_label=2)
# roc_auc = auc(fpr,tpr)
# plt.figure(1)
# plt.plot(fpr,tpr,'k--',label = 'roc-auc{:.2f}'.format(roc_auc))
# plt.plot([0,1],[0,1],'--',c = 'red')
# plt.show()
# 绘制混淆矩阵
# confusion = confusion_matrix(y_test,ypred)
# print('The confusion_matrix result is {}'.format(confusion))
# plt.figure(figsize=(5,4))
# sns.heatmap(confusion,annot=True,cmap='Blues')
# plt.xlabel('Predicted labels')
# plt.ylabel('True labels')
# plt.show()
以上代码根据已有的iris数据集进行分类分析,最终绘制roc曲线以及混淆矩阵进行模型评估。