如何绘制多自变量Logistic回归模型的Logistic函数?
多特征Logistic回归模型的概率函数绘制方法
你的猜想完全正确,多特征Logistic模型的核心是**线性组合值(即logit值)**与概率的映射关系,x轴确实对应 intercept + iv1*coeff1 + iv2*coeff2 + iv3*coeff3(基于标准化特征计算的线性组合)。下面是具体实现方案:
方法1:绘制全局logit值与概率的映射曲线
这是最直接体现Logistic函数本质的绘图方式:
- 计算样本的logit值并生成连续取值区间
# 计算训练集所有样本的线性组合值(logit) X_train_logit = clf.decision_function(X_train) # 生成覆盖样本logit范围的连续序列 logit_xp = np.linspace(X_train_logit.min(), X_train_logit.max(), 100)
- 将logit值转换为预测概率
# 用sigmoid函数(expit)将logit映射到概率 from scipy.special import expit prob_yp = expit(logit_xp) # 也可以用模型的predict_proba方法(需将logit转成特征格式) # prob_yp = clf.predict_proba(logit_xp.reshape(-1, 1))[:, 1]
- 绘制曲线
import matplotlib.pyplot as plt plt.plot(logit_xp, prob_yp) plt.xlabel('线性组合值(logit)') plt.ylabel('正类预测概率') plt.title('多特征Logistic回归的概率函数') plt.show()
方法2:展示单个特征对概率的影响(控制其他特征)
如果想直观看到某一特征(比如iv1)对概率的影响,可以固定其他特征为均值/中位数等典型值,只变化目标特征:
# 固定iv2、iv3为标准化后的均值(即0) fixed_iv2 = 0 fixed_iv3 = 0 # 生成iv1的原始尺度连续取值 iv1_xp = np.linspace(df[iv1].min(), df[iv1].max(), 100).reshape(-1, 1) # 构造包含固定特征的标准化输入 iv1_xp_scaled = sclr.transform(np.hstack([ iv1_xp, np.full((100, 1), fixed_iv2), np.full((100, 1), fixed_iv3) ])) # 计算预测概率并绘图 prob_yp_iv1 = clf.predict_proba(iv1_xp_scaled)[:, 1] plt.plot(iv1_xp, prob_yp_iv1) plt.xlabel('iv1(原始尺度)') plt.ylabel('正类预测概率(iv2、iv3取均值)') plt.title('iv1对预测概率的影响(控制其他特征)') plt.show()
内容的提问来源于stack exchange,提问作者metanoia
相关产品推荐
相关产品推荐

