R数据预处理和并行计算简介

简介:

R语言数据预处理有很多包,但由于历史原因,部分包读写数据、数据转化速度较慢,本文主要介绍部分常用的高效的R语言数据预处理包。推荐使用Revolution Analytics公司提供的R版本,同时Rstudio的免费IDE也非常适合编写R脚本程序。 

  • 快速读取数据readr包 

基于C++的SourceFile, SourceString, SourceRaw的文件API接口,避免了数据的复制和分配,能更加快速的读取格式化的数据。同时,readr将读取的数据列转化为多种不同类型的vector,如BigInteger (64 bit)和Time类型。 

读取文件时建议使用read_csv()和write_csv() ,可以加快IO性能。

  • 使用dplyr和tidyr清洗数据 

dplyr相比plyr更快更高效,能和tidyr一起高效清洗数据。同时也能读取数据库的数据、处理超过内存容量的数据。dplyr能对数据进行行和列的筛选select、group、combine(类似sql中的左连接(保存左表中的数据行、右表中未出现的数据行删除)、右连接、全连接、内连接等)、summarise等。除此之外R采用%>%来对于数据进行类似linux中的pipline处理,能保证数据处理更高效,可读性更好。 

tidyr能有效整理数据,经常和dplyr配合使用。更多详细的函数命令可以参考tidyR和dplyr用法

  • 并行计算包doParallel

使用randomForest等包时,由于需要生成多个CART树,需要较大的计算量和内存,通常可使用foreach、doParallel、parallel等包进行处理数据。比如使用如下代码。 

library(randomForest) 

library(foreach) 

 cl <- makeCluster(4) 

 registerDoParallel(cl) 

 rf .model<- foreach(ntree=rep(250, 4),  .combine=combine, 

          .packages='randomForest') %dopar% 

          randomForest(x = data.matrix(train[,feature.names]),y= train$target,ntree=ntree) 

stopCluster(cl) 

  • 安装OpenBLAS、revolutionary R的 MKL加速矩阵运算 

通常R语言采用单个CPU进行矩阵运算,这样对于计算密集型的任务很慢,可以安装OpenBLAS、MKL等包进行多核的矩阵运算。比如Revolution R就提供了专门的MKL安装包,推荐https://mran.revolutionanalytics.com/download/#download,可以加速矩阵运算。 

  • 使用openMP和CPP编写R包 

R语言底层的代码可以基于C\C++\Fortran语言进行计算,并打包为R packages进行使用,应此对于很多需要并行计算的R语言程序,可以使用gcc、openMP等支持共享内存系统中的的多核并行包,可以非常快的加速计算。

参考资料:

(1)http://www.revolutionanalytics.com/get-revolution-r

(2)http://www.r-bloggers.com/r-r-with-atlas-r-with-openblas-and-revolution-r-open-which-is-fastest/

(3)http://www.r-bloggers.com/lang/chinese/1131

目录
相关文章
|
编解码 前端开发
【核磁共振成像】临床基本通用脉冲序列(一)
【核磁共振成像】临床基本通用脉冲序列
|
缓存 安全 Nacos
nacos常见问题之Nacos报错权限认证失败如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
|
12月前
|
XML 数据格式 Python
从手动编辑到代码生成:Python 助你高效创建 Word 文档
本文介绍如何用Python实现Word文档自动化生成,结合python-docx、openpyxl和matplotlib库,高效完成报告撰写、数据插入与图表生成,大幅提升办公效率,降低格式错误,实现数据驱动的文档管理。
1422 2
|
12月前
|
人工智能 文字识别 搜索推荐
uTools软件安装教程及使用教程!一个跨平台的桌面效率工具!快速办公软件
uTools是一款跨平台效率工具,支持Win/Mac/Linux,通过“Alt+空格”呼出搜索框,集成OCR、翻译、计算器、剪贴板等数十款插件,打造个性化办公环境,轻量高效,即开即用。
2434 2
|
机器学习/深度学习 人工智能 自然语言处理
Java 大视界 -- Java 大数据机器学习模型在自然语言生成中的可控性研究与应用(229)
本文深入探讨Java大数据与机器学习在自然语言生成(NLG)中的可控性研究,分析当前生成模型面临的“失控”挑战,如数据噪声、标注偏差及黑盒模型信任问题,提出Java技术在数据清洗、异构框架融合与生态工具链中的关键作用。通过条件注入、强化学习与模型融合等策略,实现文本生成的精准控制,并结合网易新闻与蚂蚁集团的实战案例,展示Java在提升生成效率与合规性方面的卓越能力,为金融、法律等强监管领域提供技术参考。
|
关系型数据库 MySQL 数据库
为什么 MySQL 不推荐用 Docker 部署?
本文探讨了MySQL是否适合容器化的问题,分析了Docker容器在数据安全、性能瓶颈、状态管理及资源隔离等方面的挑战,并指出目前主流分布式数据库如TDSQL和OceanBase仍倾向于部署在物理机或KVM上。
541 0
|
小程序 编译器 数据安全/隐私保护
小白保姆级教程:微信公众号开发,从0到1
【8月更文挑战第8天】小白保姆级教程:微信公众号开发,从0到1
5195 3
小白保姆级教程:微信公众号开发,从0到1
|
机器学习/深度学习 人工智能 供应链
AI在各行业的具体应用与未来展望
人工智能(Artificial Intelligence, AI)作为一项颠覆性技术,正在逐步改变我们的生活和工作方式。从语音助手到自动驾驶汽车,AI的应用已经深入到各个领域。本文将详细探讨AI在不同行业中的具体应用,以及未来可能的发展方向。
4759 6
|
算法 数据可视化 C++
OpenCASCADE Outline
OpenCASCADE Outline eryar@163.com      有网友反映blog中关于OpenCASCADE的文章比较杂乱,不太好找,最好能提供一个大纲,这样方便查找。于是决定将这些学习时写的文章整理下,方便对OpenCASCADE的学习理解。
3534 0