【发布时间】:2017-08-26 01:54:05
【问题描述】:
我有两个带有元组键的字典。我将每个字典分成 3 个小字典,然后将预测模型应用于每个字典。见下文,
# Subset dictionaries from df_dict140 and df_dict150
# df_dict140 has 456 rows and df_dict150 has 415
# I subsetted the them by 200
dic1 = {k: df_dic[k] for k in df_dict140[:200]}
dic2 = {k: df_dic[k] for k in df_dict140[200:400]}
dic3 = {k: df_dic[k] for k in df_dict140[400:456]}
dic4 = {k: df_dic[k] for k in df_dict150[:200]}
dic5 = {k: df_dic[k] for k in df_dict150[200:400]}
dic6 = {k: df_dic[k] for k in df_dict150[400:415]}
将模型应用于每个字典,
def predictionModel(pred_dict):
prediction = {}
for (key1, key2), value in pred_dict.items():
m = Prophet().fit(value)
future = m.make_future_dataframe(periods = 365)
forecast = m.predict(future)
prediction[key2] = forecast[['ds','yhat']].tail()
return prediction
预测结果,
prediction1 = predictionModel(dic1)
prediction2 = predictionModel(dic2)
prediction3 = predictionModel(dic3)
prediction4 = predictionModel(dic4)
prediction5 = predictionModel(dic5)
prediction6 = predictionModel(dic6)
是否可以编写一个函数或for循环来完成上述工作,这样就不需要对字典进行两次子集化,一次就可以得到结果。
【问题讨论】:
-
forecast[['ds','yhat']]: 那是字典吗?在这种情况下,这是不正确的。列表不可散列。 -
你的定义是什么意思?我不清楚你在问什么
-
@Jean-FrançoisFabre 这是一个数据框。
-
predictionModel看起来是字典项目数量的线性时间。我不明白通过拆分它们可以解决什么问题。 -
@AShelly 因为当我使用字典中的所有项目(即 456 和 416)运行模型时,运行需要很长时间,所以我将它们拆分为 200。
标签: python performance dictionary for-loop