2017-07-16 126 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