Умножение строки 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
Другие вопросы по тегам