我有一个包含100个观察值的响应变量,我希望通过使用超级向量回归通过使用8个独立变量来估计它们。
为了在R中使用培训和测试集实施SVR,我已经进行了大量搜索以查找模板,但是找不到所需的方法。
我已经使用以下代码来拟合模型并计算RMSE,但是我想检查模型中是否存在看不见的数据,并且我不知道如何在R中执行此操作。
我的代码如下:
data<-read.csv("Enzyme.csv",header = T)
Testset <- data[c(11:30),]
Trainset <- data[-c(11:30), ]
#attached dependent variable
Y<-Trainset$Urease
Trainset<-Trainset[,-c(1)]
SVMUr <- svm (Urease~., data=Trainset, kernel="radial",gamma=
1,epsilon=seq(0,1,0.1), cost=10)
summary(SVMUr)
################### RMSE SVMUr ##########################
RMSE <- function(observed, predicted){
sqrt(mean((predicted - observed)^2, na.rm=TRUE))
}
RMSE(observed =Y,predicted = predSVMUr)
######## Check the model for unseen data via using testset ######
predicted_test <- predict(SVMUr, Testset[,-1])
RMSE(Testset$Urease, predicted_test)
答案 0 :(得分:0)
您要测试模型的方法是:
predict(SVMUr, Testset[,-1])
将模型应用于看不见的数据,假设第一个变量是目标响应Y
。例如,如果它是第15个变量,则将-1替换为-15。RMSE()
函数在测试数据集上获取模型的RMSE 其他建议: 我不会按照您的方式拆分数据,因为正如您所指出的那样,与测试数据相关的培训数据太少了。如果您想将其拆分为80%-20%,则可以从下面的代码中进行调整:
data<-read.csv("Enzyme.csv",header = T)
split_data <- sample(nrow(data), nrow(data)*0.8)
Trainset <- data[split_data, ]
Testset <- data[-split_data, ]
这会将您的数据的80%放入训练集中,而将20%放入测试集中。
其余代码:
SVMUr <- svm (Urease~., data=Trainset, kernel="radial",gamma=
1,epsilon=seq(0,1,0.1), cost=10)
summary(SVMUr)
################### RMSE SVMUr ##########################
RMSE <- function(observed, predicted){
sqrt(mean((predicted - observed)^2, na.rm=TRUE))
}
RMSE(observed =Trainset$Urease, predicted = predSVMUr)
######## Check the model for unseen data via using testset ######
predicted_test <- predict(SVMUr, Testset[,-1])
RMSE(Testset$Urease, predicted_test)