我试图在顺序数据(预测变量)和序数响应中使用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
答案 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标称数据没有意义。