Сумма подогнанных моделей со склеарном - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь сделать что-то, что включает взятие суммы двух подогнанных моделей так, чтобы на выходе был другой объект типа LinearRegression. Я установил две модели, используя стандартный метод LinearRegression от sklearn.

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, используя их, это будет работать, но Я не мог найти способ сделать это.

1 Ответ

1 голос
/ 19 февраля 2020

Поскольку ваша причина заключается в том, что «это просто разные наборы данных с одинаковыми функциями», я бы порекомендовал просто добавить наборы данных и создать одну модель для всех данных.

Но если по какой-то причине это невозможно, вы можете сделать это вручную, задав для атрибутов 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) как обычно, чтобы делать прогнозы на основе комбинированных средних значений для двух линейных моделей.

Однако в этом подходе есть опасности, если для Например, один из наборов данных, используемых для подгонки к исходным моделям, намного больше, чем другой, тогда в объединенной модели члены перехвата и коэффициента меньшего набора данных будут перевешены, и вы, вероятно, захотите сделать некоторое взвешивание при усреднении перехвата. и коэффициент слагаемых.

...