我正在尝试使用Deriv包派生R中的函数。该函数是加权高斯内核,因此我实现了以下解决方案:
library(Deriv)
library(psych)
x <- matrix(0:19, nrow = 4, ncol = 5)
w <- c(1,0.5,1,0.1,0.5)
eudis = function(x) {
xp2 <- as.matrix(apply(x^2, 1, sum))
xp2 %+% t(xp2) - 2*x%*%t(x)
}
wf <- function(w, x, gamma=1) {
exp(-gamma*as.matrix(eudis(t(t(x) * w))))
}
Deriv(wf(w,x=x), "w")
但这会返回错误:
eval(expr)中的错误:dim(X)的长度必须为正数
我的印象是,Deriv只能计算基本功能。如何自动计算内核函数的导数?