如何按日期拆分数据并使用 sklearn 中的 sklift 进行预测?
How to split data by date and predict using sklift from sklearn?
我正在使用 sklearn 中的 sklift 对象来开发提升模型(Solo 模型)。我正在尝试拆分数据以进行训练和验证,而对于每个分区,都有 X, y, and treatment
列。在这种情况下,处理方式是用户收到通知(布尔值),而 y 是用户转换(布尔值)。
stratify_cols = pd.concat([notification_flag, df.converted_flag], axis=1)
df=df.drop(['notification_flag','converted_flag'],axis=1)
X_train, X_val, trmnt_train, trmnt_val, y_train, y_val = train_test_split(
df,
stratify_cols.notification_flag,
stratify_cols.converted_flag,
stratify=stratify_cols,
test_size=0.3,
random_state=42
)
如何使用数据框 (df) 中 2022-01-01
之前的所有数据进行训练,并使用该日期之后的所有数据进行验证。我该怎么做?
我如何预测新的未见数据集和 return 所有三列、提升、实际基线概率(如果处理)和反事实概率(如果未处理),i.e. 3% uplift / 30% conversion prob if treated / 27% conversion prob if not treated?
将您的日期列转换为 Pandas DatetimeIndex
并执行切片。
要转换您可以使用:
df["date"] = pd.to_datetime(df["date"])
示例:
import numpy as np
import pandas as pd
# generating a random df
df = pd.DataFrame(np.random.random((500,3)))
#generating random dates
df['date'] = pd.date_range('2021-1-1', periods=500, freq='D')
df = df.set_index(['date'])
train_df = df.loc[:'2022-01-01']
print(train_df.tail())
0 1 2
date
2021-12-28 0.027423 0.740380 0.606964
2021-12-29 0.609302 0.602346 0.812362
2021-12-30 0.171841 0.250788 0.182188
2021-12-31 0.322778 0.287429 0.585201
2022-01-01 0.014228 0.798382 0.769986
我正在使用 sklearn 中的 sklift 对象来开发提升模型(Solo 模型)。我正在尝试拆分数据以进行训练和验证,而对于每个分区,都有 X, y, and treatment
列。在这种情况下,处理方式是用户收到通知(布尔值),而 y 是用户转换(布尔值)。
stratify_cols = pd.concat([notification_flag, df.converted_flag], axis=1)
df=df.drop(['notification_flag','converted_flag'],axis=1)
X_train, X_val, trmnt_train, trmnt_val, y_train, y_val = train_test_split(
df,
stratify_cols.notification_flag,
stratify_cols.converted_flag,
stratify=stratify_cols,
test_size=0.3,
random_state=42
)
如何使用数据框 (df) 中
2022-01-01
之前的所有数据进行训练,并使用该日期之后的所有数据进行验证。我该怎么做?我如何预测新的未见数据集和 return 所有三列、提升、实际基线概率(如果处理)和反事实概率(如果未处理),
i.e. 3% uplift / 30% conversion prob if treated / 27% conversion prob if not treated?
将您的日期列转换为 Pandas DatetimeIndex
并执行切片。
要转换您可以使用:
df["date"] = pd.to_datetime(df["date"])
示例:
import numpy as np
import pandas as pd
# generating a random df
df = pd.DataFrame(np.random.random((500,3)))
#generating random dates
df['date'] = pd.date_range('2021-1-1', periods=500, freq='D')
df = df.set_index(['date'])
train_df = df.loc[:'2022-01-01']
print(train_df.tail())
0 1 2
date
2021-12-28 0.027423 0.740380 0.606964
2021-12-29 0.609302 0.602346 0.812362
2021-12-30 0.171841 0.250788 0.182188
2021-12-31 0.322778 0.287429 0.585201
2022-01-01 0.014228 0.798382 0.769986