常用分類器之R語言篇

2021-10-16 19:44:02 字數 3441 閱讀 2159

本文介紹了四種分類器在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...