機械学習(総集編caret編)

今日はcaretパッケージの分類を使っていきます。
methodにサポートベクターマシン(svmRadial)、
ニューラルネットワーク(nnet)、k近傍法(knn)、
単純ベイズ(nb)、ランダムフォレスト(rf)、
決定木(rpart)などを指定できる便利なパッケージです。
irisを読み込み、教師データと検証用に分割します

data(iris)
n<-seq(1,nrow(iris),by=2)
iris.train<-iris[n,]
iris.test<-iris[-n,]

caretパッケージを読み込みます

library("caret")

上から順番にk近傍法、サポートベクターマシン、
ニューラルネットワーク、ランダムフォレスト、単純ベイズ、決定木、

iris.knn<-train(data=iris.train,Species~.,method = "knn") 
iris.svm<-train(data=iris.train,Species~.,method = "svmRadial")
iris.nnet<-train(data=iris.train,Species~.,method = "nnet"tuneGrid = data.frame(size = 3, decay = 0.1))
iris.rf<-train(data=iris.train,Species~.,method="rf")
iris.nb<-train(data=iris.train,Species~.,method = "nb")
iris.rpart<-train(data=iris.train,Species~.,method="rpart")

method=""で指定すれば、教師データを作成できて非常に便利です
検証用データで分類します

pred.knn<-predict(iris.knn,iris.test)
pred.svm<-predict(iris.svm,iris.test)
pred.nnet<-predict(iris.nnet,iris.test)
pred.rf<-predict(iris.rf,iris.test)
pred.nb<-predict(iris.nb,iris.test)
pred.rpart<-predict(iris.rpart,iris.test)

予測性能を評価します(それぞれ"method"にはknn、svm、rfを入れてます)

("method".tab<-table(iris.test$Species,pred."method"))
sum(diag("method".tab))/sum("method".tab)

caretは自動で変数をチューニングしてくれるのも便利です

精度のみ確認しておきます
> sum(diag(knn.tab))/sum(knn.tab)
[1] 0.9866667
> sum(diag(svm.tab))/sum(svm.tab)
[1] 0.92
> sum(diag(nnet.tab))/sum(nnet.tab)
[1] 0.9466667
> sum(diag(rf.tab))/sum(rf.tab)
[1] 0.96
> sum(diag(nb.tab))/sum(nb.tab)
[1] 0.96
> sum(diag(rpart.tab))/sum(rpart.tab)
[1] 0.9466667

この記事が気に入ったらサポートをしてみませんか?