2013-04-03 3 views
4

데이터 세트에 스 메이트 알고리즘을 적용해야하지만 제대로 작동하지 않습니다.R, DMwR-package, SMOTE 함수가 작동하지 않습니다.

예 :

x <- c(12,13,14,16,20,25,30,50,75,71) 
y <- c(0,0,1,1,1,1,1,1,1,1) 

frame <- data.frame(x,y) 

library(DMwR) 

smotedobs <- SMOTE(y~ ., frame, perc.over=300) 

이 다음과 같은 오류 제공 :

Error in scale.default(T, T[i, ], ranges) : subscript out of bounds 
In addition: Warning messages: 
1: In FUN(newX[, i], ...) : 
    no non-missing arguments to max; returning -Inf 
2: In FUN(newX[, i], ...) : no non-missing arguments to min; returning Inf 

도움 또는 힌트의 어떤 종류를 appriciate 것인가를.

답변

3

전적으로 답변을 드릴 수 없습니다. 다른 실마리를 제공 할 수 있습니다 :

'y'를 인수로 변환하면 SMOTE는 오류없이 반환되지만 합성 관측치에는 x에 대해 NA 값이 있습니다.

2

SMOTE 코드에 버그가 있습니다. 그것은 먹이를주고있는 y 함수가 이미 인수 변수라고 가정하고 현재는 비 요소의 엣지 경우를 처리하지 않습니다. 메서드를 호출하기 전에 인수로 캐스트해야합니다.

3

쳐서는 OS Win7에 32 비트의 버그를 갖고 그것은 파라미터 '형태'데이터 세트의 마지막 컬럼은에서 목표 변수 가정 다음 코드는 다음 보여줄 것이다

library(DMwR) 
data(iris) 
# data <- iris[, c(1, 2, 5)] # SMOTE work 
data <- iris[, c(2, 5, 1)] # SMOTE bug 
data$Species <- factor(ifelse(data$Species == "setosa", "rare", "common")) 
head(data) 
table(data$Species) 
newData <- SMOTE(Species ~., data, perc.over=600, perc.under=100) 
table(newData$Species) 

설명한다 메시지

Error in colnames<- (*tmp* , value = c("Sepal.Width", "Species", "Sepal.Length" : 'names' attribute [3] must be the same length as the vector [2]

Win7 64 비트에서 주문 문제는 발생하지 않습니다 !!

관련 문제