這讓我發瘋了,我已經搜索了幾個小時,但在這方面遇到了麻煩。
通常我會在 SQL 中做這樣的事情,但它是 python 模型的一部分,我很難理解變數賦值是如何作業的。
我有一本字典(使用 Facebook Prophet 的 GitHub 中的語法):
param_grid = {
'changepoint_prior_scale': [.01, 0.05],
'changepoint_range': [0.8, 0.9],
'monthly_fourier': [5, 10],
'monthly_prior_scale': [.01, 0.05],
'daily_fourier': [5, 10],
'daily_prior_scale': [.01, 0.05],
'weekly_fourier': [5, 10],
'weekly_prior_scale': [.01, 0.05],
'yearly_fourier': [5],
'yearly_prior_scale': [.01, 0.05]
}
然后我創建所有引數排列的字典:
# Generate all combinations of parameters
all_params = [dict(zip(param_grid.keys(), v)) for v in itertools.product(*param_grid.values())]
mape = [] # Store the RMSEs for each params here for later
看起來像這樣(供參考):
print(all_params)
[{'changepoint_prior_scale': 0.01, 'changepoint_range': 0.8, 'monthly_fourier': 5,
'monthly_prior_scale': 0.01, 'daily_fourier': 5, 'daily_prior_scale': 0.01, 'weekly_fourier': 5,
'weekly_prior_scale': 0.01, 'yearly_fourier': 5, 'yearly_prior_scale': 0.01},
{'changepoint_prior_scale': 0.01, 'changepoint_range': 0.8, 'monthly_fourier': 5,
'monthly_prior_scale': 0.01, 'daily_fourier': 5, 'daily_prior_scale': 0.01, 'weekly_fourier': 5,
'weekly_prior_scale': 0.01, 'yearly_fourier': 5, 'yearly_prior_scale': 0.05}....... etc.,]
然后,我想要做的是將每個值傳遞給它對應的模型組件:
for params in all_params:
m = Prophet(
changepoint_prior_scale = all_params['changepoint_prior_scale'],
changepoint_range = all_params['changepoint_range'],
seasonality_mode = 'multiplicative',
growth = 'logistic',
holidays=Holidays,
).add_seasonality(
name='monthly',
period=30.5,
fourier_order = all_params['monthly_fourier'],
prior_scale = all_params['monthly_prior_scale']
).add_seasonality(
name='daily',
period=1,
fourier_order = all_params['daily_fourier'],
prior_scale = all_params['daily_prior_scale']
etc.,
我知道語法一定很奇怪,但我不知道如何將字典的值分配給模型變數。
例如,我希望第一個模型回圈運行這個:
for params in all_params:
m = Prophet(
changepoint_prior_scale = 0.01,
changepoint_range = 0.8,
seasonality_mode = 'multiplicative',
growth = 'logistic',
holidays=Holidays,
).add_seasonality(
name='monthly',
period=30.5,
fourier_order = 5,
prior_scale = .01
).add_seasonality(
name='daily',
period=1,
fourier_order = 5,
prior_scale = .01
etc.,
我確定這是 python 101,希望有人能幫助我指出正確的方向。
uj5u.com熱心網友回復:
你快了!看這里
for params in all_params:
m = Prophet(
changepoint_prior_scale = all_params['changepoint_prior_scale'],
changepoint_range = all_params['changepoint_range'],
seasonality_mode = 'multiplicative',...
請注意,您已制作params但仍在all_params用于訪問!像這樣改變它:
for params in all_params:
m = Prophet(
changepoint_prior_scale = params['changepoint_prior_scale'],
changepoint_range = params['changepoint_range'],
seasonality_mode = 'multiplicative',...
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/351340.html
標籤:Python 字典 for循环 变量 facebook-prophet
