2017-07-16 114 views
0

我使用svm函數運行svm。在svm中,我可以在內核參數中輸入線性參數,輻射參數和多項式參數。如何繪製svm和svm之前的結果?

因此,我想找出svm之前的數據分佈並確定使用三個參數中的哪一個。如何輸入代碼來檢查目標變量中的數據分佈?

另外,如何繪製svm的結果?我已經做了計算器中的所有代碼,但我得到了以下錯誤:

Error in Summary.factor(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, : 
    ‘min’ not meaningful for factors 

Error in plot.svm(german_svm, data = train) : missing formula. 

這裏是我的全部代碼。請讓我知道我的問題。

credit<-read.csv("http://freakonometrics.free.fr/german_credit.csv", header=TRUE) 
credit$Creditability<-as.factor(credit$Creditability) 


str(credit) 


library(caret) 
set.seed(1000) 
intrain<-createDataPartition(y=credit$Creditability, p=0.7, list=FALSE) 
train<-credit[intrain, ] 
test<-credit[-intrain, ] 


library("e1071") 


result<-tune.svm(Creditability ~., data=train, gamma=2^(-5:0), cost=2^(0:4)) 


result$best.parameters 


library("e1071") 
german_svm<-svm(Creditability~.,data=train, gamma=0.03125, cost=1) 

#Plotting the graph. And I had an error in here. 
plot(german_svm, data=train) 
plot(german_svm, train, Creditability ~ ., 
+  slice = list(Sepal.Width = 3, Sepal.Length = 4)) 

回答

0

讓我們試試這個

features_list <- paste(names(credit)[!names(credit) %in% "Creditability"],collapse="+") 
f <- as.formula(paste0("Creditability~",features_list)) 
german_svm<-svm(f,data=train, gamma=0.03125, cost=1) 
plot(german_svm, data=train) 

希望它能幫助!

+0

plot.svm(german_svm,data = train)中的錯誤:缺少公式。此消息出現.. –

+0

我檢查了'?plot.svm'的文檔。對於參數「公式」,它表示「公式選擇可視化的二維,只有在使用兩個以上的輸入變量時才需要」,這意味着只有在具有最多3個特徵(包括因變量)時纔可以繪製svm模型。在這種情況下,你有很多變量,所以如果你真的想繪製它,那麼你需要在你的公式中明確提供兩個獨立的特徵。例如'plot(german_svm,data = train,Length.of.current.employment〜Credit.Amount)' – Prem