Как генерировать много терминов взаимодействия в Pandas?
Я хотел бы оценить IV регрессионная модель, использующая множество взаимодействий с годом, демографией и т. д. манекены. Я не могу найти явный метод для этого в пандах, и мне любопытно, есть ли у кого-нибудь советы.
Я думаю попробовать scikit-learn и эту функцию:
http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.PolynomialFeatures.html
2 ответов
теперь я столкнулся с аналогичной проблемой, когда мне нужен был гибкий способ создания конкретных взаимодействий и просматривал StackOverflow. Я последовал совету в комментарии выше @user333700 и благодаря ему нашел Пэтси (http://patsy.readthedocs.io/en/latest/overview.html) и после поиска Google это scikit-learn интеграции patsylearn (https://github.com/amueller/patsylearn).
так переживает пример @motam79, это возможно:
import numpy as np
import pandas as pd
from patsylearn import PatsyModel, PatsyTransformer
x = np.array([[ 3, 20, 11],
[ 6, 2, 7],
[18, 2, 17],
[11, 12, 19],
[ 7, 20, 6]])
df = pd.DataFrame(x, columns=["a", "b", "c"])
x_t = PatsyTransformer("a:b + a:c + b:c", return_type="dataframe").fit_transform(df)
возвращает следующее:
a:b a:c b:c
0 60.0 33.0 220.0
1 12.0 42.0 14.0
2 36.0 306.0 34.0
3 132.0 209.0 228.0
4 140.0 42.0 120.0
Я ответил на аналогичный вопрос здесь, где я приведу еще один пример с категориальными переменными: как можно создать матрицу проектирования взаимодействия из категориальных переменных?
Вы можете использовать функцию PolynomialFeatures sklearn по. Вот пример:
предположим, это ваша матрица дизайна (т. е. функции):
x = array([[ 3, 20, 11],
[ 6, 2, 7],
[18, 2, 17],
[11, 12, 19],
[ 7, 20, 6]])
x_t = PolynomialFeatures(2, interaction_only=True, include_bias=False).fit_transform(x)
вот результат:
array([[ 3., 20., 11., 60., 33., 220.],
[ 6., 2., 7., 12., 42., 14.],
[ 18., 2., 17., 36., 306., 34.],
[ 11., 12., 19., 132., 209., 228.],
[ 7., 20., 6., 140., 42., 120.]])
первые 3 функции являются исходными функциями, а следующие три являются взаимодействиями исходных функций.