如何将矩阵相乘并相加?

时间:2019-08-28 13:14:44

标签: r svm

我一步一步地问我的问题,如果有人帮助我,我将不胜感激。

输入:

1-I有2个向量y和alpha,长度为3000。

2-我有2个矩阵xtrain,它们的昏暗值为3000 * 8,而xtest的矩阵是昏暗的5000 * 8

我想这样做:

我需要一个长度为5000的向量D作为以下计算的结果。

     D[j]=sum{i=1 to 3000} y[i]*alpha[i]* exp(sum{k=1 to 8}(xtrain[i,k]-xtest[j,k] )^2)

如果公式不清楚,我可以进一步解释。

2 个答案:

答案 0 :(得分:2)

@jogo解决方案的一个稍微简单(更快)的版本是

D <- apply(xtest,                                        #work through xtest
           1,                                            #by row
           function(xtestj) {                            #apply this to each row
                   sum(y * alpha * 
                       exp(colSums((t(xtrain) - xtestj) ^ 2)))}
           )

通过在公式中转置xtrain,可以利用R的向量回收,因此您无需建立xtestj行的矩阵。 rowSums相应地更改为colSums

答案 1 :(得分:1)

您可以这样做:

D <- apply(xtest, 1, function(xtestj) sum(y*alpha*exp(rowSums(
    (xtrain-matrix(xtestj, nrow(xtrain), ncol(xtrain), byrow=TRUE))^2))))