fscaret VarImp $ matrixVarImp.MSE返回0

时间:2015-06-29 09:36:12

标签: f# caret

我试图在顺序数据(预测变量)和序数响应中使用fscaret包,数据来自于1-10的比例间隔的调查。

我设法让我的脚本工作,但有时根据我在调用VarImp $ matrixVarImp.MSE时输入我的脚本的数据框,它返回0.我试图找出原因但是我无法找到根本原因。 all_data是MISO格式的数据帧。由于机密性,我没有附加数据......

这是我的简单脚本:

library(fscaret)

set.seed(1234)
splitIndex <- createDataPartition(all_data$response, p = .75, list = FALSE, times = 1)
trainDF <- all_data[ splitIndex,]
testDF  <- all_data[-splitIndex,]


fsModels <- c("glmnet","pls", "nnet")


start.time <- Sys.time()


myFS<-fscaret(trainDF, testDF, myTimeLimit = 40, preprocessData=TRUE,
              Used.funcRegPred = fsModels, with.labels=TRUE,
              supress.output=FALSE, no.cores=2)

end.time <- Sys.time()

total.time <- end.time - start.time

输出矩阵

myFS$VarImp$matrixVarImp.MSE

myFirstRES$VarImp$matrixVarImp.MSE
   gbm glmnet lm nnet pcr pls SUM SUM% ImpGrad Input_no
1    0      0  0    0   0   0   0  NaN       0        1
2    0      0  0    0   0   0   0  NaN     NaN        2
3    0      0  0    0   0   0   0  NaN     NaN        3
4    0      0  0    0   0   0   0  NaN     NaN        4
5    0      0  0    0   0   0   0  NaN     NaN        5
6    0      0  0    0   0   0   0  NaN     NaN        6
7    0      0  0    0   0   0   0  NaN     NaN        7
8    0      0  0    0   0   0   0  NaN     NaN        8
9    0      0  0    0   0   0   0  NaN     NaN        9
10   0      0  0    0   0   0   0  NaN     NaN       10
11   0      0  0    0   0   0   0  NaN     NaN       11
12   0      0  0    0   0   0   0  NaN     NaN       12
13   0      0  0    0   0   0   0  NaN     NaN       13
14   0      0  0    0   0   0   0  NaN     NaN       14
15   0      0  0    0   0   0   0  NaN     NaN       15
16   0      0  0    0   0   0   0  NaN     NaN       16
17   0      0  0    0   0   0   0  NaN     NaN       17
18   0      0  0    0   0   0   0  NaN     NaN       18
19   0      0  0    0   0   0   0  NaN     NaN       19
20   0      0  0    0   0   0   0  NaN     NaN       20
21   0      0  0    0   0   0   0  NaN     NaN       21
22   0      0  0    0   0   0   0  NaN     NaN       22
23   0      0  0    0   0   0   0  NaN     NaN       23
24   0      0  0    0   0   0   0  NaN     NaN       24
25   0      0  0    0   0   0   0  NaN     NaN       25
26   0      0  0    0   0   0   0  NaN     NaN       26
27   0      0  0    0   0   0   0  NaN     NaN       27
28   0      0  0    0   0   0   0  NaN     NaN       28
29   0      0  0    0   0   0   0  NaN     NaN       29
30   0      0  0    0   0   0   0  NaN     NaN       30
31   0      0  0    0   0   0   0  NaN     NaN       31
32   0      0  0    0   0   0   0  NaN     NaN       32
33   0      0  0    0   0   0   0  NaN     NaN       33
34   0      0  0    0   0   0   0  NaN     NaN       34
35   0      0  0    0   0   0   0  NaN     NaN       35
36   0      0  0    0   0   0   0  NaN     NaN       36
37   0      0  0    0   0   0   0  NaN     NaN       37
38   0      0  0    0   0   0   0  NaN     NaN       38

任何想法?

这是我的实际数据集: 在运行fscaret之前,我已经删除了na以清理数据...

