如何在 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 中添加回归函数,或者从给定的系数创建一个新的回归函数?的主要内容,如果未能解决你的问题,请参考以下文章

Python数据挖掘—回归—KNN

从逻辑回归系数在python中编写函数

如何从多项式拟合线性回归模型中的给定 Y 值预测 X 值?

Python数模笔记-StatsModels 统计回归线性回归

无法在 Python 中使用散点图正确绘制回归线

从Softmax回归到Logistic回归