sklearn拟合模型的总和

问题描述 投票:0回答:1

我正在尝试进行涉及两个拟合模型之和的操作,以使输出为另一个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,它会起作用,但我看不到一种方法这个。

python scikit-learn linear-regression
1个回答
1
投票

因为您这样做的原因是“它们只是具有相同功能的不同数据集”,所以我建议您仅附加数据集并在所有数据上创建一个模型。

但是,如果由于某些原因无法实现,您可以通过将第三个线性模型的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)方法,根据两个线性模型项的组合平均值进行预测。

但是,这种方法存在危险,例如,如果用于拟合原始模型的一个数据集比另一个数据集大得多,则较小的数据集的截距和系数项将在组合模型中过重,并且在对截距和系数项求平均时,您可能需要进行一些加权。

© www.soinside.com 2019 - 2024. All rights reserved.