期刊配图:Python实现逻辑回归列线图绘制与模型预测阈值显示

机器学习大模型数据库

picture.image

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

本节介绍: Python实现逻辑回归列线图绘制与模型预测阈值显示 。数据采用模拟数据,作者根据个人对机器学习的理解进行代码实现与图表输出,细节并不保证与原文一定相同,仅供参考。 详细数据和代码、文献将在稍后上传至交流群,付费成员可在交流群中获取下载。需要的朋友可关注公众文末提供的购买方式。 购买前请咨询,避免不必要的问题。

✨ 论文原图 ✨

picture.image

列线图的作用是通过将多个预测因子的权重和评分可视化,帮助直观地评估不同变量对最终风险的影响,并基于该评分计算预测风险

✨ 仿图 ✨

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"Dataset.csv"  
df = pd.read_csv(path)  
from sklearn.model_selection import train_test_split  
  
# 划分特征和目标变量  
X = df.drop(['target'], axis=1)    
y = df['target']    
# 划分训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(  
    X,    
    y,   
    test_size=0.3,   
    random_state=42,   
    stratify=df['target']   
)  
from sklearn.linear_model import LogisticRegression  
  
log_reg = LogisticRegression(random_state=42)  
log_reg.fit(X_train, y_train)  
y_pred = log_reg.predict(X_test)

使用逻辑回归模型对一个数据集进行训练,首先通过划分训练集和测试集来准备数据,然后用训练集训练逻辑回归模型,并用测试集进行预测。接下来,可以用该模型来绘制 列线图

  
# 输出模型的系数和截距  
coefficients = log_reg.coef_  
intercept = log_reg.intercept_  
# 获取模型的训练精度  
train_accuracy = log_reg.score(X_train, y_train)  
# 获取模型的测试精度  
test_accuracy = log_reg.score(X_test, y_test)  
print("Logistic Regression Model Detailed Information:")  
print(f"Intercept: {intercept}")  
print(f"Coefficients: {coefficients}")  
print("\nModel Evaluation:")  
print(f"Train Accuracy: {train_accuracy:.4f}")  
print(f"Test Accuracy: {test_accuracy:.4f}")

picture.image

输出逻辑回归模型的详细信息,包括截距和系数,及其在训练集和测试集上的准确度。截距和系数提供了模型如何根据每个特征做出预测的详细信息,而训练和测试精度则帮助评估模型在不同数据集上的表现,验证其泛化能力

接下来,整理模型的截距值和系数,以便用于绘制列线图,直观展示每个特征对预测结果的贡献

  
# 创建特征名列表,包含截距和其他特征  
features = ['intercept'] + X.columns.tolist()  
  
# 获取模型的系数,包括截距  
coefficients = [log_reg.intercept_[0]] + list(log_reg.coef_[0])  
  
# 获取每个特征的min和max值,截距没有min和max值,所以设置为空  
min_values = [''] + list(X.min())  
max_values = [''] + list(X.max())  
  
# 将新列添加到原始DataFrame  
df_features = pd.DataFrame({  
    'feature': features,  
    'coef': coefficients,  
    'min': min_values,  
    'max': max_values,  
})  
  
# 定义分类型特征  
categorical_features = ['sex', 'cp', 'fbs', 'restecg', 'exang', 'slope', 'ca', 'thal']  
  
# 自动识别每个特征的数据类型  
feature_types = [''] + ['nominal' if feature in categorical_features else 'continuous' for feature in X.columns]  
  
# 将新列添加到原始DataFrame  
df_features = pd.DataFrame({  
    'feature': features,  
    'coef': coefficients,  
    'min': min_values,  
    'max': max_values,  
    'type': feature_types,  
})  
df_features['position'] = [''] * len(df_features)  # 用空字符串填充所有行  
df_features

picture.image

这段代码就具体的整理了逻辑回归模型的截距值、系数、特征的最小值和最大值,并根据特征的类型(分类型或连续型)自动标记每个特征的数据类型

  
# 创建 'threshold' 行,系数为 0.5  
threshold_row = pd.DataFrame({  
    'feature': ['threshold'],  
    'coef': [0.5],  
    'min': [''],  
    'max': [''],  
    'type': [''],  
    'position':['']  
})  
  
# 找到 'intercept' 行的索引  
intercept_index = df_features[df_features['feature'] == 'intercept'].index[0]  
# 将 'threshold' 行插入到 'intercept' 行之后  
df_features = pd.concat([df_features.iloc[:intercept_index+1], threshold_row, df_features.iloc[intercept_index+1:]]).reset_index(drop=True)  
df_features

picture.image

在数据框中插入一个名为 threshold 的新行,并将其位置设置在 intercept 行之后,系数为 0.5。这个阈值行展示了分类模型的预测概率阈值,通常用于确定预测结果为正类的判定标准,默认情况下,对于分类模型,阈值通常为 0.5,后续将在列线图中呈现这个预测概率阈值,这也是这个列线图可视化的一个特点

