我正在尝试做的事情涉及将两个拟合模型的和求和,以使输出是另一个LinearRegression类型的对象。我已经使用sklearn的标准LinearRegression方法拟合了这两个模型。
reg = reg_1 + reg_2
我希望能够产生类似的东西
reg.predict(X3)
这样我仍然可以执行诸如
之类的标准操作reg_1
是否有一种简单的方法可以做到,显然我可以同时获得reg_2
和reg
的系数,因此,如果我可以使用它们来定义from z3 import *
a, b, c, d = Ints("a b c d")
o = Optimize()
list = [1,2,3,4,5,6,7,8]
vars = [a, b, c, d]
for v in vars:
o.add(Or([v == e for e in list]))
o.add(Distinct(*vars))
goal = Int("goal")
o.add(goal == a+b+c+d)
o.maximize(goal)
if o.check() == sat:
print o.model()
else:
print "not satisfiable"
,它会起作用,但我无法没有找到一种方法。
答案 0 :(得分:1)
因为您这样做的原因是“它们只是具有相同功能的不同数据集”,所以我建议您简单地追加数据集并在所有数据上创建一个模型。
但是,如果由于某种原因无法实现,您可以通过将第三线性模型的message
和coef_
属性手动设置为前两个平均值的方式来做到这一点,例如:< / p>
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_])
方法,根据两个线性模型项的组合平均值进行预测。
尽管这种方法存在危险,例如,如果用于拟合原始模型的一个数据集远大于另一个模型,则较小的数据集的截距和系数项将在组合模型中过重,并且您可能希望在对截距和系数项求平均时进行一些加权。