2017-03-25 14 views
0

캐럿 rfe를 작동시킬 수 없습니다. 알려진 것으로부터 시작하여 http://machinelearningmastery.com/feature-selection-with-the-caret-r-package/의 예는 완벽하게 작동합니다. 그래도 난 내 자신의 데이터 집합을 대체R rfe.defau의 오류 : "x와 y에 같은 수의 샘플이 있어야합니다"

, 그것은 실패

> results <- rfe(x, y, sizes=c(1:5), rfeControl=control) 
Error in rfe.default(x, y, sizes = c(1:5), rfeControl = control) : 
    there should be the same number of samples in x and y 

를 지금까지 내가, x와 y의 샘플 행의 수는 동일하다 말할 수있는,

> nrow(x) 
[1] 691231 
> nrow(y) 
[1] 691231 

자세한 내용은 아래를 참조하십시오.

R rfe function "caret" Package error: there should be the same number of samples in x and yR trying to get caret/rfe to work과 같은 비슷한 질문을 보았습니다. 후자는 관련이 있지만 도움이되지는 않습니다. 나는

> y <- as.vector(y) 

또는

> y <- as.vector(as.list(y)) 

같은 벡터 내 Y 변환 시도했지만 오류가 지속됩니다. 분명히 나는 ​​어리석은 짓을한다. 나는 잘못한 곳을 볼 수 없다. 어떤 도움을 주셔서 감사합니다.

:-)

yarc

---------------------- 세부 ----------- ---

------ 스크립트 --------

library(feather) 
library(mlbench) 
library(caret) 

path <- "faultclass.feather" 
df <- read_feather(path) 

set.seed(7) 
control <- rfeControl(functions=rfFuncs, method="cv", number=10) 
x <- subset(df,select=-c(fault)) 
y <- df["fault"]*1 
results <- rfe(x, y, sizes=c(1:5), rfeControl=control) 
print(results) 
predictors(results) 
plot(results, type=c("g", "o")) 

------ 특징 ------

> str(x) 
Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 691231 obs. of 31 variables: 
$ A    : chr "2011-12-06 00:00:00" "2011-03-11 00:00:00" "2014-11-17 00:00:00" "2013-01-07 15:19:02" ... 
$ B    : num 6 6 11 11 6 6 6 6 6 6 ... 
$ C    : num NA NA NA NA NA NA NA NA NA NA ... 
$ D    : chr "2016-01-01 00:00:00" "2016-01-01 00:00:00" "2016-01-01 00:00:00" "2016-01-01 00:00:00" ... 
$ E    : chr NA NA NA NA ... 
$ F    : num 0 230 230 230 230 230 230 230 230 0 ... 
$ G    : num 13 35 38 128 12 6 10 4 2 6 ... 
$ H    : chr NA NA NA NA ... 
$ J    : chr "35" "35" "28" "34" ... 
$ K    : num 0 63 32 63 40 40 35 40 35 25 ... 
$ L    : num 3 3 3 3 3 3 3 2 2 2 ... 
$ M    : num 301 301 301 301 301 301 301 301 301 301 ... 
$ N    : chr "613.0" "9630.0" "9114.0" "600.0" ... 
$ O    : chr "000356039" "000664676" "000770082" "000617804" ... 
$ P    : chr "11610000" "0000003001" "1161000" "43850" ... 
$ Q    : num 10089 10089 10972 27629 27630 ... 
$ R    : num 7.07e+17 7.07e+17 7.07e+17 7.07e+17 7.07e+17 ... 
$ S    : num 1 1 1 1 1 1 1 1 1 1 ... 
$ T    : chr "XX" "XX" "809" "96" ... 
$ U    : chr "cac" "edr" "ssr" "nsk" ... 
$ V    : chr "1954-05-17 00:00:00" "1973-05-17 00:00:00" "1997-06-24 00:00:00" "1976-12-24 00:00:00" ... 
$ W    : num 287 287 287 665 664 664 664 664 664 664 ... 
$ X    : num 1 1 1 1 1 1 1 1 1 1 ... 
$ Y    : num NA NA NA NA NA NA NA NA NA NA ... 
$ Z    : num 24828 39591 8932 35162 28540 ... 
$ AA    : chr "0001" "0001" "0001" "0002" ... 
$ AB    : chr "0001-TRA" "0001-TRB" "0001-TRC" "0002-TRD" ... 
$ AC    : chr "0,230" "0,230" "0,230" "0,230" ... 
$ AD    : chr "K03" "K03" "K03" "K05" ... 
$ AE    : num 3 3 3 3 3 3 3 3 3 3 ... 
$ AF    : chr "IT" "IT" "IT" "IT" ... 

> str(y) 
'data.frame': 691231 obs. of 1 variable: 
$ fault: num 0 0 0 0 0 0 0 0 0 0 ... 

답변

0

저도 같은 문제를했고 결국 나는이

y = as.vector(y) 

에 다른 그러나 이것은 나를 위해 일한 무엇을 왜 나는 확실하지 않다

y = as.vector(unlist(c(y))) 

를 사용하여 작업을 얻었다.