Линейная основа в научном процессе Гаусса - PullRequest
0 голосов
/ 29 октября 2019

Я переписываю код в 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...