You need to enable JavaScript to run this app. 使用tf.keras时如何打印多元线性回归模型的预测方程?
优惠活动
大模型
产品
解决方案
定价
更多

使用tf.keras时如何打印多元线性回归模型的预测方程?

提取模型线性预测方程的实操方法

当前搭建的模型为「输入特征→归一化预处理→单神经元全连接输出」的结构,想要得到对应原始输入特征的预测方程,需要分别提取两层的计算参数,合并展开后得到最终表达式。注意不能直接只取全连接层的权重——这部分权重是匹配归一化后特征的,直接套用会和原始输入维度对不上,导致方程结果偏差。

具体操作步骤

  • 提取归一化层的固定参数:调用normalizer.get_weights()可以拿到adapt阶段存储的两个值——每个原始特征的均值、每个原始特征的方差,归一化层对每个特征的转换规则为归一化特征值 = (原始特征值 - 对应均值) / 对应方差的平方根
  • 提取全连接层的可训练参数:取模型第二层(即设置为units=1的Dense层)的权重,这层的计算规则为预测值 = 所有(归一化特征值 × 对应权重) + 层偏置值
  • 将归一化规则代入全连接的计算公式,合并同类项后,就能得到以原始2个特征为自变量的最终预测方程

可直接复用的代码

# 提取归一化层参数
norm_params = normalizer.get_weights()
feat_means, feat_vars = norm_params[0], norm_params[1]

# 提取Dense层参数
dense_params = model.layers[1].get_weights()
dense_w, dense_b = dense_params[0], dense_params[1][0]

# 展开合并为原始特征空间的方程
total_bias = dense_b
feat_coefs = []
for idx in range(len(feat_means)):
    # 计算原始特征对应的实际权重
    orig_coef = dense_w[idx][0] / (feat_vars[idx] ** 0.5)
    feat_coefs.append(orig_coef)
    # 合并归一化带来的常数项到截距里
    total_bias -= feat_means[idx] * orig_coef

# 打印格式化的方程
feat_names = fundingTrainSet.columns.tolist()
equation_str = "标签预测值 = "
for i, (name, coef) in enumerate(zip(feat_names, feat_coefs)):
    equation_str += f"{coef:.4f} × {name}"
    if i != len(feat_names) - 1:
        equation_str += " + "
equation_str += f" + {total_bias:.4f}"
print(equation_str)

注意事项

  • 按上述方法展开的方程,计算结果和模型直接调用model.predict()的输出完全一致,不存在参数偏差
  • 如果后续模型调整了预处理逻辑(比如加了离散特征编码、多层网络),只要顺着数据流向,把每一层的数学运算逐步展开、合并同类项,就能得到最终的表达式

内容的提问来源于stack exchange,提问作者010000010101001101001000010

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.11 18:06:03