我有一个包含34个输入列和8个输出列的数据集。
解决这一问题的一种方法是采用34个输入,并为每个输出列建立单独的回归模型。
我想知道这个问题是否可以用一个模型来解决,特别是使用神经网络。
我使用了多层感知器,但这需要多个模型,就像线性回归一样。序列排序是可行的选择吗?
我正在使用TensorFlow。我有代码,但我认为更重要的是,要理解我在多层感知器理论中遗漏了什么。
我理解在MLP中,如果您有一个输出节点,它将提供一个输出。如果有10个输出节点,那么这是一个多类问题。您可以从10个输出中选择概率最高的类。但在我的例子中,同样的输入肯定会有8个输出。
比如说,对于一组输入,你将得到某样东西的三维坐标(X,Y,Z)。输入= {1,10,5,7}输出= {1,2,1}。因此,对于相同的输入{1,10,5,7},我需要建立X值Y值和Z的模型。一种解决方案是使用MLP建立三个不同的模型。但我想看看我能不能有一个模特。所以我考虑使用seq2seq。因为编码器接受一系列输入,而解码器提供一系列输出。但似乎tensorflow中的seq2seq不能处理浮点值。不过,我可能错了。
发布于 2017-02-11 13:04:34
发布于 2017-11-29 14:05:04
您可以非常简单地在Python中实现这一点。
你的X将是训练x,y,z坐标的集合。
你的Y将是测试x,y,z坐标的集合。
from sklearn import cross_validation
from sklearn.neural_network import MLPRegressor
model = MLPRegressor(solver='lbfgs',alpha=0.001,hidden_layer_sizes=(150,))
cross_validation.cross_val_score(model, X, Y,scoring='mean_squared_error')
发布于 2019-07-24 06:15:38
这比你想象的要容易得多--你可以简单地将输出层设置为向量,而不是单个标量。当然,这里没有魔力,我建议您准备好数据(执行批处理规范化,以便所有输出都是0到1之间的值)。
如果您使用的是Keras,那么这样做的方法是添加一个密集层作为最终输出层:
model.add(Dense(8, activation='linear'))
https://datascience.stackexchange.com/questions/16890
复制