2009-07-17 56 views
11

Tôi có một SVM trong R và bây giờ tôi muốn vẽ đồ thị cho không gian phân loại cho máy này. Tôi đã tìm thấy một số ví dụ trên Internet, nhưng tôi dường như không thể hiểu được chúng.Làm cách nào để vẽ đồ thị phân loại của SVM trong R

kịch bản R của tôi là như sau:

library(e1071) 
day_of_week <- c(0,1,2,3,4,5,6) 
holiday <- factor(c(T, F, F, F, F, F, T)) 
model <- svm(day_of_week, holiday) 
plot(model, day_of_week, holiday) 

tôi không thể nhận lệnh cốt truyện để làm việc. Tôi muốn một đồ thị giống như thế này http://bm2.genes.nig.ac.jp/RGM2/R_current/library/e1071/man/images/plot.svm_001.png

Trả lời

18

Đầu tiên, chức năng plot.svm giả định rằng dữ liệu thay đổi theo hai chiều. Dữ liệu bạn đã sử dụng trong ví dụ của mình chỉ là một chiều và do đó ranh giới quyết định sẽ phải được vẽ trên một dòng, không được hỗ trợ. Thứ hai, hàm có vẻ cần một khung dữ liệu làm đầu vào và bạn đang làm việc với các vectơ.

này nên làm việc ...

library(e1071) 

day = c(0,1,2,3,4,5,6) 
weather = c(1,0,0,0,0,0,0) 
happy = factor(c(T,F,F,F,F,F,F)) 

d = data.frame(day=day, weather=weather, happy=happy) 
model = svm(happy ~ day + weather, data = d) 
plot(model, d) 
+0

Cảm ơn, có vẻ như tôi cần phải làm quen với ~ nhà điều hành có liên quan đến công thức. Tôi đã giả định rằng đưa ra một đối tượng svm nó sẽ có thể làm cho nó không gian phân loại mà không có hướng tiếp. –

+0

Ai đó có thể cho tôi biết gói nào tôi cần cài đặt để sử dụng svm trong R? – sunqiang

+1

Gói cước là e1071. Tôi đã thêm lệnh để tải gói vào mã ở trên – Stompchicken

13

Ngoài ra, bạn có thể sử dụng kernlab gói:

library(kernlab) 

model.ksvm = ksvm(happy ~ day + weather, data = d, type="C-svc") 
plot(model.ksvm, data=d) 
Các vấn đề liên quan