Error in svm.default(x, y, scale = scale, ..., na.action = na.action) : C <= 0!
下面是我的代码:
fitness <- function(p) {
# x: 训练集(前十)
# y: 测试集(第11)
# p: 模型参数
# 解析模型参数
kernel <- switch(as.integer(p[1]), "linear", "radial", "sigmoid")
cost <- p[2]
gamma <- p[3]
# 训练SVR模型
model <- svm(y_train~x_train, kernel = kernel, cost = cost, gamma = gamma)
# 模型预测
y_pred <- predict(model, x_test)
y_pred<-y_pred[1:90]
# 计算误差
error <- y_test - y_pred
# 计算适应度
fitness <- sqrt(mean(error^2))
return(fitness)
}
# 定义参数上下界
lb <- c(1, 0, 0)
ub <- c(3, 10, 1)
# 运行粒子群优化算法
n_particles <- 50
max_iter <- 100
result<- psoptim(par=rep(NA,(length(lb))), fn = fitness,lower = lb,
upper = ub,n_particles,control=list(maxit=max_iter))
# 返回最优解
result$par