Как я могу кодировать несколько входов-1 для нейронных сетей, используя модуль scikit-learn в PYTHON? - PullRequest
0 голосов
/ 23 января 2020

Я создаю код Python, в котором используется модуль scikit-learn для двух входов (температура охлаждения и расход на входе) и 1 выхода (температура на выходе). Для каждого входа температуры охлаждения и расхода на входе имеется один выход.

Я уже получил данные для этапа обучения, но я не могу фактически закодировать / объединить входы в один вход для фактического размещения данных.

Есть предложения?

Ниже приведен код 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]

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 23 января 2020

x.shape == (14, 1), поэтому вы передаете 14 точек данных и пытаетесь сопоставить их с 7 точками данных в y, что не сработает, поскольку число точек в 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.        ]])

Это то, что вы имели в виду?

0 голосов
/ 23 января 2020
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]])

#Added "axis=1" to concanate two columns
x=np.concatenate((x1,x2), axis=1)
print(x)
print(x.shape)

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)

# Modified input to be a (2,1) array
test_y = nn.predict(np.array([[260.0,272.0]]))

print(test_y)
...