我一步一步地问我的问题,如果有人帮助我,我将不胜感激。
输入:
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)
如果公式不清楚,我可以进一步解释。
答案 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))))