本文介绍了四种分类器在R语言中的应用,包括数据预处理、分类器建立以及准确性评估。

1.数据预处理

本文选择的数据样本包括正常组织或癌症组织,每个样本都有若干个基因数据。数据预处理大致分为3个步骤:(1)缺失值处理;(2)特征选择;(3)将数据集分为测试集和训练集。下面将依次进行介绍。

(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){if(!all(dim(table)==c(2,2)))stop("Must be a 2 X 2 table")tn=table[1,1]fp=table[1,2]fn=table[2,1]tp=table[2,2]sensitivity=tp/(tp+fn)ppv=tp/(tp+fp)accuracy=(tp+tn)/(tp+tn+fp+fn)result<-paste("Sensitivity = ",round(sensitivity,n),"\nPositive Predictive Value = ",round(ppv,n),"\nAccuracy = ",round(accuracy,n),"\n",seq=" ")cat(result)
}
performance(logit.perf)
performance(dtree.perf)
performance(forest.perf)
performance(svm.perf)

常用分类器之R语言篇相关推荐

  1. 9月20日云栖精选夜读 | 如何轻松搞定数据科学面试:Python&R语言篇

    对于数据科学家来说,工作的一大部分都需要在交互式编程环境中对数据进行处理.分析和可视化. 在过去几年,R语言和Python成了进行数据科学中最炙手可热的两种语言.这两种语言各有优缺点,掌握这两种语言大 ...

  2. 统计学习导论之R语言应用(四):分类算法R语言代码实战

    统计学习导论之R语言应用(ISLR) 参考资料: The Elements of Statistical Learning An Introduction to Statistical Learnin ...

  3. 电影评论分类:二分类问题 —— R语言实现

    前言 在R和Python之间如何进行选择一直是一个热议的话题.机器学习世界也被不同语言偏好所划分.但是随着深度学习的盛行,天平逐渐向Python倾斜,因为截至目前为止Python具有大量R所没有的深度 ...

  4. pythonr语言三种基本结构_如何轻松搞定数据科学面试:Python&R语言篇

    作者: Carson Forter 编译: Mika本文为 CDA 数据分析师原创作品,转载需授权 对于数据科学家来说,工作的一大部分都需要在交互式编程环境中对数据进行处理.分析和可视化. 在过去几年 ...

  5. 潜在类别分析之R语言篇

    潜在类别分析(LCA)是通过对类别型的外显变量和潜在变量之间的关系建立统计模型,来估计外显变量之间的关系. 潜在类别分析要求潜在类别变量均为二分类变量.详细代码如下: # 安装包 install.pa ...

  6. 数据分析-R语言资料整理

    独家分享--48页PPT解密数据可视化! Excel图表快捷操作小技巧 基于随机森林的分类与回归 R语言制作网页 ggplot2:可视化设计师的神器,了解一下 [译]R包介绍:Online Rando ...

  7. 《数据科学中的R语言》之字符串处理入门

    原文地址:http://r4ds.had.co.nz/strings.html 作者:Hadley Wickham 介绍 1 前提条件 字符串基本操作 1 字符串长度 2 合并字符串 3 分割字符串 ...

  8. 方差分析中怎么看有无显著性影响_用R语言做单因素方差分析及多重比较

    SPSS方差分析的应用已经做得非常好了,绝大多数的方差分析问题均可通过SPSS"点菜单"的方式得以解决,R语言在统计和可视化方面有自己的特色,我们不妨来对比着学习.选用R语言自带案 ...

  9. 基于R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作

    详情链接 :基于R语言.MaxEnt模型融合技术的物种分布模拟.参数优化方法.结果分析制图与论文写作 内容介绍:  第一章 .理论篇 以问题导入的方式,深入掌握原理基础 : 什么是MaxEnt模型? ...

最新文章

  1. 软件测试培训怎么学?有没有发展前景?
  2. date oracle 表中_从 MySQL 迁移数据到 Oracle 中的全过程
  3. linux脚本结束语,读《Linux Shell脚本攻略》第9章笔记—结束语
  4. 获取表单内部元素的N种方法
  5. 如何在ASP.NET服务器控件库中嵌入JavaScript脚本文件 [适用于.NET 2.0]
  6. MongoDB 主从集群配置
  7. 天池 在线编程 回文子串(区间动态规划)
  8. JavaWeb中集成UEditor
  9. APP设计|搜索页面设计灵感
  10. 路边的小花 2010/05/15@多摩川
  11. Spring系列技术实战(项目搭建、知识点总结)
  12. 解决IE8 iframe透明的问题
  13. fiddler连接代理手机无法上网问题解决办法
  14. 易到暂停办理线下提现 称贾跃亭隐瞒巨额债务成影响提现关键因素
  15. pygame战棋游戏制作之战棋光标设置上(三)
  16. 软件工程详细设计师竞聘演讲稿
  17. 搜索网页显示找不到服务器,显示:DNS 查找失败,因此找不到 x 的服务器。DNS 是将网站名称解析为互联网地址的网络服务...
  18. 优化嵌入式Linux的启动时间的秘密
  19. 网络命令(ARP、PING)的使用分析
  20. 好文分享 努力从何时开始都不晚 跟自己比 不断进步

热门文章

  1. Linux技术资料锦集及命令大全,让你从新手变高手
  2. 大型软件公司.Net面试常见题(含答案)
  3. c语言鼠标事件的详解,JS鼠标事件(非常详细)
  4. 【Java】FastJson如何返回不带转义字符的json字符串
  5. 编码踩坑——dubbo异常“Service not found“
  6. 信息战争,从过去到未来
  7. 推荐8个超厉害的网站,很多人在偷偷用,你知道几个?
  8. 【原创】2018.07.07 考试 //生气的奶牛 无线电通信 奶牛修 堡垒
  9. 水煮牛肉(砂锅牛肉)
  10. c语言 整数除以分数,3.12数学与应用数学专业人才培养模式改革创新的具体措施与.PDF...