✨ 欢迎关注Python机器学习AI ✨
本节介绍: 平衡bagging分类器(BBC):解决数据不平衡的集成学习方法 。数据采用模拟数据,作者根据个人对机器学习的理解进行代码实现与图表输出,细节并不保证与原文一定相同,仅供参考。 详细数据和代码将在稍后上传至交流群,付费成员可在交流群中获取下载。需要的朋友可关注公众文末提供的购买方式。 购买前请咨询,避免不必要的问题。
✨ 论文信息 ✨
文献中提到,平衡Bagging分类器(BBC)是从传统的Bagging算法派生出来的,旨在解决训练样本中类别不平衡的问题。在BBC中,多个基分类器通过自助采样法(Bootstrap sampling)进行训练,样本从原始数据集中随机选择并允许重复选择。与传统的Bagging不同,BBC在采样过程中确保每个基分类器的训练数据中包含相等数量的每个类别的样本。这一平衡机制使得BBC能够同时学习多数类和少数类,从而有效提高了模型在处理类别不平衡数据集时的性能,尤其是在少数类的预测准确性上。
✨ 代码实现 ✨
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'Times New Roman'
plt.rcParams['axes.unicode_minus'] = False
import warnings
# 忽略所有警告
warnings.filterwarnings("ignore")
path = r"2025-4-14公众号Python机器学习AI.xlsx"
df = pd.read_excel(path)
from sklearn.model_selection import train_test_split
# 划分特征和目标变量
X = df.drop(['Electrical_cardioversion'], axis=1)
y = df['Electrical_cardioversion']
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
X,
y,
test_size=0.3,
random_state=42,
stratify=df['Electrical_cardioversion']
)
from imblearn.ensemble import BalancedBaggingClassifier
from sklearn.metrics import balanced_accuracy_score
# 创建平衡Bagging分类器
bbc = BalancedBaggingClassifier(
n_estimators=100, # 基学习器的数量,通常设置为较高的值,100个基学习器是常见选择
random_state=0, # 随机种子,确保每次运行的结果可复现
sampling_strategy="auto", # 采样策略。'auto' 表示对少数类别进行过采样,使其与多数类别的样本数量一致
replacement=True, # 在过采样时是否允许重复采样样本,True表示允许
bootstrap=True, # 是否采用自助采样法,True表示使用自助采样法
)
# 训练模型
bbc.fit(X_train, y_train)
使用平衡Bagging分类器(BBC)对数据进行训练,采用了自助采样法(bootstrap=True)并对少数类别进行过采样(sampling_strategy="auto"),通过100个基学习器(n_estimators=100)来提高模型对类别不平衡数据的预测能力,保证训练集中的类别分布平衡,random_state=0确保结果可复现
plot\_confusion\_matrix(bbc, X\_test, y\_test, 'BalancedBaggingClassifier', pdf\_filename= "BalancedBaggingClassifier.pdf")
混淆矩阵展示使用平衡Bagging分类器(BBC)在不平衡数据集上的分类结果。图中的“NO”和“YES”代表目标变量“Electrical_cardioversion”的两个类别。在预测结果中,73.1%的真实为“NO”样本被正确分类为“NO”,而26.9%被错误地预测为“YES”。对于“YES”类别,88.0%的样本被正确预测为“YES”,而12.0%的样本则被错误地分类为“NO”
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
# 创建默认的Bagging分类器
bgc = BaggingClassifier(
n_estimators=100, # 基学习器的数量,通常设置为较高的值,100个基学习器是常见选择
random_state=0, # 随机种子,确保每次运行的结果可复现
bootstrap=True, # 是否采用自助采样法,True表示使用自助采样法
)
# 训练模型
bgc.fit(X_train, y_train)
plot_confusion_matrix(bgc, X_test, y_test, 'Bagging', pdf_filename= "Bagging.pdf")
这是 默认的BaggingClassifier模型混淆矩阵,对比平衡Bagging分类器(BBC)和默认的BaggingClassifier模型,可以发现BBC表现出更优的处理类别不平衡数据集的能力。BBC通过在训练过程中平衡类分布,显著提高了少数类“YES”的预测准确率(88.0%),而误分类率仅为12.0%。相比之下,默认的BaggingClassifier在少数类“YES”上的预测准确率较低,仅为68.0%,误分类率高达32.0%。这表明,BBC通过过采样技术有效缓解了类别不平衡问题,提升了对少数类的识别能力,而BaggingClassifier在面对不平衡数据时则存在较大的识别偏差
对于这个数据集,往期的文章利用平衡随机森林分类器(BRF)也进行过实验——平衡随机森林分类器(BRF):解决数据不平衡的集成学习方法,其性能略优于当前的平衡Bagging分类器(BBC),但需要强调的是,模型没有绝对的好坏之分,只有最适合当前数据的模型,任何模型都无法一招鲜吃遍天
✨ 该文章案例 ✨
在上传至交流群的文件中,像往期文章一样,将对案例进行逐步分析,确保读者能够达到最佳的学习效果。内容都经过详细解读,帮助读者深入理解模型的实现过程和数据分析步骤,从而最大化学习成果。
同时,结合提供的免费AI聚合网站进行学习,能够让读者在理论与实践之间实现融会贯通,更加全面地掌握核心概念。
✨ 购买介绍 ✨
本节介绍到此结束,有需要学习数据分析和Python机器学习相关的朋友欢迎到淘宝店铺:Python机器学习AI,或添加作者微信deep_ML联系,购买作者的公众号合集。截至目前为止,合集已包含200多篇文章,购买合集的同时,还将提供免费稳定的AI大模型使用,包括但不限于ChatGPT、Deepseek、Claude等。
更新的内容包含数据、代码、注释和参考资料。 作者仅分享案例项目,不提供额外的答疑服务。项目中将提供详细的代码注释和丰富的解读,帮助您理解每个步骤 。 购买前请咨询,避免不必要的问题。
✨ 群友反馈 ✨
✨ 淘宝店铺 ✨
请大家打开淘宝扫描上方的二维码,进入店铺,获取更多Python机器学习和AI相关的内容,或者添加作者微信deep_ML联系 避免淘宝客服漏掉信息 ,希望能为您的学习之路提供帮助!
往期推荐
Frontiers in Oncology:利用生存机器学习RSF模型预测患者预后模拟实现
期刊配图:通过SHAP组图解读模型探索不同类型特征和分组对模型的影响
机器学习在临床数据分析中的应用:从数据预处理到Web应用实现的完整流程教学
Psychiatry Research基于SHAP可解释性的机器学习模型构建与评估:混淆矩阵、ROC曲线、DCA与校准曲线分析
nature communications:基于Light GBM与随机森林结合的多模型特征选择方法
如果你对类似于这样的文章感兴趣。
欢迎关注、点赞、转发~
个人观点,仅供参考