XGBClassifiler函数介绍
目录
- 前言
- 函数介绍
- 示例
前言
XGBClassifier 是 XGBoost 库中用于分类任务的类。XGBoost 是一种高效且灵活的梯度提升决策树(GBDT)实现,它在多种机器学习竞赛中表现出色,尤其擅长处理表格数据。
函数介绍
XGBClassifiler(max_depth=3,learning_rate=0.1,n_estimators=100,objective='binary:logistic',
booster='gbtree',gamma=0,min_child_weight=1,reg_alpha=0,
reg_lambda=1,missing=None
)
- max_depth;用于指定每个基础模型所包含的最大深度,默认为3层
- learning_rate:用于指定模型迭代的学习率或步长,默认为0.1;即对应的梯度提升模型
F
T
(
x
)
F_T(x)
FT(x)可以表示为:
F T ( x ) = F T − 1 ( x ) + υ f t ( x ) F_T(x) =F_{T-1}(x) + \upsilon f_t(x) FT(x)=FT−1(x)+υft(x),其中的 υ \upsilon υ就是该参数的指定值,默认值为1;对于较小的学习率 υ \upsilon υ而言,则需要迭代更多次的基础分类器,通常情况下需要利用交叉验证法确定合理的基础模型的个数和学习率。 - n_estimators:用于指定基础模型的数量,默认为100个。
- object:用于指定目标函数中的损失函数类型,对于分类型的XGBoost算法,默认的损失函数为二分类的Logistic损失(模型返回概率值),也可以是’multi:softmax’表示用于处理多分类的损失函数(模型返回类别值),还可以是’multi:softprob’,与’multi:softmax’相同,所不同的是模型返回各类别对应的概率值;对于预测型的XGBoost算法,默认的损失函数为线性回归损失。
- booster:用于指定基础模型的类型,默认为’gbtree’,即CART模型,也可以是’gblinear’,表示基础模型为线性模型。
- gamma:用于指定节点分割所需的最小损失函数的下降值,即增益值Gain的阈值,默认为0;
- min_child_weight:用于指定叶子节点中各样本点二阶导之和的最小值,即H_i的最小值,默认为1,该参数的值越小,模型越容易过拟合。
- reg_alpha:用于指定L1正则项的系数,默认为0;
- reg_lambda:用于指定L2正则项的系数,默认为1;
- missing:用于指定缺失值的表示方法,默认为None,表示NaN即为默认值。
示例
import xgboost as xgb
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加载数据
data = load_iris()
X, y = data.data, data.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 初始化 XGBClassifier
model = xgb.XGBClassifier(use_label_encoder=False, eval_metric='mlogloss')
# 训练模型
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy*100:.2f}%")