Умножение строки DF на коэффициенты
Я хочу сохранить коэффициенты модели statsmodels.api для будущего использования (поэтому мне не нужно каждый раз запускать модель). Когда я получаю новый фрейм данных, для которого я хочу сделать прогноз, я хочу иметь возможность умножать каждую строку фрейма данных на коэффициенты (то есть model.params). Затем я бы суммировал результаты для каждой строки * коэффициентов, чтобы получить прогноз для этой строки. Тем не менее, это не работает для меня, когда я пытаюсь:
preds = []
for row in df.iterrows():
preds.append((model.params*row).sum())
Изменить: пример
ДФ:
Height Weight Color
6 5 3
6 2 4
9 1 9
10 3 3
коэффициенты:
Высота: -1.6403
Вес: 2.0435
Цвет: 300,4532
2 ответа
Решение
Я хотел бы рассмотреть что-то вроде:
df.dot(model.params)
Это вычисляет точечный продукт в каждой из строк DataFrame.
Кажется, вам нужно:
coeff_dict = {
'Height': -1.6403,
'Weight': 2.0435,
'Color': 300.4532
}
df.assign(prediction=df.assign(**coeff_dict).mul(df).sum(axis=1))
Выход:
Height Weight Color prediction
0 6 5 3 901.7353
1 6 2 4 1196.0580
2 9 1 9 2691.3596
3 10 3 3 891.0871