我正在尝试进行涉及两个拟合模型之和的操作,以使输出为另一个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_1
和reg_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)
方法,根据两个线性模型项的组合平均值进行预测。
但是,这种方法存在危险,例如,如果用于拟合原始模型的一个数据集比另一个数据集大得多,则较小的数据集的截距和系数项将在组合模型中过重,并且在对截距和系数项求平均时,您可能需要进行一些加权。