【集成学习】sklearn中xgboost模块的XGBClassifier函数

常规参数

booster
    gbtree 树模型做为基分类器(默认)
    gbliner 线性模型做为基分类器
silent
    silent=0时,不输出中间过程(默认)
    silent=1时,输出中间过程
nthread
    nthread=-1时,使用全部CPU进行并行运算(默认)
    nthread=1时,使用1个CPU进行运算。
scale_pos_weight
    正样本的权重,在二分类任务中,当正负样本比例失衡时,设置正样本的权重,模型效果更好。例如,当正负样本比例为1:10时,scale_pos_weight=10。

模型参数

n_estimatores
    含义:总共迭代的次数,即决策树的个数
    调参:
early_stopping_rounds
    含义:在验证集上,当连续n次迭代,分数没有提高后,提前终止训练。
    调参:防止overfitting。
max_depth
    含义:树的深度,默认值为6,典型值3-10。
    调参:值越大,越容易过拟合;值越小,越容易欠拟合。
min_child_weight
    含义:默认值为1,。
    调参:值越大,越容易欠拟合;值越小,越容易过拟合(值较大时,避免模型学习到局部的特殊样本)。
subsample
    含义:训练每棵树时,使用的数据占全部训练集的比例。默认值为1,典型值为0.5-1。
    调参:防止overfitting。
colsample_bytree
    含义:训练每棵树时,使用的特征占全部特征的比例。默认值为1,典型值为0.5-1。
    调参:防止overfitting。

学习任务参数

learning_rate
    含义:学习率,控制每次迭代更新权重时的步长,默认0.3。
    调参:值越小,训练越慢。
    典型值为0.01-0.2。
objective 目标函数
    回归任务
        reg:linear (默认)
        reg:logistic 
    二分类
        binary:logistic     概率 
        binary:logitraw   类别
    多分类
        multi:softmax  num_class=n   返回类别
        multi:softprob   num_class=n  返回概率
    rank:pairwise 
eval_metric
    回归任务(默认rmse)
        rmse--均方根误差
        mae--平均绝对误差
    分类任务(默认error)
        auc--roc曲线下面积
        error--错误率(二分类)
        merror--错误率(多分类)
        logloss--负对数似然函数(二分类)
        mlogloss--负对数似然函数(多分类)

gamma
    惩罚项系数,指定节点分裂所需的最小损失函数下降值。
    调参:
alpha
    L1正则化系数,默认为1
lambda
    L2正则化系数,默认为1

代码主要函数:

载入数据:load_digits()
数据拆分:train_test_split()
建立模型:XGBClassifier()
模型训练:fit()
模型预测:predict()
性能度量:accuracy_score()
特征重要性:plot_importance()
### 结合使用 XGBoost、Pandas 和 Scikit-Learn 进行机器学习建模 为了实现高效的机器学习建模流程,可以利用 Pandas 处理数据,Scikit-Learn 提供工具链(如特征工程和模型评估),以及 XGBoost 实现高性能的梯度提升树模型。 #### 数据预处理阶段 在实际应用中,通常会先通过 `pandas` 加载并清洗数据。例如: ```python import pandas as pd df = pd.read_csv('data.csv') ``` 如果需要计算某些统计量(比如按性别分组后的年龄中位数),可以通过如下方式完成[^2]: ```python grouped = df.groupby(['gender']).agg({'age': 'median'}) print(grouped) ``` 接着,将数据划分为特征矩阵 (`X`) 和目标向量 (`y`) 并转换为 NumPy 数组形式以便后续操作[^1]: ```python X = df.drop(columns=['target']) y = df['target'] X_train, X_test, y_train, y_test = train_test_split(X.values, y.values, test_size=0.2, random_state=42) ``` 这里我们假设已经导入了必要的模块: ```python from sklearn.model_selection import train_test_split ``` #### 建立管道 (Pipeline) 阶段 构建完整的流水线有助于简化工作流,并确保一致性和可扩展性。下面是一个简单的例子,展示如何集成标准化器与分类器到一起[^4]: ```python from sklearn.pipeline import Pipeline from sklearn.preprocessing import StandardScaler from xgboost import XGBClassifier pipeline = Pipeline([ ('scaler', StandardScaler()), ('classifier', XGBClassifier(use_label_encoder=False, eval_metric='logloss')) ]) ``` 此代码片段定义了一个包含两个步骤的流水线:首先是标准缩放变换;其次是基于 XGBoost 的二元或多元分类器实例化对象。 #### 训练与验证阶段 调用 `.fit()` 方法即可启动训练过程。对于大规模无法一次性加载入内存的数据集,则可通过多次迭代读取子批次来逐步更新参数——即所谓的在线/增量学习模式[^3]。不过需要注意的是,在当前设置下,默认情况下整个训练样本会被送入一次拟合过程中去调整权重系数。 最后一步就是衡量预测性能指标,常用均方根误差(RMSE)作为回归任务中的损失函数之一: ```python pipeline.fit(X_train, y_train) predictions = pipeline.predict(X_test) rmse = np.sqrt(mean_squared_error(y_test, predictions)) print(f'Root Mean Squared Error: {rmse}') ``` 其中还需要引入额外的支持库来进行数值运算: ```python from sklearn.metrics import mean_squared_error import numpy as np ``` 以上便是结合 XGBoost、Pandas 及 Scikit-Learn 构建端到端解决方案的主要思路概览。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值