Как идентифицировать профили пользователей на основе значений выходного приростаPython

Программы на Python
Ответить
Anonymous
 Как идентифицировать профили пользователей на основе значений выходного прироста

Сообщение Anonymous »

В настоящее время я изучаю алгоритм причинного леса на Python. В упражнении мне нужно оценить маркетинговую кампанию, в которой определенная группа пользователей уже получила купоны. Учитывая, что Y — это список расходов каждого пользователя, T — это список двоичных значений, которые представляют, получил ли пользователь купон, а X — это список характеристик пользователей, включая, например, их средние расходы за месяц, категорию продуктов, которые они предпочитают просматривать или покупать, и так далее. X — это список списков, и предположительно каждый элемент в X достаточно специфичен, чтобы охарактеризовать пользователя. Ниже приведен код, который обучает модель причинного леса и выводит список значений подъема. Тогда этот подсписок пользователей станет лучшей целевой группой для получения купонов.

Код: Выделить всё

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import RandomForestRegressor
from econml.dml import CausalForestDML

x_data = pd.read_csv('users_data.csv')

Y = x_data['total_cost'].values

X = x_data[['total_view_counts', 'total_view_days', 'daily_view_max_avg_price', 'daily_add_cart_avg_price', 'total_order_count', 'acc_total_cost', 'view_category_days_percentage']].values

T = x_data['is_coupon'].values

X_train, X_test, Y_train, Y_test, T_train, T_test = train_test_split(X, Y, T, test_size=0.2, stratify = T, random_state=42)

cf_model = CausalForestDML(
model_y = RandomForestRegressor(n_estimators=100, max_depth=5),
# since Y is a list of continuous values
model_t = RandomForestClassifier(n_estimators=100, max_depth=5),
# since T is a list of binary values, or discrete values
n_estimators=100,
min_samples_leaf = 20,
discrete_treatment = True,
discrete_outcome = False,
random_state = 42
)

cf_model.fit(Y_train, T_train, X=X_train)
# operands could not be broadcast together with shapes (83301, 1)(0, 1)
te_pred = cf_model.effect(X_test)
Мой вопрос: поскольку X_test и X_train случайным образом отделены от X, хотя te_pred будет следовать тому же порядку, что и в X_test, как найти подсписок в X, чтобы каждый пользователь в подсписке имел соответствующее значение повышения в te_pred?
>

Подробнее здесь: https://stackoverflow.com/questions/798 ... ift-values
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»