如何在 python 中添加回归函数,或者从给定的系数创建一个新的回归函数?
Posted
技术标签:
【中文标题】如何在 python 中添加回归函数,或者从给定的系数创建一个新的回归函数?【英文标题】:How to add regression functions in python, or create a new regression function from given coefficients? 【发布时间】:2014-06-08 12:56:21 【问题描述】:我有一个回归函数,g1(x) = 5x - 1
用于一个数据点。
我还有另一个回归函数,g2(x) = 3x + 4
。
我想添加这两个模型来创建最终回归模型,G(x)
。
这意味着:
G(x) = g1(x) + g2(x)
=> 5x - 1 + 3x + 4
=> 8x +3
我的问题是,如何在 python 中做到这一点?如果我的数据集是X
,我正在使用这样的 statsmodel:
import statsmodels.api as sm
from statsmodels.sandbox.regression.predstd import wls_prediction_std
import numpy as np
mod_wls = sm.WLS(y, X)
res_wls = mod_wls.fit()
print res_wls.params
这给了我适合数据X
的回归函数的系数。
要添加这些函数,我可以轻松地获取每个函数的系数,并将它们相加以获得新回归函数(例如 G(x))的系数。但是现在我有了自己的系数,如何将它们转换为回归函数并使用它们来预测新数据?因为据我所知,模型必须先“拟合”到数据才能用于预测。
或者有什么办法可以直接添加回归函数?我将在我的算法中迭代地添加函数。
【问题讨论】:
【参考方案1】:这个模型生成的预测应该是准确的
np.dot(X_test, res_wls.params)
因此,如果您想对多个模型求和,例如
summed_params = np.array([res_wls.params for res_wls in all_my_res_wls]).sum(axis=0)
你的预测应该是
np.dot(X_test, summed_params)
在这种情况下,不需要使用估算器的内置函数。
【讨论】:
你不是忘记拦截了吗? 非常好的一点 - 我有点偏向于盲目假设数据居中 我很难在合适的sm.WLS
对象中找到一个可以编码截距的变量。文档似乎也没有提到它。我是否遗漏了什么(我不是 statsmodels 专家)?否则我想获得拦截的唯一方法是显式地将ones
列添加到X
help(sm.WLS)
表示“默认情况下不包含拦截 [原文],应由用户添加”。没关系!
这是许多算法/包的标准形状,也是我假设的顺序(我正在添加一个特征,即一列,它是ones
的向量)以上是关于如何在 python 中添加回归函数,或者从给定的系数创建一个新的回归函数?的主要内容,如果未能解决你的问题,请参考以下文章