我正在构建一个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]
非常感谢!
x.shape == (14, 1)
,因此您要传入14个数据点,并尝试将它们与y
中的7个数据点相关联,这将不起作用,因为x
和y
中的点数必须为相同。
您的意思是:
>>> 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. ]])
这是您的意思吗?