29. 統計に強い言語Rを使用して計算
簡単なプログラムを作成。
入力を変化させて
・過去 約1200回のデータを学習
・99回のデータをテストデータ
で、正解率を確認
#load library for NaiveBayes
library(e1071)
#inport data last line is dummy to predict
#default read.csv is treatin string as factor , so add option and
#convert to factor after add dummy line
indata <- read.csv("DB_FILE.txt",stringsAsFactors=F)
indata <- rbind(indata,c(2000,21001010,2010,10,10,"P",""))
indata$Result <- as.factor(indata$Result)
#get data length
len <- length(indata$Times)
#function to create learning data
Get_Input <- function(num,del=0,TestCount=100){
len <- length(indata$Times)
Res <- matrix(ncol=num+1,nrow=len-num-TestCount-del)
for (i in (1+del):(len-num-TestCount)){
for(j in num:0) Res[i-del,num - j + 1] = indata$Result[i+j]
}
Res
}
#funciton to create test data(include predicting data)
Get_Test <- function(num,TestCount=100){
len <- length(indata$Times)
Res <- matrix(ncol=num+1,nrow=TestCount)
for (i in 1:TestCount){
for(j in num:0 ) Res[i,num -j + 1] = indata$Result[len - num - TestCount + i + j]
}
Res
}
#main fuction to predict last data using naivebayes
Try_NB <- function(num){
nb_input <- data.frame(Get_Input(num,TestCount=100))
nb_input$X1 <- as.factor(nb_input$X1)
nb_test <- data.frame(Get_Test(num,TestCount=100))
nb_test$X1 <- as.factor(nb_test$X1)
nb_model <- naiveBayes(X1~.,nb_input)
predict(nb_model,nb_test)
}
#set # of data to exclude to learning
#TestCount <- 5
#####Main Routine#####
#try naiveBayes with some parameters between 1 to 50
LOOP_MIN <- 1
LOOP_MAX <- 200
for (i in LOOP_MIN:LOOP_MAX) {
res <- Try_NB(i)
cat(res)
cat("n")
}
levels(indata$Result)