You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于系数与新数据两个DataFrame手动计算模型预测值?

计算观测数据的预测值:Pandas DataFrame操作方案

嘿,这事儿其实很简单,用Pandas就能轻松搞定!我给你两种实用的方法,你可以根据自己的习惯选:

先准备示例数据(对应你的情况)

首先,先把你的两个DataFrame用代码还原出来,方便后续演示:

import pandas as pd

# 特征系数DataFrame
coef_df = pd.DataFrame({
    'feature': ['intercept', 'a', 'b', 'c'],
    'coefficient': [2.5, 0.5, 0.8, 1.7]
})

# 全新观测数据DataFrame
new_data_df = pd.DataFrame({
    'a': [1, 0],
    'b': [0, 1],
    'c': [2, 3]
})

方法一:直接提取系数计算(直观易懂)

这种方法适合特征少的情况,直接把每个系数取出来,然后按公式计算:

# 提取截距和各特征系数
intercept = coef_df.loc[coef_df['feature'] == 'intercept', 'coefficient'].iloc[0]
a_coef = coef_df.loc[coef_df['feature'] == 'a', 'coefficient'].iloc[0]
b_coef = coef_df.loc[coef_df['feature'] == 'b', 'coefficient'].iloc[0]
c_coef = coef_df.loc[coef_df['feature'] == 'c', 'coefficient'].iloc[0]

# 计算每个观测的预测值
new_data_df['prediction'] = intercept + a_coef * new_data_df['a'] + b_coef * new_data_df['b'] + c_coef * new_data_df['c']

运行后new_data_df会新增一列prediction,结果是:

abcprediction
1026.4
0138.4

方法二:用矩阵乘法(灵活扩展)

如果以后你的特征变多,这种方法不用修改代码,更高效:

# 把系数DataFrame转成以feature为索引的Series
coef_series = coef_df.set_index('feature')['coefficient']

# 截距单独拿出来,剩下的特征系数和观测数据做矩阵乘法,再加截距
new_data_df['prediction'] = coef_series['intercept'] + new_data_df.dot(coef_series.drop('intercept'))

这里的dot()方法会自动把每行的a、b、c值和对应的系数相乘后求和,再加上截距,结果和方法一完全一致。

注意事项

  • 确保coef_df里除了intercept之外的feature名称,和new_data_df的列名完全一致,不然矩阵乘法会报错。
  • 如果你的系数DataFrame很大,方法二的效率会更高,因为它用了Pandas的向量化操作,比逐列计算快很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 07:07:32