Как написать версию Pearson Correlation с ядром без какой-либо встроенной функции? - PullRequest
0 голосов
/ 15 ноября 2018

Я хочу вычислить ядровую версию корреляции Пирсона, поэтому мне нужно писать код вместо использования команды corrcoef, в соответствии с формулой я должен написать cov и std отдельно, я использовал трюк с точечным произведением для cov, и когда я Я использую его для STD результат не соответствует действительности ( этот трюк )

На самом деле я точно знаю, как вводить ядро ​​(например, Gaussian в std)

for i=1:p;
    one_vector(1:size(Signals{i,1},1)) = 1;
    mu = (one_vector * Signals{i,1}) / size(Signals{i,1},1);
    A_mean_subtract = Signals{i,1} - mu(one_vector, :);
    for j=1:116
        u=(A_mean_subtract(:,j));
        for z=1:116;
            v=(A_mean_subtract(:,z));
            r=sqrt(sum((u-v).^2));                   ---- cov in Gaussian form ( instead of u'*v) I put u and v in gaussian kernel formula
            gamma=1/(2*100^2);
            k=exp(-gamma*(r^2));
            covB(j,z) = k / (size(Signals{i,1},1) - 1);---- it is correct
              K_R(j,z)= covB(j,z)/sqrt((u'*u)*(v'*v);---- I know that I have to kernelized this part like above but before that the result is not correct in sipmle form (not kernelized) let alone kernel form
        end
    end
...