繁体   English   中英

使用 sklearn 拟合模型的总和

[英]Sum of fitted models with sklearn

我正在尝试做一些涉及对两个拟合模型求和的事情,以便输出是另一个 LinearRegression 类型的对象。 我使用 sklearn 的标准 LinearRegression 方法拟合了这两个模型。

from sklearn.linear_model import LinearRegression

reg_1 = LinearRegression().fit(X1, y)
reg_2 = LinearRegression().fit(X2, y)

我希望能够生产出类似的东西

reg = reg_1 + reg_2

这样我仍然可以执行标准操作,例如

reg.predict(X3)

有没有一种简单的方法可以做到这一点,显然我可以获得reg_1reg_2的系数,所以如果我可以使用这些来定义reg ,它会起作用,但我看不到这样做的方法。

由于您这样做的原因是“它们只是具有相同特征的不同数据集”,因此我建议您简单地附加数据集并在所有数据上创建一个模型。

但是,如果由于某种原因这是不可能的,您可以通过将第三个线性模型的coef_intercept_属性手动设置为前两个的平均值来实现,例如:

reg = LinearRegression()
reg.coef_ = np.array([np.mean(t) for t in zip(reg_1.coef_, reg_2.coef_)])
reg.intercept_ = np.mean([reg_1.intercept_, reg_2.intercept_])

然后,您可以像往常一样使用reg.predict(X3)方法从 2 个线性模型项的组合平均值进行预测。

但是,这种方法存在危险,例如,如果用于拟合原始模型的数据集之一比另一个大得多,那么较小数据集的截距和系数项将在组合模型中过重,您将可能想在平均截距和系数项时做一些加权。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM