期刊配图:堆叠柱状图展示训练与测试的准确率、误差对比

机器学习算法数据库

picture.image

✨ 欢迎关注Python机器学习AI ✨

本节介绍:堆叠柱状图展示训练与测试的准确率、误差对比,数据采用模拟数据无任何现实意义 ,作者根据个人对机器学习的理解进行代码实现与图表输出,仅供参考。 完整 数据和代码将在稍后上传至交流群,成员可在交流群中获取下载。需要的朋友可关注公众文末提供的获取方式。文末提供高效的AI工具~!

✨ 论文信息 ✨

picture.image

picture.image

图2展示通过十折交叉验证评估的多种机器学习算法(包括随机森林、朴素贝叶斯、线性判别分析、支持向量机、人工神经网络、二次判别分析和k近邻算法)的性能。每种算法的性能通过堆叠柱状图显示

  • 训练准确率(以红色标记)和测试准确率(以绿色标记)分别表示模型在训练集和测试集上的预测精度
  • 训练误差(以粉红色标记)和测试误差(以灰色标记)分别表示模型在训练集和测试集上的预测误差

每个算法的四个性能指标被堆叠展示,帮助直观对比各算法在不同数据集(训练集和测试集)上的表现差异,同时也可以判断模型是否存在过拟合或者欠拟合

过拟合是指模型在训练数据上表现很好,但在新数据或测试数据上表现较差,通常是由于模型过于复杂,捕捉了训练数据中的噪声(如这里的模型LDA等);欠拟合则是指模型无法很好地拟合训练数据,导致训练集和测试集上的表现都较差,通常表现为测试集比训练集性能好,通常是因为模型过于简单,无法捕捉数据中的关键模式(如这里LibSVM),仿图如下:

picture.image

根据文献配图的模拟实现,此类图表不仅可以用来展示准确率和误差,还可以扩展到其他评估指标,如AUC值,用于更加全面地比较模型在不同数据集上的表现,当然回归模型一些评价指标同样适用

picture.image

✨ 基础代码实现 ✨

  
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-9-18公众号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=250918,   
    stratify=df['Electrical_cardioversion']   
)  
from sklearn.model_selection import cross_val_score  
from sklearn.ensemble import RandomForestClassifier  
from sklearn.linear_model import LogisticRegression  
from sklearn.svm import SVC  
from sklearn.tree import DecisionTreeClassifier  
from sklearn.neighbors import KNeighborsClassifier  
  
# 构建模型  
rf_model = RandomForestClassifier(random_state=250918)  
lr_model = LogisticRegression(random_state=250918)  
svm_model = SVC(random_state=250918, probability=True)  
dt_model = DecisionTreeClassifier(random_state=250918)  
knn_model = KNeighborsClassifier()

加载数据集,划分训练集和测试集,使用五种不同的机器学习模型(随机森林、逻辑回归、支持向量机、决策树和k近邻)进行训练(实际运用中伴随着k折交叉验证、参数调整等),并准备获取各模型的评价指标(如准确率、误差等),最终用于模拟绘图展示模型性能

  
# 定义一个函数计算模型成绩  
def evaluate_model(model, X_train, X_test, y_train, y_test):  
    # 在训练集上训练模型  
    model.fit(X_train, y_train)  
  
    # 计算训练集和测试集准确率  
    train_score = model.score(X_train, y_train)  
    test_score = model.score(X_test, y_test)  
  
    # 计算错误率  
    train_error = 1 - train_score  
    test_error = 1 - test_score  
  
    return train_score, test_score, train_error, test_error  
  
# 创建空的 DataFrame 用于存储结果  
results = pd.DataFrame(columns=["Train Accuracy", "Test Accuracy", "Train Error", "Test Error"])  
  
# 评估每个模型并存储结果  
models = [  
    ('RF', rf_model),  
    ('LR', lr_model),  
    ('SVM', svm_model),  
    ('DT', dt_model),  
    ('KNN', knn_model)  
]  
  
for model_name, model in models:  
    train_acc, test_acc, train_err, test_err = evaluate_model(model, X_train, X_test, y_train, y_test)  
    results.loc[model_name] = [train_acc, test_acc, train_err, test_err]  
  
  
results

picture.image

定义一个函数来评估多个机器学习模型的训练准确率、测试准确率、训练误差和测试误差

  
# 设置柱状图的宽度和位置  
bar_width = 0.2  
index = np.arange(len(results))  
# 绘制柱状图  
plt.figure(figsize=(10, 6))  
plt.bar(index - 1.5 * bar_width, results['Train Accuracy'], bar_width, label='Train Accuracy', color='#FFB6C1')  # Light Pink  
plt.bar(index - 0.5 * bar_width, results['Test Accuracy'], bar_width, label='Test Accuracy', color='#98FB98')  # Pale Green  
plt.bar(index + 0.5 * bar_width, results['Train Error'], bar_width, label='Train Error', color='#AFEEEE')  # Pale Turquoise  
plt.bar(index + 1.5 * bar_width, results['Test Error'], bar_width, label='Test Error', color='#D8BFD8')  # Thistle  
plt.xlabel('Model', fontsize=14)  
plt.ylabel('Scores', fontsize=14)  
plt.xticks(index, results.index, fontsize=12, fontweight='bold')  
plt.yticks(fontsize=12)  
plt.legend()  
plt.tight_layout()  
plt.savefig("Scores.pdf", format='pdf', bbox_inches='tight', dpi=1200)  
plt.show()

