Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.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 基于Keras的多个独立序列的二元分类_Python_Keras_Classification_Sequence_Prediction - Fatal编程技术网

Python 基于Keras的多个独立序列的二元分类

Python 基于Keras的多个独立序列的二元分类,python,keras,classification,sequence,prediction,Python,Keras,Classification,Sequence,Prediction,我正在尝试使用Keras对多个独立序列进行分类。我的数据如下所示(不同股票及其价值的示例) 我想对如下结构所示的数据进行分类。已经为每种股票预先定义了标签(监督学习) 最后,如果可能的话,我还想预测下一个时间步的值 _stock 2015 ----------- ------ foo 450 bar 10 pear 500 raspberry 600 banana 1 目前,我只是使用了一堆密集

我正在尝试使用Keras对多个独立序列进行分类。我的数据如下所示(不同股票及其价值的示例)

我想对如下结构所示的数据进行分类。已经为每种股票预先定义了标签(监督学习)

最后,如果可能的话,我还想预测下一个时间步的值

  _stock     2015
----------- ------
 foo          450
 bar           10
 pear         500
 raspberry    600
 banana         1

目前,我只是使用了一堆密集的层,它们工作得很好,但我认为我没有以正确的方式利用这个设置中每个列之间的关系。此外,我认为这种设置不可能进行预测。我想使用类似LSTM网络的东西,但我不知道如何更改我的实现

#当前网络
从keras.models导入顺序
n_timesteps=len(data.columns)
模型=顺序()
添加(密集(100,activation=“relu”,input\u dim=n\u timesteps))
添加(密集(100,activation=“relu”))
model.add(密集(1,activation=“sigmoid”))
compile(optimizer=“adam”,loss=“binary\u crossentropy”,metrics=[“accurity”])
模型拟合(x_序列,y_序列,历元=100,验证数据=(x_检验,y_检验))

因此,您可能需要做的是:

1、规范化/标准化数据(如果尚未这样做)

你只想预测一个变量:最可能的下一个价格

3、你可以用下一个价格来决定股票是涨是跌——只需将其与上一个价格进行比较即可

我建议您仅在有足够数据(即每日/每小时…统计数据)的情况下使用循环网络,如LSTM-如果您的数据集非常有限,如示例中所示,则基本回归算法也应如此


作为旁注,仅通过单个网络/算法预测一个标签通常比一次预测所有标签更容易、更准确。尝试为每个标签培训N个不同的型号。

这种学习类型称为。您可以有多个输出和多个损耗函数。要处理数据集的顺序性质,仍然可以使用LSTM。这里我将用简单的数据来说明

将tensorflow导入为tf
将numpy作为np导入
层=tf.keras.layers
时间步长=32
信道=16;
x=np.random.randn(100,时间步,通道)
binary_y=np.random.randint(0,2,size=(x.shape[0,1))
reg_y=np.random.randn(x.shape[0],1)
输入=层。输入(形状=(时间步,通道))
hidden=layers.LSTM(32)(输入)
out1=layers.Dense(1,activation=“sigmoid”,name=“binary\u out”)(隐藏)
out2=层。密集(1,激活=无,name=“reg\u out”)(隐藏)
model=tf.keras.model(输入=输入,输出=[out1,out2])
compile(loss={“binary\u out”:“binary\u crossentropy”,“reg\u out”:“mse”},optimizer='adam',metrics={“binary\u out”:“accurity”})
model.fit(x[binary_y,reg_y],epochs=10)

非常感谢。我的主要问题是,我不清楚LSTM层的输入形状和尺寸。多亏了你的例子,我才让它运行起来。
  _stock          label
----------- -----------------
 foo         0 (not falling)
 bar         1 (falling)
 pear        0 (not falling)
 raspberry   0 (not falling)
 banana      1 (falling)
  _stock     2015
----------- ------
 foo          450
 bar           10
 pear         500
 raspberry    600
 banana         1

Epoch 1/10
4/4 [==============================] - 0s 7ms/step - loss: 1.6842 - binary_out_loss: 0.6987 - reg_out_loss: 0.9855 - binary_out_accuracy: 0.5300
Epoch 2/10
4/4 [==============================] - 0s 6ms/step - loss: 1.6395 - binary_out_loss: 0.6937 - reg_out_loss: 0.9458 - binary_out_accuracy: 0.5400
Epoch 3/10
4/4 [==============================] - 0s 6ms/step - loss: 1.6124 - binary_out_loss: 0.6913 - reg_out_loss: 0.9211 - binary_out_accuracy: 0.5500
Epoch 4/10
4/4 [==============================] - 0s 7ms/step - loss: 1.5864 - binary_out_loss: 0.6886 - reg_out_loss: 0.8978 - binary_out_accuracy: 0.5600
Epoch 5/10
4/4 [==============================] - 0s 7ms/step - loss: 1.5660 - binary_out_loss: 0.6863 - reg_out_loss: 0.8797 - binary_out_accuracy: 0.5600
Epoch 6/10
4/4 [==============================] - 0s 7ms/step - loss: 1.5424 - binary_out_loss: 0.6832 - reg_out_loss: 0.8593 - binary_out_accuracy: 0.5500
Epoch 7/10
4/4 [==============================] - 0s 7ms/step - loss: 1.5206 - binary_out_loss: 0.6806 - reg_out_loss: 0.8400 - binary_out_accuracy: 0.5600
Epoch 8/10
4/4 [==============================] - 0s 6ms/step - loss: 1.5013 - binary_out_loss: 0.6785 - reg_out_loss: 0.8229 - binary_out_accuracy: 0.5600
Epoch 9/10
4/4 [==============================] - 0s 6ms/step - loss: 1.4816 - binary_out_loss: 0.6759 - reg_out_loss: 0.8057 - binary_out_accuracy: 0.5700
Epoch 10/10
4/4 [==============================] - 0s 6ms/step - loss: 1.4641 - binary_out_loss: 0.6737 - reg_out_loss: 0.7904 - binary_out_accuracy: 0.5800