如何在进一步的SVR分析中使用PCR选择的主成分?

如何在进一步的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.

我想使用主成分回归法来找到基本成分,然后提取这些成分以应用进一步的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.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