picture.image

这里为最基础的绘制一个堆叠柱状图,比较多个模型的训练准确率、测试准确率、训练误差和测试误差,优化堆叠形式就可以得到下面的模型比较结果更美观

picture.image

  
from sklearn.metrics import roc_auc_score  
  
# 定义一个函数计算模型的AUC值及错误率  
def evaluate_model_auc(model, X_train, X_test, y_train, y_test):  
    # 在训练集上训练模型  
    model.fit(X_train, y_train)  
  
    # 获取模型预测概率  
    train_pred_prob = model.predict_proba(X_train)[:, 1]  # 取正类的预测概率  
    test_pred_prob = model.predict_proba(X_test)[:, 1]  # 取正类的预测概率  
  
    # 计算训练集和测试集的AUC值  
    train_auc = roc_auc_score(y_train, train_pred_prob)  
    test_auc = roc_auc_score(y_test, test_pred_prob)  
  
    # 计算训练集和测试集的错误率  
    train_error = 1 - train_auc  
    test_error = 1 - test_auc  
  
    return train_auc, test_auc, train_error, test_error  
  
# 创建空的 DataFrame 用于存储结果  
results_auc = pd.DataFrame(columns=["Train AUC", "Test AUC", "Train Error", "Test Error"])  
  
# 评估每个模型并存储结果  
models = [  
    ('RF', rf_model),  
    ('LR', lr_model),  
    ('SVM', svm_model),  
    ('DT', dt_model),  
    ('KNN', knn_model)  
]  
  
for model_name, model in models:  
    train_auc, test_auc, train_error, test_error = evaluate_model_auc(model, X_train, X_test, y_train, y_test)  
    results_auc.loc[model_name] = [train_auc, test_auc, train_error, test_error]  
  
results_auc

picture.image

定义一个函数来评估多个模型的训练和测试AUC值及错误率,并进行和文献类似的可视化,同理F1值等评价指标都可以进行该可视化

picture.image

当然,公众号中还有更多机器学习期刊实战技巧,您可以通过历史文章进行检索和阅读,关注公众号,点击“发信息”>“历史文章”即可搜索公众号所有文章信息

picture.image

✨ 该文章案例 ✨

picture.image

在上传至交流群的文件中,像往期文章一样,将对案例进行逐步分析,确保读者能够达到最佳的学习效果。内容都经过详细解读,帮助读者深入理解模型的实现过程和数据分析步骤,从而最大化学习成果。

同时,结合提供的免费AI聚合网站进行学习,能够让读者在理论与实践之间实现融会贯通,更加全面地掌握核心概念。

✨ 书籍推荐 ✨

无论你是零编程基础的科研新手,还是想提升机器学习技能的医学科研工作者,这本书都能带你从入门到进阶,掌握Python数据分析+医学AI应用的全流程技能

✨ 介绍 ✨

本节介绍到此结束,有需要学习数据分析和Python机器学习相关的朋友欢迎到淘宝店铺:Python机器学习AI,下方提供淘宝店铺二维码获取作者的公众号合集。截至目前为止,合集已包含近300多篇文章,购买合集的同时,还将提供免费稳定的AI大模型使用。

更新的内容包含数据、代码、注释和参考资料。 作者仅分享案例项目,不提供额外的答疑服务。项目中将提供详细的代码注释和丰富的解读,帮助您理解每个步骤 。 获取 前请咨询,避免不必要的问题。

✨ 群友反馈 ✨

picture.image

✨ 淘宝店铺 ✨

picture.image

请大家打开淘宝扫描上方的二维码,进入店铺,获取更多Python机器学习和AI相关的内容 ,希望能为您的学习之路提供帮助!

✨ AI工具推荐 ✨

picture.image

往期推荐

期刊配图:模型SHAP解释特征类别柱状图、饼图与蜂巢图的组合展示

期刊复现:基于自动机器学习的预测模型构建及其残差和部分依赖分析

期刊复现:SVM、RF、BDT、DT、Logit五大模型堆叠31种组合情况最优模型的SHAP解释

期刊复现:单变量特征降维与共线性分析结合RFE集成排名进行特征筛选下的组合拳流程

期刊复现:SVM、RF、BDT、DT、Logit五大模型堆叠31种组合情况优化与最优模型选择可视化

期刊复现:基于相关系数与AUC值优化特征选择剔除冗余特征精简模型(附代码)

期刊复现:如何正确使用LASSO进行二分类特征选择?避开常见误区,掌握实用技巧

期刊复现:融合聚类与多分类转二分类的亚型可解释SHAP机器学习模型构建

期刊复现:基于LightGBM、XGBoost与RF的Lasso回归堆叠模型在连续和分类特征上的模型解释

期刊复现:基于LightGBM、XGBoost与RF的堆叠模型贝叶斯优化调参与Lasso回归元模型,结合10倍交叉验证

picture.image

如果你对类似于这样的文章感兴趣。

欢迎关注、点赞、转发~

个人观点,仅供参考

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
大规模高性能计算集群优化实践
随着机器学习的发展,数据量和训练模型都有越来越大的趋势,这对基础设施有了更高的要求,包括硬件、网络架构等。本次分享主要介绍火山引擎支撑大规模高性能计算集群的架构和优化实践。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论