如何在R中的kernlab包的ksvm中对内核函数进行加权?
我正在重写RBF核函数:如何在R中的kernlab包的ksvm中对内核函数进行加权?,r,model,kernel,svm,R,Model,Kernel,Svm,我正在重写RBF核函数: install.packages("kernlab") library(kernlab) rbf <- function(x, y) { gamma<-0.5 exp(-0.5*norm((as.matrix(x)-as.matrix(y)),"f")) } class(rbf) <- "kernel" install.packages(“kernlab”) 图书馆(内核实验室) rbf数据只是一个例子,我只想检查这个方法背后
install.packages("kernlab")
library(kernlab)
rbf <- function(x, y) {
gamma<-0.5
exp(-0.5*norm((as.matrix(x)-as.matrix(y)),"f"))
}
class(rbf) <- "kernel"
install.packages(“kernlab”)
图书馆(内核实验室)
rbf数据只是一个例子,我只想检查这个方法背后的逻辑:)
data<-matrix(1:40,nrow=10,ncol=4)
train<-data[1:(0.6*nrow(data)), ]
test<-data[((0.6*nrow(data))+1):nrow(data), ]
k_rbf <- ksvm(train[,ncol(train)]~.,data=train,C=0.1,type="eps-svr",epsilon=0.01,kernel=rbf)
ksvm_rbf<-predict(k_rbf, test)
t<-1:nrow(data)
data_t<-cbind(t,data)
train_t<-data_t[1:(0.6*nrow(data_t)), ]
test_t<-data_t[((0.6*nrow(data_t))+1):nrow(data_t), ]
sea_rbf <- function(x, y) {
gamma<-0.5
S<-3
n_x<-x[1] # row ID of X
n_y<-y[1] # row ID of y
x<-x[2:4]
y<-y[2:4]
d<-abs((n_x-n_y)%% S)
sea<-min(d,S-d)
value <-exp(-0.5*norm((as.matrix(x)-as.matrix(y)),"f"))*exp(-sea^2)
return (value )}
class(sea_rbf) <- "kernel"
k_rbf_t <- ksvm(train_t[,ncol(train_t)]~.,data=train_t,C=0.1,type="eps-svr",epsilon=0.01,kernel=sea_rbf)
ksvm_rbf_t<-predict(k_rbf_t, test_t)