2013-12-12 20 views
2

我使用下面的CRAN包DMwR處理不平衡數據的問題: 代碼如下:R-克蘭企圖屬性更改爲NULL擊打

require(DMwR) 
dm = read.table("C:/data/exampleData.txt", sep=",") 
ncols<-ncol(dm) 
dm<-cbind(dm[2:ncols],dm[1]) 
dmSmote<-SMOTE(target ~ . , dm,k=5,perc.over = 1400,perc.under=140) 
dm<-cbind(dmSmote[ncols],dmSmote[1:ncols-1]) 

數據:

5.901487,5.176487,1 
6.917943,3.979710,0 
5.247007,3.628324,1 
5.157673,6.212658,0 
4.836749,3.978392,0 
4.590970,5.547353,0 
3.895904,5.350865,0 
4.312977,3.853151,0 
5.844978,5.450767,0 
4.009195,5.108031,0 

列1 =變量1,柱2 =變量2,柱3 =


我收到以下錯誤:試圖更改屬性爲NULL

鏈接庫:http://cran.fhcrc.org/web/packages/DMwR/DMwR.pdf

什麼我沒有得到正確的?

回答

3

分類變量(您的代碼中的target)需要是一個因子。

require(DMwR) 
## data 
dm = structure(
    c(5.901487, 6.917943, 5.247007, 5.157673, 4.836749, 
     4.59097, 3.895904, 4.312977, 5.844978, 4.009195, 5.176487, 3.97971, 
     3.628324, 6.212658, 3.978392, 5.547353, 5.350865, 3.853151, 5.450767, 
     5.108031, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0), 
    .Dim = c(10L, 3L), 
    .Dimnames = list(NULL, NULL)) 
dm = data.frame(dm) 

## column names 
colnames(dm) = c("var1", "var2", "target") 

## you must convert the classifier variable to a factor 
dm$target = factor(dm$target) 

## SMOTE algorithm 
dmSmote <- SMOTE(target ~ ., data = dm, k = 5,perc.over = 1400, perc.under = 140) 

使用有問題的功能debug()是診斷錯誤,一個很好的起點。

+0

好吧我知道了@Nap聽起來很清楚謝謝。 –