不划分训练测试集,如何在含Class标签的数据集上训练Bagging模型?
不划分训练测试集训练Bagging分类器的实现方法
1. 导入依赖库
首先导入处理数据和构建模型所需的工具:
import pandas as pd from sklearn.ensemble import BaggingClassifier from sklearn.tree import DecisionTreeClassifier from sklearn.preprocessing import LabelEncoder
2. 加载与预处理数据
加载数据集,分离特征变量和目标变量Class。由于sklearn分类器要求标签为数值类型,需将Good/Bad转换为数值:
# 加载数据集(替换为你的数据集路径) df = pd.read_csv("your_dataset.csv") # 提取特征与目标变量 X = df[["Age", "Duration", "Amount"]] # 可添加其他自变量列名 y = df["Class"] # 将字符串标签转为数值(Good→1,Bad→0,反之亦然) label_encoder = LabelEncoder() y_encoded = label_encoder.fit_transform(y)
3. 构建并训练Bagging模型
直接使用全量数据集训练,无需划分训练/测试集。Bagging内部会通过bootstrap采样为每个基学习器生成独立训练子集:
# 定义基学习器(以决策树为例,可替换为其他分类器) base_model = DecisionTreeClassifier(max_depth=3, random_state=42) # 初始化Bagging分类器 bagging_model = BaggingClassifier( base_estimator=base_model, n_estimators=100, # 基学习器的数量,可根据需求调整 random_state=42 ) # 用全量数据训练模型 bagging_model.fit(X, y_encoded)
4. 模型预测(可选)
如果需要对全量数据生成预测结果:
# 生成预测 predictions_encoded = bagging_model.predict(X) # 将数值预测转回原标签格式 predictions = label_encoder.inverse_transform(predictions_encoded) # 对比真实标签与预测结果 result_df = pd.DataFrame({ "True Class": y, "Predicted Class": predictions }) print(result_df.head())
关键说明
Bagging算法的核心是通过bootstrap随机采样为每个基学习器创建不同的训练子集,因此即使你输入全量数据集,模型内部也会自动完成采样过程。如果不需要评估模型的泛化能力(比如仅需基于现有全量数据生成预测),直接使用全量数据训练即可,无需拆分训练/测试集。
内容的提问来源于stack exchange,提问作者Cillian Boland
相关产品推荐
相关产品推荐

