支持向量机的R实现

二分类——使用信贷数据:

数据准备:

credit<-read.csv("credit.csv")
str(credit) 
dim(credit) #考察数据的维度、样本量及各变量的基本情况
set.seed(123)
x<-sample(1:1000,200)
credit_train=credit[-x,]
credit_test=credit[x,] #随机抽取20%的样本作为测试集

模型建立:

library(kernlab) #加载这一个包并利用其中的ksvm函数
classifier<-ksvm(default~.,data=credit_train,kernel="rbfdot") #对是否违约进行预测,采用高斯核

模型性能考察:

default_predictions<-predict(classifier,credit_test) #使用建立的模型对测试集进行预测
library(gmodels)
CrossTable(x=credit_test$default,y=default_predictions,prop.chisq = F)
#结果如下:
#  | default_predictions 
#credit_test$default |        no |       yes | Row Total | 
#--------------------|-----------|-----------|-----------|
#                 no |       133 |        11 |       144 | 
#                    |     0.924 |     0.076 |     0.720 | 
#                    |     0.796 |     0.333 |           | 
#                    |     0.665 |     0.055 |           | 
#--------------------|-----------|-----------|-----------|
#                yes |        34 |        22 |        56 | 
#                    |     0.607 |     0.393 |     0.280 | 
#                    |     0.204 |     0.667 |           | 
#                    |     0.170 |     0.110 |           | 
#--------------------|-----------|-----------|-----------|
#       Column Total |       167 |        33 |       200 | 
#                    |     0.835 |     0.165 |           | 
#--------------------|-----------|-----------|-----------|

多分类:使用鸢尾花数据

y=sample(1:150,30)
iris_train<-iris[-y,]
iris_test<-iris[y,]
iris_test
multi<-ksvm(Species~.,data=iris_train,kernel="rbfdot")
predictions_species<-predict(multi,iris_test)
table(iris_test$Species,predictions_species)

结果:

predicted_species
actual species setosa versicolor virginica
setosa 11 0 0
versicolor 0 6 0
virginica 0 1 12

你可能感兴趣的:(机器学习,支持向量机)