每当我尝试使用DEAP的GP部分评估个人时,我目前遇到问题。
我收到以下错误:
追踪(最近一次通话): 文件" ImageGP.py",第297行,in pop,logs = algorithms.eaSimple(pop,toolbox,0.9,0.1,60,stats = mstats,halloffame = hof,verbose = True) 文件" /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/deap/algorithms.py",第148行,在eaSimple中 对于ind,适合zip(invalid_ind,fitnesses): 文件" ImageGP.py",第229行,在evalFunc中 func = toolbox.compile(expr = individual) 文件" /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/deap/gp.py" ;,第451行,在编译中 return eval(code,pset.context,{}) 文件"",第1行 lambda oValue,oAvg13,oAvg17,oAvg21,sobelVal(v),sobelVal(h),edgeVal,blotchVal:[[[0,75,82.2857142857,83.0,82.9090909091,4,12,4,180],...继续打印出我的所有数据... [0,147,151.244897959,150.728395062,150.73553719,248,244,5,210]]] ^ SyntaxError:语法无效
如果有人对可能导致此问题的原因有任何想法,那么我真的很感激一些建议。我目前的评估函数如下所示:
def evalFunc(individual, data, points):
func = toolbox.compile(expr=individual)
total = 1.0
for point in points:
tmp = [float(x) for x in data[point[1]][point[0]][1:9]]
total += int((0 if (func(*tmp)) < 0 else 1) == points[2])
print ("Fitness: " + str(total))
return total,
数据包含正在使用的数据(错误中列出的8个变量的值)和指定x和y坐标的点,从中获取这8个值。谢谢你的建议!