Я переписываю код в MATLAB на Python. Код выполняет регрессию гауссовского процесса, используя fitrgp
. В Python я использую scikit-learn
и его GaussianProcessRegressor
. В обоих случаях GP изучает отображение между input
и output
. Ядром моих кодов MATLAB и Python являются следующие:
-MATLAB
prediction_train=[];
%% z-score of input
[normalized_input_train,mu_train,std_train]=zscore(input_data);
parfor j=1:1:size(output_data,2)
j %prints time component
z1=squeeze(output_data(:,j));
beta1=fitrgp(normalized_input_train,z1,'BasisFunction','linear','KernelFunction','ardmatern32');
beta1=compact(beta1);
prediction_tmp=predict(beta1,normalized_input_train);
prediction_train=[prediction_train, prediction_tmp];
end
, который тренирует GP на некоторой тренировке input_data
и изучает прогноз для того же input_data
, чтобы быть позже по сравнению с output_data
. Этот сценарий реализует linear basis
с ard Matern 3/2
функцией ядра.
-Python
# Instantiate a Gaussian Process model
kernel = 1.0 * Matern(nu=1.5)
gp = GaussianProcessRegressor(kernel=kernel)
# z-score of input
scale = StandardScaler()
normalized_input_train = scale.fit_transform(input_data)
prediction_train = np.zeros((np.shape(output_data)))
for i in range(np.shape(output_data)[1]):
print("time component", i)
gp.fit(normalized_input_train, output_data[:,i])
prediction_tmp, sigma = gp.predict(normalized_input_train, return_std=True)
prediction_train[:,i] = prediction_tmp
Это должно делать то же самое, что и мой код MATLAB. Однако я не уверен, как реализовать параметр linear basis
, который реализован в сценарии MATLAB.