総当りで的中率が高いモデルを探してくるとか、いかにもやっちゃいけないことをやっている。とりあえずこれでよさそうなモデルとかに当たりを付けるということをやってる。
twitter <- read.csv("/home/yasuhisa/twitter.txt",header=FALSE) source("/home/yasuhisa/twitter.R") head(twitter) twitter <-twitter[!apply(apply(twitter[-1],1,is.na),2,any),] attach(twitter) per<-following/followers apply(twitter[-1],2,length) apply(twitter[-1],2,summary) is_otaku <- ifelse(is_otaku + is_otaku_in_blog + is_blog_in_bio> 0,1,0) is_blog <- ifelse(is_blog_in_bio + is_blog_in_web > 0,1,0) is_students <- ifelse(is_students + is_students_in_blog > 0,1,0) is_program <- ifelse(is_program + is_program_in_blog > 0,1,0) is_otaku_by_bayes <- ifelse(is_otaku_in_bio_by_bayes +is_otaku_in_entry_by_bayes > 0,1,0) reg <- c() for(i in 2:length(grid[,1])){ reg[i-1] <- list(twit[grid[i,]==1]) } max = 0 max_reg = "" for(i in 1:length(reg)){ reg_string <- "" for(j in 1:length(reg[[i]])){ if(j ==1){ reg_string <- paste(reg_string,reg[[i]][j],sep="") #モデルの説明変数が1個の時を忘れてしまっている #ここにif(j==length(reg[[i]]))を入れて計算させないと全部の式はでない }else if(j==length(reg[[i]])){ reg_string <- paste(reg_string," + ",reg[[i]][j],sep="") reg_string <- paste("Tooth.glm<-glm(is_follow~",reg_string,", family=binomial)",sep="") eval(parse(text=reg_string)) # print(eval(parse(text=paste("summary(",reg_string,")",sep="")))) 予測値<-fitted(Tooth.glm) 予測値1<-round(予測値) # print(table(is_follow,予測値1)) table <- table(is_follow,予測値1) if(!is.na(((table[1]+table[4])/sum(table(is_follow,予測値1))))){ if(((table[1]+table[4])/sum(table(is_follow,予測値1))) > 0.73){ print(reg_string) fitted(Tooth.glm)[1:10] print((table[1]+table[4])/sum(table(is_follow,予測値1))) if(((table[1]+table[4])/sum(table(is_follow,予測値1))) > max){ max <- ((table[1]+table[4])/sum(table(is_follow,予測値1))) max_reg <- reg_string } } } }else{ reg_string <- paste(reg_string," + ",reg[[i]][j],sep="") } } } print(max) print(max_reg) print(eval(parse(text=paste("summary(",reg_string,")",sep="")))) system("ruby /home/yasuhisa/alert4twitter.rb") Tooth.glm<-glm(is_follow~ favorites + update + per + entry_size + is_otaku + is_students + is_program + is_friend, family=binomial) #summary(Tooth.glm) 予測値<-fitted(Tooth.glm) 予測値1<-round(予測値) table <- table(is_follow,予測値1) (table[1]+table[4])/sum(table(is_follow,予測値1))