《R语言数据分析》——3.3 测试-阿里云开发者社区

开发者社区> 华章计算机> 正文

《R语言数据分析》——3.3 测试

简介:
+关注继续查看

本节书摘来自华章出版社《R语言数据分析》一书中的第3章,第3.3节,作者盖尔盖伊·道罗齐(Gergely Daróczi),潘怡 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.3 测试

正如在前述章节中讨论过的内容一样,借助microbenchmark包,我们可以在一台机器上重复执行若干遍函数,以获得一些可重现的性能测试结果。

现在,需要先定义作为测试基准的函数,以下一些函数都是从前面样例中挑选出来的:

QQ_20170525133809
QQ_20170525133814

前面已经介绍过dplyr包的summarise函数需要耗费一些时间用于数据预处理,因此下面我们将重新定义一个函数能够支持在聚集操作时生成新的数据结构:

QQ_20170525133822

类似地,在测试data.table时,也需要一些专门用于测试环境的附加变量,由于hlf?ights_dt已经根据DayofWeek的值进行了排序,我们可以为测试创建一个新的data.table对象:

QQ_20170525133827

更进一步地,说清楚该对象没有键值可能也有些必要:

QQ_20170525133906

现在,我们可以对data.table测试案例上定义函数,并且实现对象到data.table的转换,同时为了和dplyr一致,在转换后的data.table上添加键值:

QQ_20170525133912

到这一步,我们已经完成了测试的准备任务,下面可以导入microbenchmark包继续后面的工作了:

QQ_20170525133916
QQ_20170525133921

结果非常不错:从之前高于2000毫秒的执行时间,经过工具优化后,缩短为只需要大约1毫秒的时间:

QQ_20170525133925

因此,看起来dplyr包是最有效的解决方法,尽管它需要考虑一些额外(对data.frame进行分组)的操作,该方法依然具有毋庸置疑的优势。事实上,如果我们已经准备好了一个data.table对象,就能够节约从data.frame转换到data.table的时间,而data.table的效果要比dplyr更好。不过我估计读者可能并未注意到两个高效方案在时间上的差别。在处理更大规模的数据集时,这两种方法性能都不错。

值得注意的是,dplyr包只能处理data.table对象,因此,我们不用固定在任意一种方法上,在必要时同时使用两种方法都可以。以下是一个POC样例:

QQ_20170525133930
QQ_20170525133933

现在,我们已经对使用data.table或者是dplyr计算数据分组平均值的过程非常清楚了。但假如是更复杂的操作又该如何解决呢?

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
增补mysql的性能优化数条经验
增补mysql的性能优化数条经验
6 0
Java组合模式(Composite)
把部分和整体的关系用树形结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象.
3 0
吴恩达机器学习 Coursera 笔记(二) - 单变量线性回归(上)
吴恩达机器学习 Coursera 笔记(二) - 单变量线性回归
5 0
教妹学Java(四):Hello World
教妹学Java(四):Hello World
4 0
云迁移SaaS如何入驻阿里云工具应用市场
HyperMotion SaaS是一款基于云原生理念开发的云迁移和云灾备的SaaS平台,2020年7月,HyperMotion迁移版本正式入驻阿里云工具应用市场。用户登陆阿里云后,可以直接以SaaS模式使用产品,而无须再到云市场启动实例的方式。由于与阿里云的用户体系、RAM系统、支付系统彻底打通,用户在使用感受上更加便捷。
6 0
四所中国高校夺冠三大赛道,这场24个国家2500多支队伍角逐的算法竞赛刚刚落幕
可以「欺骗」神经网络的对抗样本是近期计算机视觉,以及机器学习领域的热门研究方向。为了让 AI 能够抵御攻击,研究人员一直在寻找构建稳固机器学习算法的道路。最近,在国际顶级人工智能大会 IJCAI 上,一场有关人工智能安全的攻防战落下了帷幕。
6 0
强烈推荐10本程序员必读的书
强烈推荐10本程序员必读的书
5 0
Java模板模式(template)
java23中设计模式中的模板模式是我们经常在框架源码中能看到的设计模式,所以本文就给大家来介绍下模板模式
6 0
KDD 2019 | 不用反向传播就能训练DL模型,ADMM效果可超梯度下降
随机梯度下降 (SGD) 是深度学习的标准算法,但是它存在着梯度消失和病态条件等问题。本文探索与反向传播(BP)完全不同的方向来优化深度学习模型,即非梯度优化算法,提出了「反向前向的交替方向乘子法」的深度模型优化算法,即 dlADMM。该方法解决了随机梯度下降存在的问题,在多个标准数据集上达到并超过梯度下降算法的效果,并且第一次给出了全局收敛的数学证明。同时增强了算法的可扩展性,为解决一些当前重要的瓶颈问题提供了全新视角,比如复杂不可导问题以及非常深的神经网络的高性能计算问题。目前,该论文已被数据挖掘领域顶会 KDD 2019 接收。
4 0
【愚公系列】2021年11月 C#版 数据结构与算法解析(哈希)
【愚公系列】2021年11月 C#版 数据结构与算法解析(哈希)
6 0
10059
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载