2015-01-09 18 views
7

Ich habe eine SVM mit verschiedenen Werten für Kosten und Gamma für ein ein Konturdiagramm erstellen, ähnlich wie Matlab erzeugt (unten ein datasetWie ein Konturdiagramm in R erstellen

> library(e1071) 
> library(foreign) 
> dataframe <- read.arff("/diabetes.arff") 
> index <- seq_len(nrow(dataframe)) 
> trainindex <- sample(index, trunc(length(index)/2)) 
> trainset <- dataframe[trainindex, ] 
> testset <- dataframe[-trainindex, ] 
> tunedsvm <- tune.svm(class ~ ., data = trainset, gamma = 2^(seq(-15,3,by=2)), cost = 2^(seq(-5,15,by=2))) 
> tunedsvm 

Parameter tuning of ‘svm’: 

- sampling method: 10-fold cross validation 

- best parameters: 
     gamma cost 
0.0001220703 2048 

- best performance: 0.2187029 
> head(tunedsvm$performances) 
     gamma cost error dispersion 
1 3.051758e-05 0.03125 0.351546 0.06245835 
2 1.220703e-04 0.03125 0.351546 0.06245835 
3 4.882812e-04 0.03125 0.351546 0.06245835 
4 1.953125e-03 0.03125 0.351546 0.06245835 
5 7.812500e-03 0.03125 0.351546 0.06245835 
6 3.125000e-02 0.03125 0.351546 0.06245835 
> nrow(tunedsvm$performances) 
[1] 110 

Ich mag abgestimmt ist Beispiel)

enter image description here

ich versuchte, den plot Befehl, aber die Kontur ich kann viel von der Handlung nicht ableiten, es erzeugt.

> plot(tunedsvm) 

enter image description here

+0

vielleicht die Beispiele auf der Hilfeseite 'plot.svm' helfen? – ckluss

+0

Sie mögen nicht 'graphics :: contour'? –

+0

@CarlWitthoft Ich bin nicht bewusst, dass dieses Paket ich versuchte Kontur (tunesvm), aber es sagte keine richtige 'z' Matrix angegeben – birdy

Antwort

9

tune.svm gibt ein Objekt der Klasse "tune":

> class(tunedsvm) 
[1] "tune" 

Deshalb ist die entsprechende Hilfeseite ist ?plot.tune. Ein wenig Lektüre dieser zeigt einige nützliche Argumente, die individuell gestaltet:

plot(tunedsvm, 
    transform.x = log2, transform.y = log2, # log 2 scale for x and y 
    transform.z = function(x) 1 - x,  # convert error rate to accuracy rate 
    swapxy = TRUE,       # put gamma on y axis 
    color.palette = terrain.colors,   # define color palette for contours 
    xlab = expression(log[2](cost)), ylab = expression(log[2](gamma)), 
    main = "Accuracy Rate of SVM") 

Dieser Code die folgende Handlung erzeugt:

contour plot showing accuracy rate of svm over log2 gamma vs log2 cost

Verwandte Themen