python - numpy的参数方程

标签 python numpy parametric-equations

我目前正在python中实现一个称为回声状态网络(esn)的递归神经网络(rnn),用于时间序列分类(tsc)。
我想使用参数方程生成轨迹,然后训练我的神经网络来对这些轨迹进行分类,就像本文中的Mickael Hüsken & Peter Stagge, Recurrent Neural Networks for Time Series Classification那样。最后,我想比较我的esn和他们的rnn的性能。
好吧,我在这些轨迹的生成上遇到了麻烦。
根据本文,这里有三个类:
会产生这样的结果:
我生成每个类的50条轨迹,alpha是一个固定为0.7的浮点,beta和t0在0和2*pi之间随机选择。轨迹包含30个点,因此时间步为(2*pi)/30。
这是我的代码,我知道这不是最恶毒的方式,但它做的第一和第三类的工作。不过,第二节课仍然有漏洞:(

import numpy as np
import sys, getopt, random

timestep = 2.0*np.pi / 30.0
alpha = 0.7

def class1(t, beta):
    return alpha*np.sin(t+beta)*np.abs(np.sin(t)), alpha*np.cos(t+beta)*np.abs(np.sin(t))

def class2(t, beta):
    return alpha*np.sin(t/2.0+beta)*np.sin(3.0/2.0*t), alpha*np.cos(t+beta)*np.sin(2.0*t)

def class3(t, beta):
    return alpha*np.sin(t+beta)*np.sin(2.0*t), alpha*np.cos(t+beta)*np.sin(2.0*t)

def generate():
    clazz = {
            '1' : class1,
            '2' : class2,
            '3' : class3
            }

    for classID in clazz :
        for i in xrange(50):
            fd = open("dataset/%s_%s"%(classID, i+1), 'w')
            beta = 2*np.pi*np.random.random()
            t = 2*np.pi*np.random.random()
            for _ in xrange(30):
               fd.write("%s %s\n"%clazz[classID](t, beta))
               t += timestep
            fd.close()  

当我绘制第二类的轨迹(使用matplotlib)时,得到一个奇怪的结果……例如:

最佳答案

第二个方程对我来说似乎很奇怪,而且确实does not seem to produce the picture shown
看一看1类和3类的方程,很容易猜出一个参数方程,它会产生一个有三个“花瓣”的图形:

def class2(t, beta):
    return alpha*np.sin(t+beta)*np.sin(3*t), alpha*np.cos(t+beta)*np.sin(3*t)

然后做:
for beta in [0, np.pi/3, np.pi/2]:
    pylab.plot(*class2(np.linspace(0, np.pi, 100), beta),
               label='$\\beta={:.3f}$'.format(beta))
pylab.legend()

给予:

本文翻译自 https://stackoverflow.com/questions/23455226/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。


相关文章:

python - Python跟踪模块和文件路径

python - 在Numpy中置换对称平方矩阵的有效方法

python - 如何使用easy_install安装熊猫?

python - 在python中将numpy,list或float转换为字符串

python - 在Python中拟合参数曲线

java - 方程驱动的平滑阴影同心形状

python - 只有一个带有argparse的命令行参数

python - 如何使用Flask提供静态SVG文件?

c++ - 将贝塞尔曲线解构成等距斜率的线段

python - 从Python使用OpenCV TLD