Skip to content

Latest commit

 

History

History
145 lines (93 loc) · 4.14 KB

150721.md

File metadata and controls

145 lines (93 loc) · 4.14 KB

--- p.282-------------------------------------------------
supervised learning for classification

LDA, 決定木, SVM分類器の参考サイト:

http://tjo.hatenablog.com/entry/2014/01/06/190456
(分離イメージ)

https://ja.wikipedia.org/wiki/%E6%B1%BA%E5%AE%9A%E6%9C%A8
(決定木)
http://www.sist.ac.jp/~kanakubo/research/neuro/supportvectormachine.html
http://www.r.dl.itc.u-tokyo.ac.jp/~nakagawa/SML1/kernel1.pdf
(SVM)

-----------------------------------------------------------------------------
データ生成

> library(MASS)           MASSライブラリ準備
> load('cancer.rda')   cancer.rdaのロード(このページに添付)
> ls()
[1] "mldata"   変数名確認


> dim(mldata)   
[1]   83 2309



> train_row <- sample(1:83,60) 要素1-83から60個をランダム抽出
> train_row
 [1] 68 61 72 66 24 21 11 47 78 59 12 14 22 18 60 41 46 19
[19] 58 40 34 30  1  5 80 67 20 17 54 13 64 49 69 52 39 83
[37] 28 81 51 82  4 56 55 57 62 77 37  9 42 43 27 73 53 26
[55] 50 16 36 10 33  8

> train <- mldata[train_row,]  訓練データをランダムに60行抽出
> test <- mldata[-train_row,]  train_row番号を取除き23行抽出

> dim(train)
[1]   60 2309
> dim(test)
[1]   23 2309

> summary(mldata)    tumor列の分類ラベルを確認(83行分)
 : : :                                                                                                              tumor

 Min.   :0.0430   Min.   :0.0678   Min.   :0.0446   BL:11  
 1st Qu.:0.2553   1st Qu.:0.4343   1st Qu.:0.1502   EW:29  
 Median :0.3450   Median :0.6512   Median :0.2481   NB:18  
 Mean   :0.4590   Mean   :0.6977   Mean   :0.2806   RM:25  
 [ reached getOption("max.print") -- omitted 2 rows ]





> testClass <- test$tumor   testのtumor正解ラベルを保存しておく
> test$tumor <- NULL     これから分類するのでNULLを代入しておく 

============= LDA ======================================

> myLD <- lda(tumor ~ ., train)  LDAを訓練データで学習
Warning message:
In lda.default(x, grouping, ...) : variables are collinear

<注意>
lda引数は、モデル式定義をtumor以外の全て(tumor~.) を表す
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/71.html


> testRes_lda <- predict(myLD,test)  学習済LDAでtestデータを予測

> sum(testRes_lda$class==testClass)  LDAによる分類正解数を計算
[1] 10
> sum(testRes_lda$class!=testClass)   LDAによる分類間違い数を計算
[1] 13

======= DecisionTree  ======================================


> library(rpart)
> myDT <- rpart(tumor~ ., data = train , control = rpart.control(minsplit=10))

> plot(myDT,uniform=T,margin=0.12)  デフォルトで文字切れるのでパラメータ指定する 
> text(myDT,use.n=T)




> testout_dt <- predict(myDT, newdata=test)
> classes_dt <- round(testout_dt)
> head(classes_dt)
   BL EW NB RM
1   0  0  1  0
15  1  0  0  0
18  1  0  0  0
28  0  1  0  0
31  0  1  0  0
36  0  1  0  0


======= SVM  ======================================


> install.packages('e1071')


Installing package into ‘C:/Users/ekaminuma/Documents/R/win-library/3.1’
(as ‘lib’ is unspecified)
trying URL 'http://cran.rstudio.com/bin/windows/contrib/3.1/e1071_1.6-6.zip'
Content type 'application/zip' length 814888 bytes (795 KB)
opened URL
downloaded 795 KB

package ‘e1071’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in

> library(e1071)
> mySVM <- svm(tumor~., data=train)

> testout_svm <- predict(mySVM, test)
> testout_svm
 1 15 18 28 31 36 37 38 41 43 45 47 48 50 53 58 67 68 69 75 81 84 85 
EW EW BL EW EW EW EW EW EW EW NB EW EW BL BL NB NB NB RM RM RM RM EW 
Levels: BL EW NB RM



===========================================
宿題irisデータで、「LDA, DecitionTree, SVM」の分類結果を求める

> dim(iris)
[1] 150 5
150行のうち、100行を訓練に、50行をテストに使うこと。



-----------------------------------------------------------------------------------------------------
ランダムフォレスト、ロジスティック回帰の参考サイト
http://tjo.hatenablog.com/entry/2013/04/11/190155