DEAP是一个支持进化算法的了不起的Python包。
现在,我从简单的示例中学习它
使用HallofFame on,“它将跟踪进化中出现的最佳个体(即使在其熄灭的情况下)”。
但当我使用它时,种群在进化过程中的最大适应度有时会下降一些。
我认为当最好的父母离开时,fitness.Max永远不应该减少,而应该保持不变或增加。
这是我直接在DEAP网站上复制的代码。
import array
import random
import numpy
from deap import algorithms
from deap import base
from deap import creator
我已经看到了许多关于使用python的multiprocessing的问题,但我还不能完全理解如何在我的代码中使用它。
假设我有一个NxM数组。我有一个函数f,它将(i,j)处的值与每隔一个像素进行比较。因此,本质上,我计算网格上每个点的NxM值。
我的机器有四个内核。我设想将输入位置分成四个象限,然后将每个象限提供给不同的进程。
所以,从模式上讲,我当前的代码是:
def f(x, array):
"""
For input location x, do some operation
with every other array value.
我试验了不同的建模方法,包括KNN、决策树、神经网络和SVN,并试图对我的数据进行拟合,看看哪种方法最有效。令我惊讶的是,决策树的最佳工作方式是训练精度为1.0,测试精度为0.5。无论训练精度为0.92,测试精度为0.42,神经网络的性能都是最好的,比决策树分类器低8%。
请有人解释一下,与决策树这样的建模技术相比,神经网络可能具有低精度的情况/情况。我尝试过不同配置的神经网络,比如:
1 hidden layer and 1 neuron : Train Accuracy 34% Test Accuracy 42%
7 hidden layers and 5 neurons in each
我试图使用图中所示的表示法在matlab上实现Freeman链码4邻接:
我的代码为我测试过的多个小矩阵提供了正确的链码。但是,当我在实际的映像文件上运行代码时,我会遇到一些连接组件的无限while循环。所谓无限循环,我的意思是,它不只是在两个点之间循环,而是继续遍历组件,而不到达起点。
我将在这里解释这个方法。
我的连接组件为4个邻接,所有像素在矩阵中标记为“标签”。
我从组件的第一个左上角(x,y)开始,并使用以下规则遍历:我的初始遍历(xT,yT)从左到右。horDir = 0,因为0是对的。
while(true)
if (horDir == 0)
go UP, or R
现在,我正在创建具有bezier控制柄的多边形。它工作得很好,除了现在我总是这样做:
for(float i = 0; i < 1; i += 0.04)
{
interpolate A, a.handle to B.handle, B at time i
}
问题是,无论点A和B之间的距离有多短或多长,它总是会产生相同数量的点。我怎么做才能让它看起来总是很好,但只能插值到它必须的程度。例如:如果Distance(A,B)是40,那么它可能只细分15次,但如果Distance(A,B)是20,它可能只细分7次,等等。我如何才能将其作为质量ex的函数:
float GetThresh
假设您有这种快速排序实现,它可能与标准实现略有不同:
qsort(list):
if list is of length 1 or lower -
return list
else -
choose a random pivot
smaller - get all elements that are smaller than the pivot
equal - get all elements that are equal to the pivot, including the pivot itself
greater - get all