# The MIT License # Copyright (c) 2007 The GGobi Foundation # http://www.ggobi.org/book/code-license.txt # Read data d.olive<-read.csv("olive.csv",row.names=1) # load libraries library(e1071) library(rggobi) # Split data into training and test indx.tst<-c(1,7,12,15,16,22,27,32,34,35,36,41,50,54,61,68,70,75, ,76,80,95,101,102,105,106,110,116,118,119,122,134,137,140,147,148,150, ,151,156,165,175,177,182,183,185,186,187,190,192,194,201,202,211,213,217, ,218,219,225,227,241,242,246,257,259,263,266,274,280,284,289,291,292,297, ,305,310,313,314,323,330,333,338,341,342,347,351,352,356,358,359,369,374, ,375,376,386,392,405,406,415,416,418,420,421,423,426,428,435,440,451,458, ,460,462,466,468,470,474,476,480,481,482,487,492,493,500,501,509,519,522, ,530,532,541,543,545,546,551,559,567,570) d.olive.train<-d.olive[-indx.tst,] d.olive.test<-d.olive[indx.tst,] d.olive.sth.train <- subset(d.olive.train, region==1, select=area:eicosenoic) d.olive.sth.test <- subset(d.olive.test, region==1, select=area:eicosenoic) olive.svm<-best.svm(factor(area) ~ ., data=d.olive.train) olive.svm<-svm(factor(area) ~ ., data=d.olive.sth.train, type="C-classification",kernel="linear") table(d.olive.sth.train[,1],predict(olive.svm,d.olive.sth.train)) table(d.olive.sth.test[,1],predict(olive.svm,d.olive.sth.test)) # Which cases are real support vectors? support.vectors<-olive.svm$index[abs(olive.svm$coefs[,1])<1&abs(olive.svm$coefs[,2])<1& abs(olive.svm$coefs[,3])<1] pointtype<-rep(0,323) # training pointtype[247:323]<-1 # test pointtype[olive.svm$index]<-2 # slack vectors pointtype[support.vectors]<-3 # support vectors # Load data and predictions into ggobi parea<-c(predict(olive.svm,d.olive.sth.train),predict(olive.svm,d.olive.sth.test)) d.olive.svm <- cbind(rbind(d.olive.sth.train, d.olive.sth.test), parea, pointtype) gd <- ggobi(d.olive.svm)[1] glyph_color(gd) <- c(6,3,2,9)[d.olive.svm$area]