Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 优化均方误差的Scipy-Opt遗传算法_Python_Genetic Algorithm_Mean Square Error_Scikit Optimize - Fatal编程技术网

Python 优化均方误差的Scipy-Opt遗传算法

Python 优化均方误差的Scipy-Opt遗传算法,python,genetic-algorithm,mean-square-error,scikit-optimize,Python,Genetic Algorithm,Mean Square Error,Scikit Optimize,我试图用遗传算法找到模型的最佳5个参数(微分方程的解)来拟合时间序列 我使用Scikit Opt遗传算法()执行以下操作: 定义模型-->模型(a、b、c、d、e)以适应时间序列-->序列 (模型给出了一个微分方程的解:与该序列长度相同的时间序列) 将算法的适应度函数定义为模型和序列解之间的均方误差 def fitness_func(a、b、c、d、e):error=sklearn.metrics.mean_squared_error(模型(a、b、c、d、e)、series)返回错误 使用lb

我试图用遗传算法找到模型的最佳5个参数(微分方程的解)来拟合时间序列

我使用Scikit Opt遗传算法()执行以下操作:

  • 定义模型-->模型(a、b、c、d、e)以适应时间序列-->序列
  • 模型给出了一个微分方程的解:与该序列长度相同的时间序列)

  • 将算法的适应度函数定义为模型序列解之间的均方误差
  • def fitness_func(a、b、c、d、e):error=sklearn.metrics.mean_squared_error(模型(a、b、c、d、e)、series)返回错误

  • 使用lb(下限)和ub(上限)等参数构建GA,这两个边界通过手动拟合已知:
  • sko.GA.GA(func=fitness\u func0,n\u dim=5,size\u pop=100,max\u iter=50,lb=[-0.5,-0.3,0.01,0.0001,0.1],ub=[-0.01,-0.01,0.5,0.0625,10],精度=1e-4,概率=0.2)

  • 运行GA:
  • best\u x,best\u y=ga.run()

    bext_x是使均方误差最小的5个参数(a、b、c、d、e)best_y是具有模型最佳参数的均方误差值

    当我运行代码时,它是有效的(我的意思是,生成5个参数,求解模型,计算解决方案和序列之间的均方误差,以找到使其最小化的参数),但它没有优化误差,给出的参数也不适合序列

    我绘制了结果,发现:

    甚至当我进行手动拟合时,我发现了一个比遗传算法发现的最大均方误差