2013-12-09 30 views
12

我被告知要使用插入符号包来执行支持向量机回归,并对数据集进行10次交叉验证。我正在对151个变量绘制我的响应变量。我做了以下内容: -在R中使用插入符号进行交叉验证的SVM

> ctrl <- trainControl(method = "repeatedcv", repeats = 10) 
> set.seed(1500) 
> mod <- train(RT..seconds.~., data=cadets, method = "svmLinear", trControl = ctrl) 

中,我得到了

C RMSE Rsquared RMSE SD Rsquared SD 
    0.2 50 0.8  20  0.1   
    0.5 60 0.7  20  0.2   
    1 60 0.7  20  0.2 

但我希望能看看我的褶皱,并为他们每个人的预测值有多接近人到实际值。我怎么去看这个?

此外,它说: -

RMSE was used to select the optimal model using the smallest value. 
The final value used for the model was C = 0. 

我只是想知道这意味着什么,什么C代表在上面的表?

RT (seconds) 76_TI2 114_DECC 120_Lop 212_PCD 236_X3Av 
38 4.086 1.2 2.322 0 0.195 
40 2.732 0.815 1.837 1.113 0.13 
41 4.049 1.153 2.117 2.354 0.094 
41 4.049 1.153 2.117 3.838 0.117 
42 4.56 1.224 2.128 2.38 0.246 
42 2.96 0.909 1.686 0.972 0.138 
42 3.237 0.96 1.922 1.202 0.143 
44 2.989 0.8 1.761 2.034 0.11 
44 1.993 0.5 1.5 0 0.102 
44 2.957 0.8 1.761 0.988 0.141 
44 2.597 0.889 1.888 1.916 0.114 
44 2.428 0.691 1.436 1.848 0.089 

这是我的数据集snipet。我试图将RT秒数对151个变量进行调整。

感谢

回答

16

你必须通过你的trainControl对象中的“savePred”选项来保存你的简历的预测。我不知道你的“学员”的数据是从什么包,但这里是使用虹膜一个简单的例子:

> library(caret) 
> ctrl <- trainControl(method = "cv", savePred=T, classProb=T) 
> mod <- train(Species~., data=iris, method = "svmLinear", trControl = ctrl) 
> head(mod$pred) 
     pred  obs  setosa versicolor virginica rowIndex .C Resample 
1  setosa  setosa 0.982533940 0.009013592 0.008452468  11 0.25 Fold01 
2  setosa  setosa 0.955755054 0.032289120 0.011955826  35 0.25 Fold01 
3  setosa  setosa 0.941292675 0.044903583 0.013803742  46 0.25 Fold01 
4  setosa  setosa 0.983559919 0.008310323 0.008129757  49 0.25 Fold01 
5  setosa  setosa 0.972285699 0.018109218 0.009605083  50 0.25 Fold01 
6 versicolor versicolor 0.007223973 0.971168170 0.021607858  59 0.25 Fold01 

编辑:“C”是为您的SVM调整参数之一。查看kernlab软件包中ksvm函数的帮助以获取更多详细信息。

EDIT2:平凡回归例如

> library(caret) 
> ctrl <- trainControl(method = "cv", savePred=T) 
> mod <- train(Sepal.Length~., data=iris, method = "svmLinear", trControl = ctrl) 
> head(mod$pred) 
     pred obs rowIndex .C Resample 
1 4.756119 4.8  13 0.25 Fold01 
2 4.910948 4.8  31 0.25 Fold01 
3 5.094275 4.9  38 0.25 Fold01 
4 4.728503 4.8  46 0.25 Fold01 
5 5.192965 5.3  49 0.25 Fold01 
6 5.969479 5.9  62 0.25 Fold01 
+0

您好感谢您的答复。我已经将trainControl中的位更改为这个,并且包含了我正在查看的部分数据集(学员数据集)。我不知道如何修改head(mod $ pred)位,以便我可以查看从我刚创建的模型预测的RT(秒),因为我正在对151个描述符变量建模RT秒。在这种情况下我会怎么做?我希望这是有道理的 – user2062207

+0

你不应该修改'mod $ pred'部分。您的“mod”对象是您的脱字符号模型,它是一个包含名为“pred”的元素的列表,其中包含您的CV预测。 – David

+0

但是我每次尝试这样做时都会收到NULL的回报。是不是用于分类的mod $ pred?我试图做回归,这可能解释为什么会发生这种情况 – user2062207