> str(all_data)
'data.frame':   7288 obs. of  39 variables:
 $ v1      : int  9 8 7 9 10 9 10 10 10 8 ...
 $ v3      : int  9 8 9 10 8 8 10 10 8 9 ...
 $ v4      : int  9 8 8 9 8 8 10 10 8 9 ...
 $ v5      : int  8 8 7 10 8 7 10 5 10 10 ...
 $ v6      : int  8 8 8 9 9 9 10 5 10 8 ...
 $ v7      : int  8 8 7 8 9 8 10 5 10 8 ...
 $ v8      : int  9 8 8 10 10 9 10 5 10 9 ...
 $ v9      : int  9 8 8 7 8 6 8 8 10 5 ...
 $ v10     : int  9 7 7 9 5 7 10 6 10 7 ...
 $ v11     : int  8 8 6 9 5 9 10 8 10 7 ...
 $ v12     : int  8 9 6 9 9 9 10 10 10 10 ...
 $ v13     : int  8 9 7 9 8 8 10 10 10 10 ...
 $ v14     : int  9 10 8 9 9 9 10 10 10 10 ...
 $ v15     : int  10 8 8 10 10 7 10 10 10 10 ...
 $ v16     : int  9 7 7 10 9 9 10 10 10 8 ...
 $ v17     : int  9 10 7 10 5 7 10 10 10 8 ...
 $ v18     : int  8 8 6 10 10 7 10 10 10 10 ...
 $ v19     : int  9 9 8 9 10 9 10 10 10 10 ...
 $ v20     : int  8 8 8 9 6 8 10 10 10 8 ...
 $ v21     : int  8 8 8 10 5 7 10 10 10 10 ...
 $ v22     : int  8 8 7 9 5 8 10 10 10 10 ...
 $ v23     : int  8 8 6 10 5 8 10 10 10 10 ...
 $ v24     : int  9 9 8 9 9 9 10 7 10 10 ...
 $ v25     : int  9 10 7 9 8 9 10 10 10 8 ...
 $ v26     : int  9 8 7 7 8 9 10 9 10 9 ...
 $ v27     : int  8 8 7 9 9 9 10 9 10 9 ...
 $ v28     : int  8 8 7 9 8 8 10 9 10 6 ...
 $ v29     : int  9 9 8 9 8 8 10 9 10 8 ...
 $ v30     : int  9 9 7 7 8 8 10 8 10 8 ...
 $ v31     : int  9 10 6 9 9 9 10 7 10 8 ...
 $ v32     : int  8 8 7 9 9 7 10 8 10 5 ...
 $ v33     : int  8 10 8 9 8 8 10 7 10 8 ...
 $ v34     : int  8 6 8 10 9 9 10 9 10 8 ...
 $ v35     : int  9 8 8 9 10 7 10 9 10 8 ...
 $ v36     : int  9 10 9 10 10 9 10 10 10 10 ...
 $ v37     : int  9 8 8 10 10 9 10 5 10 10 ...
 $ v38     : int  9 10 8 10 10 8 10 10 10 8 ...
 $ v39     : int  8 10 8 9 10 9 10 9 10 8 ...
 $ response: int  10 7 8 9 9 8 10 10 10 10 ...
 - attr(*, "na.action")=Class 'omit'  Named int [1:3307] 12 13 15 17 32 34 35 40 41 42 ...
  .. ..- attr(*, "names")= chr [1:3307] "12" "13" "15" "17" ...
###更新

尝试向下取样df,然后我收到了以下错误消息:

Error in if (abs(x[i, j]) > cutoff) { : 
  missing value where TRUE/FALSE needed

1 个答案:

答案 0 :(得分:1)

尝试使用以下代码进行一些更改:

myFS<-fscaret(trainDF, testDF, myTimeLimit = 40, preprocessData=FALSE,
              Used.funcClassPred = fsModels, with.labels=TRUE,
              supress.output=FALSE, no.cores=2)

使用Used.funcClassPred而不是Used.funcRegPred。 其次preprocessData用于删除预测器将高度相关因此使用preProcessData标称数据没有意义。