使用神经网络填充序列中的缺失值

我想做一个小项目,并希望使用Python中的神经网络。我发现pybrain是最佳解决方案。但到目前为止,我找到的所有例子和问题都无法帮助我解决问题。

我有一组数字序列。数百行。有些值是缺失的,取而代之的是一个”x”。

例如

1425234838636**x**40543485435097**x**43953458345345430843967067045764607457607645067045**x**04376037654067458674506704567408576405

等等。这只是一个例子,不是我的序列。

我想逐个读取这些值并训练我的神经网络,当我发现一个’x’时,我会预测这个数字,然后继续用后续的数字进行训练。

到目前为止,我找到的训练方式是这样的

trainSet.addSample([0,0,0,0],[1])

带有一些输入和输出。

有什么建议我可以继续进行吗?

编辑:我想到了一个方法,并希望得到反馈,因为我不知道这样做是否正确。

我仍然有上面的字符串。我将其分割成列表,所以我有一个列表,每个实体都是一个数字。

for ind in range(len(myList)):   if not myList[ind] == "x" and not myList[ind+1]=="x":       ds.addSample(myList[ind],myList[ind+1])   else:       breaknet = FeedForwardNetwork() inp = LinearLayer(1) h1 = SigmoidLayer(1) outp = LinearLayer(1)net.addOutputModule(outp) net.addInputModule(inp) net.addModule(h1)net.addConnection(FullConnection(inp, h1))  net.addConnection(FullConnection(h1, outp))net.sortModules()trainer = BackpropTrainer(net, ds)trainer.trainOnDataset(ds,1000)trainer.testOnData(verbose=True)lis[ind+1] = net.activate((ind,))GO to the beggining and continue from the last "x" which replaced from the net.activate()

你觉得怎么样?你认为这样做会有效吗?


回答:

一般来说,如果你使用反向传播来训练你的ANN,你实际上是在训练一个输入-输出映射。这意味着你的训练集必须包含已知的输入-输出关系(训练集中不包括任何未知值)。然后,ANN就成为你输入和输出之间实际关系的近似值。

然后你可以调用x = net.activate([seq]),其中seq是与未知值x相关联的输入序列。

如果x是一个已知结果的未知输入序列,那么你必须调用ANN的逆。我认为在pybrain中没有简单的方法来反转ANN,但你可以用你原始训练数据的逆来训练一个ANN。换句话说,使用你已知的结果作为训练输入,并将它们相关的序列作为训练结果。

需要考虑的主要事情是工具和训练数据对于你试图做的事情的适用性。如果你只是想预测x作为前一个数字的函数,那么我认为你的训练是正确的。我猜x将是前n个数字的函数,在这种情况下,你需要更新你的数据集如下:

n = 10for ind in range(len(myList)):    # Don't overrun our bounds    if ind == len(myList)-1:        break    # Check that our sequence is valid    for i in range(ind-n, ind+1):        if i >= 0 and myList[i] == "x":            # we have an invalid sequence            ind += i   # start next seq after invalid entry            break    # Add valid training sequence to data set    ds.addSample(myList[ind-n:ind],myList[ind+1])

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注