В настоящее время я подгоняю модель гауссовского процесса к набору данных. Каждый из моих входов X
производит один выход, и в итоге я использую сумму всех выходов как Y модели, Y_single_output
в фрагменте. Однако мне было интересно, что может произойти в случае, если я выполню регрессию, вместо того, чтобы суммировать выходные данные каждого X
, просто установить модель множественной выходной регрессии с Y
для каждого X
, что будет Y_mult_output
во фрагменте.
Для одного вывода я мог бы сделать следующее:
kernel = C(1.0, (1e-4, 1e4))*RBF(1.0,(1e-3,1e3))
model = GaussianProcessRegressor(kernel = kernel, n_restarts_optimizer = 10,optimizer='fmin_l_bfgs_b')
model.fit(X,Y_single_output)
В этих ситуациях X
- это массив с измерениями (20,4)
и Y
(20)
. Теперь я бы выбрал минимизацию:
min_func = shgo(lambda x: -model.predict(np.array([x])), bounds=bounds)
, которая прекрасно работает. Тем не менее, моя проблема заключается в том, что когда я пытаюсь выполнить то же самое для гауссовского процесса с размерами, равными X
, это будет (20,4)
. Я подгоняю модель следующим образом:
kernel = C(1.0, (1e-4, 1e4))*RBF(1.0,(1e-3,1e3))
model = GaussianProcessRegressor(kernel = kernel, n_restarts_optimizer = 10, optimizer='fmin_l_bfgs_b')
model.fit(X,Y_mult_output)
Но когда я пытаюсь свести к минимуму, используя тот же метод, упомянутый выше, я получаю следующую ошибку:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Итак, мой вопрос: возможно ли свести к минимуму модель множественной регрессии с помощью scipy?