如何在进一步的SVR分析中使用PCR选择的主成分?
我想使用主成分回归法来找到基本成分,然后提取这些成分以应用进一步的SVR分析,但在这样做时遇到了一些问题 首先,我遵循以下建议: 这是我的代码:如何在进一步的SVR分析中使用PCR选择的主成分?,r,svm,pca,R,Svm,Pca,我想使用主成分回归法来找到基本成分,然后提取这些成分以应用进一步的SVR分析,但在这样做时遇到了一些问题 首先,我遵循以下建议: 这是我的代码: library(caret) library(tidyverse) library(pls) library(e1071) library(kernlab) # Load the data data("Boston", package = "MASS") # Split the data into training and test set set.
library(caret)
library(tidyverse)
library(pls)
library(e1071)
library(kernlab)
# Load the data
data("Boston", package = "MASS")
# Split the data into training and test set
set.seed(123)
training.samples <- Boston$medv %>% createDataPartition(p = 0.8, list = FALSE)
train.data <- Boston[training.samples, ]
test.data <- Boston[-training.samples, ]
set.seed(1)
sigDist <- sigest(medv~., data = train.data, frac = 1)
svrGrid <- expand.grid(.sigma = sigDist, .C = 2^(-2:7))
set.seed(2)
svrPCR <- train(medv~., data = train.data,
method = "svmLinear",
tuneGrid = svrGrid,
preProcess = c("center","scale","pcr"), # if center and scale needed
trControl=trainControl("LOOCV"))
第二次尝试,我只需从pcr结果中提取[[scores]]]
,然后在svr中使用它们:
pcr_model <- pcr(medv~., data = train.data, scale =TRUE, validation = "LOO")
engivaluepcr=as.data.frame(pcr_model[['scores']][,1:13])
engivaluepcr=cbind(train.data$medv,engivaluepcr)
setnames(engivaluepcr,"train.data$medv","medv")
pcrsvr <- svm(medv ~ ., engivaluepcr, validation = "LOO",kernel='linear')
pred_test2 <-predict(pcrsvr,test.data)
也许以上两种方法都不是好方法。请给我一些关于如何在进一步svr分析中使用pcr结果的建议,或者也许只是帮助我解决上述错误
谢谢,
-C.T
编辑1:
我只是想,当使用method=“svmLinear”
时,我们不需要中的.sigma
。在消除西格玛之后,我可以成功地得到我的结果。
希望这能对其他人有所帮助。
-C.T
pcr_model <- pcr(medv~., data = train.data, scale =TRUE, validation = "LOO")
engivaluepcr=as.data.frame(pcr_model[['scores']][,1:13])
engivaluepcr=cbind(train.data$medv,engivaluepcr)
setnames(engivaluepcr,"train.data$medv","medv")
pcrsvr <- svm(medv ~ ., engivaluepcr, validation = "LOO",kernel='linear')
pred_test2 <-predict(pcrsvr,test.data)
Error in eval(predvars, data, env) : object 'Comp 1' not found