python据说功能强大,触角伸到各个领域,网上搜了一下其科学计算和工程计算能力也相当强,具备各种第三方包,除了性能软肋外,其他无可指摘,甚至可以同matlab等专业工具一较高下。

从网上找了一个使用遗传算法实现数据拟合的例子学习了一下,确实Python相当贴合自然语言,终于编程语言也能说人话了,代码整体简洁、优雅。。

代码功能:给出一个隐藏函数 例如 z=x^2+y^2,生成200个数据,利用这200个数据,使用遗传算法猜测这些数据是什么公式生成的。 (说的太直白,一点都不高大上)

代码如下:

 
 
                                                   result = deepcopy(t)
                               result.children = [self.mutate(c, pc, probchange)               
                                                                                                  
                          
                   rows = []
                              x = randint(0, 10)
                 x=uniform(-1,1)
                 y = randint(0, 10)
                 y=uniform(-1,1)
                 rows.append([x, y, self.hiddenfunction(x, y)])
                           
               dif = 0
                                                  
                             scores = [(self.scorefunction(t, dataset), t)              scores.sort()
                       
                                                                     scores = rankfunction(population)
                                                                                                               newpop.append(
                         self.mutate(self.crossover(scores[selectindex()][1], scores[selectindex()][1], probswap=breedingrate), pc,
                                probchange=mutationrate))
                                       newpop.append(self.makerandomtree(pc))
             population = newpop
                
 
 
      e=opera()
               
 
                               a=opera()
     row2=a.buildhiddenset()
          
 
          fig = plt.figure()
     ax = fig.add_subplot(111, projection=     X = [1, 1, 2, 2]
     Y = [3, 4, 4, 3]
     Z = [1, 2, 1, 1]
     rx=[]
     ry=[]
     rz=[]
              rx.append(i[0])
         ry.append(i[1])
         rz.append(i[2])
 
     ax.plot_trisurf(rx, ry, rz)
     rz2=[]
     rf = a.getrankfunction(row2)
     final = a.evolve(2, 100, rf, mutationrate=0.2, breedingrate=0.1, pexp=0.7, pnew=0.1,maxgen=500)
          final.display()
              rz2.append(final.evaluate([rx[j],ry[j]]))
     fig2 = plt.figure()
     ax2 = fig2.add_subplot(111, projection=     ax2.plot_trisurf(rx, ry, rz2)
 
     plt.show()
 
 
           
 
 
 
      main(0)

看懂不一定写的出来,这是这次写这个程序最大的体会, 得定时拿出来复习复习。

python遗传算法实现数据拟合的更多相关文章

  1. python遗传算法实现数据拟合(转)

    python据说功能强大,触角伸到各个领域,网上搜了一下其科学计算和工程计算能力也相当强,具备各种第三方包,除了性能软肋外,其他无可指摘,甚至可以同matlab等专业工具一较高下. 从网上找了一个使用 ...

  2. 用Python开始机器学习(3:数据拟合与广义线性回归)

    机器学习中的预测问题通常分为2类:回归与分类. 简单的说回归就是预测数值,而分类是给数据打上标签归类. 本文讲述如何用Python进行基本的数据拟合,以及如何对拟合结果的误差进行分析. 本例中使用一个 ...

  3. 数据拟合:多项式拟合polynomial curve fitting

    http://blog.csdn.net/pipisorry/article/details/49804441 常见的曲线拟合方法 1.使偏差绝对值之和最小 2.使偏差绝对值最大的最小       3 ...

  4. Python: sklearn库——数据预处理

    Python: sklearn库 —— 数据预处理 数据集转换之预处理数据:      将输入的数据转化成机器学习算法可以使用的数据.包含特征提取和标准化.      原因:数据集的标准化(服从均值为 ...

  5. Neural Network Toolbox使用笔记1:数据拟合

    http://blog.csdn.net/ljp1919/article/details/42556261 Neural Network Toolbox为各种复杂的非线性系统的建模提供多种函数和应用程 ...

  6. 使用Python解析JSON数据的基本方法

    这篇文章主要介绍了使用Python解析JSON数据的基本方法,是Python入门学习中的基础知识,需要的朋友可以参考下:     ----------------------------------- ...

  7. 非线性数据拟合-nls

    code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && docu ...

  8. python matplotlib plot 数据中的中文无法正常显示的解决办法

    转发自:http://blog.csdn.net/laoyaotask/article/details/22117745?utm_source=tuicool python matplotlib pl ...

  9. Python/Numpy大数据编程经验

    Python/Numpy大数据编程经验 1.边处理边保存数据,不要处理完了一次性保存.不然程序跑了几小时甚至几天后挂了,就啥也没有了.即使部分结果不能实用,也可以分析程序流程的问题或者数据的特点.   ...

随机推荐

  1. 使用Intent实现Activity的显式跳转

    [正文] 这里以按钮实现活动跳转为例,为实现这个功能,我们需要三个步骤: 1.点击按钮才发生页面跳转,因此,第一步我们先要找到要点击的按钮 如何拿到按钮对象呢?通过资源id,前面我们提到过,在R.id ...

  2. Sql 语句添加字段、修改字段类型、默认值语法

    Sql 语句添加字段 ,) not null --修改类型 alter Table bbs ) Sql 语句修改默认值 alter table 表名 drop constraint 约束名字 --删除 ...

  3. Java基础知识强化97:final、finally、finally区别

    1. final修饰符(关键字)     如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此,一个类不能既被声明为abstract,又被声明为final.     将 ...

  4. yii 分页样式

    需求及效果图如下 没什么说的,就是修改分页,修改了CLinks分页的样式 上代码 <?php class GsearchPager extends CBasePager { const CSS_ ...

  5. Python元组、列表--笔记

    <Python3 程序开发指南> 序列包括元组和列表,首先,我们介绍元组. 元组--tuple 元组为有序的序列,元组和字符串一样也是固定的,不能替换或删除其中的任意数据项.如果需要修改应 ...

  6. jQuery自定义组件——输入框设置默认提示文字

    if (window.jQuery || window.Zepto) { /** * 设置输入框提示信息 * @param options * @author rubekid */ var setIn ...

  7. 如何通过Request.ServerVariables["HTTP_USER_AGENT"]获取客户端操作系统信息

    http://www.useragentstring.com/pages/api.php

  8. Knockoutjs官网翻译系列(四) computed中依赖追踪是如何工作的

    初学者无需了解这些 ,但是很多高级程序员想知道我们为什么可以保持跟踪这些依赖以及可以正确的更新到UI中.它其实很简单.跟踪算法是这样的: 无论何时你定义了一个computed observable,K ...

  9. Struts2的创建Web项目入门

    之前学过javaEE开发,学了之后便去做前端了,再也没碰过javaEE.现在重新学习和部署,入门级,使用MyEclipse10版本. 简单说一下过程. struts步骤: 1. web project ...

  10. linux 目录说明

    1./bin /usr/bin  /usr/local/bin   都是放置用户可执行二进制文件. 2./boot 主要是放置liunx系统启动时用到的文件. 2./dev   文件夹内主要是西东外设 ...