Python 如何使用稍后传入的数据调用函数
我正在做一个学校项目,我为一些数据计算不同的预测值,我用一些预测值创建了一个函数,这样我可以在for循环中使用它们Python 如何使用稍后传入的数据调用函数,python,Python,我正在做一个学校项目,我为一些数据计算不同的预测值,我用一些预测值创建了一个函数,这样我可以在for循环中使用它们 predictor_day = ( [(f"Median {x}", create_median_predictor(x)) for x in (10, 30, 60, 80, 120)] + [(f"Average {x}", create_average_predictor(x)) for x in (10
predictor_day = (
[(f"Median {x}", create_median_predictor(x)) for x in (10, 30, 60, 80, 120)]
+ [(f"Average {x}", create_average_predictor(x)) for x in (10, 30, 60, 80, 120)]
+ [
(f"Weighted average {x}", create_weighted_average_predictor(x))
for x in (10, 30, 60, 80, 120)
]
)
这是其中一个预测函数的外观:
def create_median_predictor(window_size):
def median_predictor(train_data):
return median(train_data[-window_size:])
return median_predictor
def all_data_median_predictor(train_data):
return median(train_data)
现在我还想创建一个预测器,它获取所有数据并返回其中值,它看起来是这样的:
def create_median_predictor(window_size):
def median_predictor(train_data):
return median(train_data[-window_size:])
return median_predictor
def all_data_median_predictor(train_data):
return median(train_data)
这就是我所说的:
for predictor in predictor_day:
prediction = predictor(train_data)
但是我似乎想不出一种方法如何将它添加到我的predictors\u day变量中,因为它总是缺少参数train\u数据,有什么方法可以将它添加到这个变量中吗?基于其他列表,我假设
predictor\u day
的类型是列表[Tuple[str,Callable]
predictor\u day=(
[(f“中位数{x}”,为x in(10,30,60,80,120)创建中位数{x}预测值(x)]
+[(f“Average{x}”,为x in(10,30,60,80,120)创建_Average_预测器(x))]
+ [
(f“加权平均{x}”,创建加权平均预测值(x))
对于x英寸(10,30,60,80,120)
]
+[(“所有数据中值预测器”,所有数据中值预测器)]变化在这一行
)
您希望for循环做什么?在循环中更改预测
将不会对预测日
产生任何影响,以防万一,这正是您试图观察到的。我将稍后在循环中保存预测并比较平均绝对误差,我只是没有粘贴整个for循环,以便于阅读,我唯一的问题是正确地将all_data\u median\u predictor
添加到我的predictor变量中,这比我想象的要简单得多。我用空括号尝试了这个,所以这一定是我出错的地方,非常感谢!