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

简介:

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

  • 快速读取数据readr包 

基于C++的SourceFileSourceStringSourceRaw的文件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

目录
相关文章
|
机器学习/深度学习 人工智能 自然语言处理
未来深度学习技术的发展趋势与挑战
随着人工智能的快速发展,深度学习作为其核心技术之一,正面临着多样化和复杂化的挑战。本文探讨了未来深度学习技术的发展趋势,分析了当前面临的技术挑战,并提出了应对策略。 【7月更文挑战第10天】
431 0
|
10月前
|
人工智能 安全 大数据
企业内训|信创工作的技术难点与最佳实践-某央企金科公司
近日,TsingtaoAI组织信创技术专家,为上海某央企金融科技公司研发信创技术企业培训课程。课程通过系统化的理论学习与丰富的案例分析,全面解析信创政策、监管要求、行业趋势以及信创技术的核心难点。课程涵盖信创政策解读、行业信息洞察、业界技术栈分析、核心数据库信创改造、信创终端推广适配等多个模块。通过案例式、项目式和实战式的教学模式,帮助学员在复杂多变的信创环境中高效应对各种挑战。
474 3
|
存储 运维 监控
数据库服务器运维最佳实践
【8月更文挑战第22天】
278 2
数据库服务器运维最佳实践
WPF-布局样式练习-Day02-聊天气泡
WPF-布局样式练习-Day02-聊天气泡
438 1
|
边缘计算 开发工具 UED
互联网新半场的流量生态——阿里云定向免流方案
当你正在游戏中肆意厮杀时,在你跟美女主播互动畅聊时,突然收到这样一条短信,你会不会心头一紧呢?80%的调查反馈显示,是的(个别土豪除外)。毕竟5块钱30M流量就能用一个月的时代已经过去了,我们玩的游戏也从XX玛丽、贪吃X等单机弱联网游戏过渡到了吃量狂魔的MMO、MOBA等大型网游之中。
8877 0
|
Java 应用服务中间件 Apache
An incompatible version [1.2.7] of the APR based Apache Tomcat Native library is installed
An incompatible version [1.2.7] of the APR based Apache Tomcat Native library is installed
An incompatible version [1.2.7] of the APR based Apache Tomcat Native library is installed
|
Cloud Native 前端开发 IDE
「技术人生」第10篇:如何做研发效能提升(即指标体系建设过程回顾)
本文作者将给大家提供一些简单的容易实操的方法,能够让所有人都知道什么是效能的提升,如何提升个人的效能,如何提升团队的效能。
1905 98
「技术人生」第10篇:如何做研发效能提升(即指标体系建设过程回顾)
|
关系型数据库 测试技术 数据处理
实时计算 Flink版产品使用合集之TaskManager宕机是什么原因
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
SQL 关系型数据库 MySQL
一文带你学透MySQL核心——DQL语言
DQL:英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。
642 0