pandas 在测试测试中使用带有“id”列的Prophet预测

cgyqldqp  于 11个月前  发布在  其他
关注(0)|答案(2)|浏览(76)

我正在用Python中的Prophet构建一个预测模型。我的训练数据集由列**“Date”,“Var 1”,“Var 2”,“Y”组成。测试集由列“id”,“Date”,“Var 1”,“Var 2”**组成。“id”列是唯一的(基于“Date”,“Var 1”,“Var 2”的组合。下面是我的代码:

dir_df_train_clean = "data/df_train_clean.csv"
df_train_clean = pd.read_csv(dir_df_train_clean, parse_dates=[0])

dir_df_test_clean = "data/df_test_clean.csv"
df_test_clean = pd.read_csv(dir_df_test_clean, parse_dates=[1])

split_date = '2019-01-01'
df_train = df_train_clean[df_train_clean.index.get_level_values('Date') < split_date]
df_val = df_train_clean[df_train_clean.index.get_level_values('Date') >= split_date]

df_train = df_train.rename(columns={'Date':'ds','Y':'y'})
df_val = df_val.rename(columns={'Date':'ds','Y':'y'})
df_test = df_test_clean.rename(columns={'Date':'ds'})

字符串
我的模特:

m = Prophet()
m.add_regressor('Var1')
m.add_regressor('Var2')
m.fit(df_train)


试着预测我的测试集:

test_forecast = m.predict(df_test)


但是结果是我的**“id”**列从“test_forecast”框架中消失了。我怎么才能保留我的id列呢?
我试图合并'id'列,但索引被更改。第一行(id ='a1')显示日期值列为'2022-07- 30',但预测结果显示'date'列的第一行为'2022-07- 30'。

4ioopgfo

4ioopgfo1#

我认为Prophet会生成日期和时间的预测,但不会从输入框中继承任何额外的列或信息。为了保留“id”列,您必须将该列合并到预测之后。

but5z9lq

but5z9lq2#

我想强调的是,使用ID作为模型特征可能会导致过拟合,特别是当ID生成与时间有关时。你应该仔细考虑为什么需要这样做;也许可以考虑使用索引,以便稍后可以将数据(没有ID)与其他数据合并。
使用ID的负面影响:
过拟合:如果ID与时间或其他不为模型提供价值的因素有关,则将其用作特征可能会导致过拟合。模型可能会记住标识符,而不是概括信息。
复杂性:使用ID可能会使模型的可解释性降低,因为标识符本身通常不会传达太多关于数据性质的信息。

相关问题