2016-07-16 37 views
1

我使用svme1071像這樣的數據集:調SVM中的R - 因變量具有錯誤類型

sdewey <- svm(x = as.matrix(trainS), 
       y = trainingSmall$DEWEY, 
       type="C-classification") 

這工作得很好,但是當我試圖調整這樣的成本和γ :

svm_tune <- tune(svm, train.x=as.matrix(trainS), train.y=trainingSmall$DEWEY, type="C-classification", ranges=list(cost=10^(-1:6), gamma=1^(-1:1))) 

我得到這個錯誤:

Error in tune(svm, train.x = as.matrix(trainS), train.y = trainingSmall$DEWEY, : Dependent variable has wrong type!

我的訓練數據的結構是這樣,但有更多的線:

'data.frame': 1000 obs. of 1542 variables: 
$ women.prisoners         : int 1 0 0 0 0 0 0 0 0 0 ... 
$ reformatories.for.women       : int 1 0 0 0 0 0 0 0 0 0 ... 
$ women           : int 1 0 0 0 0 0 0 0 0 0 ... 
$ criminal.justice         : int 1 0 0 0 0 0 0 0 0 0 ... 
$ soccer           : int 0 1 0 0 0 0 0 0 0 0 ... 
$ coal.mines.and.mining       : int 0 0 1 0 0 0 0 0 0 0 ... 
$ coal            : int 0 0 1 0 0 0 0 0 0 0 ... 
$ engineering.geology        : int 0 0 1 0 0 0 0 0 0 0 ... 
$ family.violence         : int 0 0 0 1 0 0 0 0 0 0 ... 

這是一個多級問題。 我不知道如何解決這個問題,或者是否有其他方法來找出成本和伽瑪參數的最佳值。

Here is an example of my data,和trainS是沒有前4列(DEWEY,D1,D2和D3),該數據

由於

回答

1
require(e1071) 

trainingSmall<-read.csv("trainingSmallExtra.csv") 

sdewey <- svm(x  = as.matrix(trainingSmall[,4:nrow(trainingSmall)]), 
       y  = trainingSmall$DEWEY, 
       type = "C-classification", 
       kernel = "linear" # same as no kernel 
      ) 

此操作,因爲已經svm自動轉換到DEWEY一個因素。

tune模型失敗,因爲它是爲用戶定製的,它依賴於您提供正確的數據類型。由於DEWEY是整數而不是factor,因此失敗。我們可以解決這個問題:

trainingSmall$DEWEY <- as.factor(trainingSmall$DEWEY) 

svm_tune <- tune(svm, train.x = as.matrix(trainingSmall[,4:nrow(trainingSmall)]), 
         train.y = trainingSmall$DEWEY, # the way I'm formatting your 
         kernel = "linear",   # code is Google's R style 
         type = "C-classification",  
         ranges = list(
             cost = 10^(-1:6), 
             gamma = 1^(-1:1) 
            ) 
       ) 
+1

謝謝,這工作得很好。我意識到我留下了type =「linear」標誌,這是沒有意義的,因爲找到該特定類型的成本和伽馬並不是必須的(我試圖查看線性是否最差/比RBF更好)。我編輯了這個問題來解決這個問題。 – moondaisy

相關問題