最终将这些信息存储在一个DataFrame中,以便用于后续的列线图绘制(这也是接下来采用函数接收的数据格式)

  
import simpleNomo as sn  
import warnings  
# 忽略所有警告  
warnings.filterwarnings("ignore")  
  
# 将特征数据框保存为Excel文件  
df_features.to_excel('template.xlsx', index=False)  
  
# 设定路径和绘图  
path = "template.xlsx"  # 读取输入文件的路径,这里是存储特征的Excel文件  
  
# 调用 simpleNomo 库中的 nomogram 函数,生成列线图  
fig = sn.nomogram(  
    path=path,  # 数据文件路径  
    result_title="Risk",  # 图表标题  
    fig_width=10,  # 图表宽度(单位:英寸)  
    single_height=0.45,  # 每个单元(特征)的高度(单位:英寸)  
    dpi=1200,  # 图表分辨率,DPI越高图像越清晰,适合打印时使用  
    ax_para={  
        "c": "black",  # 坐标轴的颜色,"black"表示黑色  
        "linewidth": 1.3,  # 坐标轴线条的宽度  
        "linestyle": "-"  # 坐标轴线条的样式,"-"表示实线  
    },  
    tick_para={  
        "direction": 'in',  # 刻度的方向,'in'表示刻度指向内侧  
        "length": 3,  # 刻度的长度,3表示长度为3个单位  
        "width": 1.5  # 刻度的宽度,1.5表示宽度为1.5个单位  
    },  
    xtick_para={  
        "fontsize": 10,  # x轴刻度标签的字体大小  
        "fontfamily": "Times New Roman",  # x轴刻度标签的字体,"Times New Roman"  
        "fontweight": "bold"  # x轴刻度标签的字体加粗  
    },  
    ylabel_para={  
        "fontsize": 12,  # y轴标签的字体大小  
        "fontname": "Times New Roman",  # y轴标签的字体,"Times New Roman"  
        "labelpad": 100,  # y轴标签与图表的距离,100表示相对较大的间距  
        "loc": "center",  # y轴标签位置,"center"表示居中  
        "color": "black",  # y轴标签颜色,"black"表示黑色  
        "rotation": "horizontal"  # y轴标签的旋转角度,"horizontal"表示水平显示  
    },  
    total_point=100  # 设置nomogram的总分值为100  
)  
  
# 保存为PDF  
fig.savefig('nomogram_output_1.pdf', format='pdf', dpi=1200)  # 将图表保存为PDF文件,分辨率为1200 DPI

picture.image

使用simpleNomo库生成一个带有模型预测概率阈值的列线图,直观展示了各特征对最终预测结果的贡献,并将图表保存为PDF文件,图表样式包括坐标轴、刻度、标签字体等的定制设置

上面展示的列线图是默认的预测阈值,接下来可以进一步通过计算约登指数(TSS)来确定最优的预测概率阈值,优化分类模型的预测效果

picture.image

根据该模型,通过计算约登指数,确定了最优的预测阈值为0.46,并将其可视化到列线图上,以便直观展示该阈值在预测结果中的作用

picture.image

✨ 该文章案例 ✨

picture.image

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

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

✨ 购买介绍 ✨

本节介绍到此结束,有需要学习数据分析和Python机器学习相关的朋友欢迎到淘宝店铺:Python机器学习AI,或添加作者微信deep_ML联系,购买作者的公众号合集。截至目前为止,合集已包含200多篇文章,购买合集的同时,还将提供免费稳定的AI大模型使用,包括但不限于ChatGPT、Deepseek、Claude等。

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

✨ 群友反馈 ✨

picture.image

✨ 淘宝店铺 ✨

picture.image

请大家打开淘宝扫描上方的二维码,进入店铺,获取更多Python机器学习和AI相关的内容,或者添加作者微信deep_ML联系 避免淘宝客服漏掉信息 ,希望能为您的学习之路提供帮助!

往期推荐

Frontiers in Oncology:利用生存机器学习RSF模型预测患者预后模拟实现

期刊配图:相关系数+统计显著性的饼图可视化 美无需多言

期刊配图:通过SHAP组图解读模型探索不同类型特征和分组对模型的影响

机器学习在临床数据分析中的应用:从数据预处理到Web应用实现的完整流程教学

期刊配图:一区SCI常用数据缺失率展示图可视化

Psychiatry Research基于SHAP可解释性的机器学习模型构建与评估:混淆矩阵、ROC曲线、DCA与校准曲线分析

因果推断:注册行为对后续消费影响的因果推断分析案例

nature communications:基于Light GBM与随机森林结合的多模型特征选择方法

因果推断与机器学习结合:探索酒店预订取消的影响因素

期刊配图:回归模型性能与数据分布(核密度)可视化

picture.image

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

欢迎关注、点赞、转发~

个人观点,仅供参考

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
字节跳动 XR 技术的探索与实践
火山引擎开发者社区技术大讲堂第二期邀请到了火山引擎 XR 技术负责人和火山引擎创作 CV 技术负责人,为大家分享字节跳动积累的前沿视觉技术及内外部的应用实践,揭秘现代炫酷的视觉效果背后的技术实现。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论