2015-01-09 13 views
7

Tôi đã điều chỉnh một SVM với các giá trị khác nhau cho chi phí và gamma cho một datasetLàm thế nào để tạo ra một âm mưu đường viền trong R

> 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 

Tôi muốn tạo ra một âm mưu đường viền tương tự như những gì matlab tạo (dưới đây là một ví dụ)

enter image description here

tôi đã thử các lệnh plot nhưng đường viền tôi không thể suy ra nhiều từ cốt truyện nó tạo ra.

> plot(tunedsvm) 

enter image description here

+0

có lẽ là ví dụ về các trang trợ giúp 'plot.svm' sẽ giúp? – ckluss

+0

Bạn không thích 'graphics :: contour'? –

+0

@CarlWitthoft Tôi không biết gói đó tôi đã cố gắng đường viền (tunesvm) nhưng nó nói không có ma trận 'z' thích hợp quy định – birdy

Trả lời

9

tune.svm trả về một đối tượng của lớp "tune":

> class(tunedsvm) 
[1] "tune" 

Do đó trang trợ giúp liên quan là ?plot.tune. Một đọc chút điều này cho thấy một số lập luận hữu ích cho tùy biến:

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") 

Mã này tạo ra cốt truyện sau:

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

Các vấn đề liên quan