在函数中组合 eval() 和 return
Combining eval() and return in a function
我正在尝试使用一个函数迭代 return 多个机器学习模型(pickles),其中一个函数基于我指定的准确度截止值。
我的问题是我试图用 eval 加载泡菜,因为它们的名称对应于 sdf['number'] 给出的数字。 eval 函数没有加载我的泡菜,除此之外,我希望它们被我的函数加载和 returned。我已经通过尝试在加载每个模型后直接 运行 数据来测试它,然后再移动到下一个模型,但是它是 returning “learn0 not defined” 例如。
关于如何更好地迭代执行此操作的任何想法?
Variables Explained:
jar = A list of the different variable names (learner names) that I
expected it to load. For example, learn0, learn1, etc.
cutoff = Accuracy Cutoff
sdf_temp = Temporary Study DataFrame
def piklJar(sdf,cutoff):
sdf_temp = sdf[sdf['value'] <= cutoff]
jar = []
i=0
for pklNum in sdf_temp['number']:
eval('"learn{} = load_learner({}/Models/Pkl {}.pkl)".format(i,datapath,pklNum)')
jar.append('learn{}'.format(i))
i+=1
return jar
不需要 eval
。您的示例不是工作代码,但这大致相同:
def piklJar(sdf,cutoff):
sdf_temp = sdf[sdf['value'] <= cutoff]
return [load_learner(f'{datapath}/Models/Pkl {pklNum}') for pklNum in sdf_temp['number']]
调用jar = pklJar(...)
后,jar[0]
相当于learn0
,jar[1]
相当于learn1
,等等。各种load_learner
调用存储在列表理解生成的列表中。
我正在尝试使用一个函数迭代 return 多个机器学习模型(pickles),其中一个函数基于我指定的准确度截止值。
我的问题是我试图用 eval 加载泡菜,因为它们的名称对应于 sdf['number'] 给出的数字。 eval 函数没有加载我的泡菜,除此之外,我希望它们被我的函数加载和 returned。我已经通过尝试在加载每个模型后直接 运行 数据来测试它,然后再移动到下一个模型,但是它是 returning “learn0 not defined” 例如。
关于如何更好地迭代执行此操作的任何想法?
Variables Explained:
jar = A list of the different variable names (learner names) that I expected it to load. For example, learn0, learn1, etc.
cutoff = Accuracy Cutoff
sdf_temp = Temporary Study DataFrame
def piklJar(sdf,cutoff):
sdf_temp = sdf[sdf['value'] <= cutoff]
jar = []
i=0
for pklNum in sdf_temp['number']:
eval('"learn{} = load_learner({}/Models/Pkl {}.pkl)".format(i,datapath,pklNum)')
jar.append('learn{}'.format(i))
i+=1
return jar
eval
。您的示例不是工作代码,但这大致相同:
def piklJar(sdf,cutoff):
sdf_temp = sdf[sdf['value'] <= cutoff]
return [load_learner(f'{datapath}/Models/Pkl {pklNum}') for pklNum in sdf_temp['number']]
调用jar = pklJar(...)
后,jar[0]
相当于learn0
,jar[1]
相当于learn1
,等等。各种load_learner
调用存储在列表理解生成的列表中。