本文介紹了四種分類器在r語言中的應用,包括資料預處理、分類器建立以及準確性評估。
1.資料預處理
(1)缺失值處理
缺失值處理通常有兩種方法:刪除和插補。刪除缺失值所在行的**如下:
mydata<-mydata[complete.cases(mydata)
,]
缺失值填補需要用到隨機森林中的na.roughfix()函式,**如下:
install.packages(
"randomforest"
)library(randomforest)
mydata<-na.roughfix(mydata)
(2)特徵選擇
library(randomforest)
mydata$classfi<- ifelse(mydata$genes==
"normal tissue"
,c("0"
),c(
"1")
)mydata<-mydata[,-
1]mydata$classfi<-factor(mydata$classfi,levels=c(0,
1),labels=c(
"normol tissue"
,"tumor tissue"))
set.seed(
1234
)fit<-randomforest(classfi~.,data=mydata,importance=
true
)importance(fit,type =2)
plot(importance(fit,type=2)
mydata<-mydata[
,which(importance(fit,type=2)
>
0.1]
# 這裡的0.1是指篩選出特徵重要性大於0.1的,可根據實際情況進行調整。
(3)將資料分為訓練集和測試集
使用特徵選擇後的資料集來建立分類模型。設定70%資料為訓練集,30%資料為測試集,訓練集用於建立邏輯回歸、決策樹、隨機森林以及支援向量機分類模型,測試集用於評估各個模型的有效性。**如下:
df<-mydata
train<-sample(nrow(df)
,0.7
*nrow(df)
)df.train<-df[train,
]df.test<-df[
-train,
]table(df.train$classfi)
table(df.test$classfi)
2.建立分類模型
(1)邏輯回歸
邏輯回歸模型可用於處理二分類問題,對應於r軟體中的glm()函式。**如下:
fit.logit<-glm(classfi~.,data=df.train,family = binomial(
))summary(fit.logit)
prob<-predict(fit.logit,df.test,type =
"response"
)logit.pred<-factor(prob>.5,levels=c(true,false),labels = c(
"normol tissue","tumor tissue"
))logit.perf<-table(df.test$classfi,logit.pred,dnn = c(
"actual","predicted"
))logit.perf
(2)決策樹
install.packages(
"rpart"
,"rpart.plot"
)library(rpart)
library(rpart.plot)
set.seed(
1234
)dtree<-rpart(classfi~.,data=df.train,method =
"class"
,parms=list(split=
"information"))
dtree$cptable
plotcp(dtree)
dtree.pruned<-prune(dtree,cp=
.0125
)dtree.pred<-predict(dtree.pruned,df.test,type=
"class"
)dtree.perf<-table(df.test$classfi,dtree.pred,dnn = c(
"actual"
,"predicted"))
dtree.perf
(3)隨機森林
library(randomforest)
set.seed(
1234
)fit.forest<-randomforest(classfi~.,data=df.train,importance=
true
)fit.forest
forest.pred<-predict(fit.forest,df.test)
forest.perf<-table(df.test$classfi,forest.pred,dnn=c(
"actual"
,"predicted"))
forest.perf
(4)支援向量機
install.packages(
"e1071"
)library(e1071)
set.seed(
1234
)fit.svm<-svm(classfi~.,data=df.train)
fit.svm
svm.pred<-predict(fit.svm,na.omit(df.test)
)svm.perf<-table(na.omit(df.test)
$classfi,svm.pred,dnn=c(
"actual"
,"predicted"))
svm.perf
3.評估準確性
這裡給出3個用於評估分類器準確性的統計量。最常用的是準確率(accuracy),即分類器是否能正確劃分樣本;正例覆蓋率(sensitivity)是指正類的樣本被**正確的比例;精確度(positive predictive value)是指被**為正類的樣本中**正確的比例。**如下:
performance<-
function
(table,n=2)
performance(logit.perf)
performance(dtree.perf)
performance(forest.perf)
performance(svm.perf)
R語言常用包分類總結
常用包 資料處理 lubridata plyr reshape2,stringr,formatr,mcmc 機器學習 nnet,rpart,tree,party,lars,boost,e1071,bayestree,gafit,arules 視覺化包 ggplot2,lattice,googlevi...
R語言常用包分類總結
常用包 資料處理 lubridata plyr reshape2,stringr,formatr,mcmc 機器學習 nnet,rpart,tree,party,lars,boost,e1071,bayestree,gafit,arules 視覺化包 ggplot2,lattice,googlevi...
r語言npsurv R語言常用包分類總結
常用包 資料處理 lubridata plyr reshape2,stringr,formatr,mcmc 機器學習 nnet,rpart,tree,party,lars,boost,e1071,bayestree,gafit,arules 視覺化包 ggplot2,lattice,googlevi...