我如何使用PYTHON中的scikit-learn模块为神经网络编码多输入1输出?

问题描述 投票:0回答:1

我正在构建一个Python代码,该代码将scikit-learn模块用于两个输入(冷却温度和入口流量)和一个输出(出口温度)。对于冷却温度和入口流量的每个输入,都有一个输出。

我已经获得了训练步骤所需的数据,但是我无法将输入实际编码/组合为一个输入以实际适合数据。

有什么建议吗?

下面是我开始使用的python代码;它不完整;它给出了一个错误。

from sklearn.neural_network import MLPRegressor
import numpy as np
import matplotlib.pyplot as plt

x1= np.array([[300.0], [300.0], [250.0], [250.0],[250.0],[250.0],[270.61032473]])

x2=np.array([[50],[50.5],[51],[52],[53],[53.5],[54]])

x=np.concatenate((x1,x2))

#y represents the Temperature of CSTR

y=np.array([[324.47544343, 324.47544343, 314.72646578, 306.78141638,
       300.63135097, 295.9767374 , 296.23219938]])

y=y.ravel()

nn = MLPRegressor(
    hidden_layer_sizes=(5,5,5,5),  activation='relu', solver='adam',random_state=1,max_iter=10000)

n = nn.fit(x, y)

#test_y = nn.predict([[260.0],[272.0]])

#print(test_y)

下面是错误:

Traceback (most recent call last):
  File "C:\Users\Asus\Desktop\t.py", line 57, in <module>
    n = nn.fit(x, y)
  File "C:\Users\Asus\AppData\Local\Programs\Python\Python37\lib\site-packages\sklearn\neural_network\multilayer_perceptron.py", line 618, in fit
    return self._fit(X, y, incremental=False)
  File "C:\Users\Asus\AppData\Local\Programs\Python\Python37\lib\site-packages\sklearn\neural_network\multilayer_perceptron.py", line 324, in _fit
    X, y = self._validate_input(X, y, incremental)
  File "C:\Users\Asus\AppData\Local\Programs\Python\Python37\lib\site-packages\sklearn\neural_network\multilayer_perceptron.py", line 1314, in _validate_input
    multi_output=True, y_numeric=True)
  File "C:\Users\Asus\AppData\Local\Programs\Python\Python37\lib\site-packages\sklearn\utils\validation.py", line 766, in check_X_y
    check_consistent_length(X, y)
  File "C:\Users\Asus\AppData\Local\Programs\Python\Python37\lib\site-packages\sklearn\utils\validation.py", line 235, in check_consistent_length
    " samples: %r" % [int(l) for l in lengths])
ValueError: Found input variables with inconsistent numbers of samples: [14, 7]

非常感谢!

python scikit-learn neural-network
1个回答
0
投票

x.shape == (14, 1),因此您要传入14个数据点,并尝试将它们与y中的7个数据点相关联,这将不起作用,因为xy中的点数必须为相同。

您的意思是:

>>> np.hstack((x1, x2))
array([[300.        ,  50.        ],
       [300.        ,  50.5       ],
       [250.        ,  51.        ],
       [250.        ,  52.        ],
       [250.        ,  53.        ],
       [250.        ,  53.5       ],
       [270.61032473,  54.        ]])

当前,您的x看起来像这样:

>>> x
array([[300.        ],
       [300.        ],
       [250.        ],
       [250.        ],
       [250.        ],
       [250.        ],
       [270.61032473],
       [ 50.        ],
       [ 50.5       ],
       [ 51.        ],
       [ 52.        ],
       [ 53.        ],
       [ 53.5       ],
       [ 54.        ]])

这是您的意思吗?

© www.soinside.com 2019 - 2024. All rights reserved.