我正在使用來自sklearn的 sklift 物件來開發一個隆起模型(Solo Model)。我正在嘗試拆分資料以進行訓練和驗證,而對于每個磁區,都有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
)
如何使用
2022-01-01我的資料框 (df) 中的所有資料進行訓練以及該日期之后的所有資料進行驗證。我該怎么做呢?我如何預測一個新的未見資料集并回傳所有三列,即隆起、實際基線概率(如果處理)和反事實概率(如果未處理),
i.e. 3% uplift / 30% conversion prob if treated / 27% conversion prob if not treated?
uj5u.com熱心網友回復:
將您的日期列轉換為 PandasDatetimeIndex并執行切片。
要轉換,您可以使用:
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/455310.html
