佩林数(Perrin numbers)是一个整数数列,以P(n)表示,其中 n 为非负整数。佩林数列的定义如下:
在周二我给精算师上的5小时机器学习速成课结束时,皮埃尔问了我一个有趣问题,是关于不同技术的计算时间的。我一直在介绍各种算法的思想,却忘了提及计算时间。我想在数据集上尝试几种分类算法来阐述这些技术。
提升R代码运行速度并不需要很高级的优化技术, 例如代码并行化, 使用数据库, 使用c++等. 实际上, 通过简单的操作, 就能够是R的运算速度显著的加快, 下面介绍几种方法.
一般来说,c() 是创建向量的语法,但R 也提供了一些例外:可不要因为它们养成坏习惯了哦。
本文主要使用它作为示例来对比算法和实现方式(R与Rcpp)对计算效率的影响,以及在 R 中如何简单使用 C++。
不知道大家有没有用read.table和read.csv读取过文件,当文件不大的时候你可能还感觉不出读取速度,但是当文件比较大的时候,比如有上万行的时候,你就会感觉到等待时间明显变长,甚至无法忍受。
以前在处理gis数据的时候,都是直接导入本地shp素材、本地geojson素材,本地topojson素材,自从接触postgis数据之后,深感使用规范的存储系统来统一管理gis数据的好处,特别是数据量大了之后,优势便更加明显,你可以选择将很多需要做空间计算的步骤转移到Postgis数据库内进行计算,要知道Postgis提供的空间计算能力与R和Python这种应用导向的工具相比,优势要大得多。
随着单细胞相关研究成果的井喷式爆发,单细胞领域已进入百万级甚至千万级细胞量的时代。因此有不少R语言党(包括我)开始学习Python,使用Scanpy流程。但是,由于习惯了Seurat流程,有些时候需要把Anndata对象的单细胞数据转为Seurat对象,然后使用R语言进行一些分析。而最大的问题在于,如何丝滑的将Anndata对象的h5ad格式与Seurat对象相互转换。本文基于一个百万级的单细胞测试数据,对多种互转软件进行测评并总结。希望能够帮助到大家~
不再是循环,而是向量操作,这个包的目的是简化apply类函数。 其相当于split和apply函数的整合。
做单细胞数据分析的时候,我们经常会从公共数据库,或者从别人那里得到一个seurat对象,有些人可能想从这个seurat对象中提取原始的表达矩阵,自己再从头分析一遍。那么今天小编就讲讲怎么实现,我们以SeuratData这个包里面自带的pbmc3k这套数据为例。
大家会不会经常遇到这样的情况,需要在一系列的目标文本中,匹配搜索一系列特征文本,且这些特征文本可能在该某一目标文本中重复出现。例如如下数据集:
Hadley Wickham 和 RStudio团队写了一些新的R包,这些包对于每个需要在R中读入数据的人来说都是非常有用的。readr包提供了一些在R中读入文本数据的函数。readxl包提供了一些在R中读入Excel电子表格数据的函数。它们的读取速度远远超过你目前正在用的一些函数。
特征函数能够唯一确定随机变量的概率分布,如果随机变量的概率密度函数f(x)存在,特征函数相当于 f(x)的傅里叶变换。
上一篇中,主要介绍了使用foreach包来在R语言环境中实现任务的并行处理,其实在R语言中还有另外一个多进程包同样可以完成多进程任务,那就是parallel包,其语法与R语言内置的apply组函数以及plyr包内的_pply组函数一致。 library("parallel") detectCores() #计算计算机核心数: detectCores(logical=F) #获取实际物理核心数 以下可以通过这两个包来对比一下,同样的代码环境下,两者之间的性能如何。 library("h
最近团队在使用R语言作为算法的实践语言,通过人工策略和xgboost算法进行一些价格算法的控制和输出,发现一些代码中对于内存、CPU、程序设计思想以及现代统计算法并不是很熟悉,于是特写此篇普及一下知识,也算是我对R语言的入门文章吧。
如果要导出给定分布的矩,则一些矩生成函数很有趣。另一个有趣的特征是,在某些情况下,此矩生成函数(在某些条件下)完全表征了随机变量的分布。
相信大部分R语言初学者,在刚开始入门之处,都曾被告诫在处理多重复任务时,尽量不要使用显式的for循环,而要尽可能的使用R语言内置的apply组函数,这样可以极大地提高代码运行效率。 但是实际上除了内的apply组函数之外,你还有另外一个更好地选择,就是利用一些支持并行运算的扩展包,来发挥本地计算机的多和计算优势。 本篇要讲解的包是foreach包,这是一个支持在R语言中调用多进程功能的第三方包,之前在对比显式循环、矢量化函数以及多进程在数据抓取的效率一文中,曾经演示过具体的代码。 library("fore
参考:https://www.math.pku.edu.cn/teachers/lidf/docs/Rbook/html/_Rbook/prog-prof.html
从上面记录的运行时间来看,scale.data数据CPU的计算时间(63.273s)相比counts和data数据快了不少,这是因为默认的scale.data数据只有2000个基因。对所有基因scale之后再次测试scale.data数据,CPU的计算时间变成了235.689s,相比counts数据和data数据没有任何优势。
虽然之前也在[[50-R茶话会10-编程效率提升指北]] 中提过向量化可以极大的改善效率。
数据抓取中的密集任务处理,往往会涉及到性能瓶颈,这时候如果能有多进程的工具来进行支持,那么往往效率会提升很多。 今天这一篇分享在R语言、Python中使用调用多进程功能进行二进制文件下载。 导入待下载的文件: library("dplyr") mydata<-read.csv("D:/Python/File/toutiaoreport.csv",stringsAsFactors = FALSE,check.names = FALSE) 抽取报告的url和报告名称: mydata1<-mydata[1:10
使用方法非常简单, 就是 makeCluster 函数定义好需要并行计算的线程数量,然后之前的apply家族循环就区别在函数名字前面加上par的签字,比如 lapply就替换成为了 parLapply 函数。
LC-MASS,GC-MASS等简称对于药物研发的人应该相当不陌生,但是对于它们产生的数据的进一步分析,反而显得心有余而力不足。今天我们给大家介绍一下R语言中是如何把质谱数据进行提取的。
参考:https://blog.csdn.net/weixin_41929524/article/details/81707053https://www.jianshu.com/p/3882ea7b9cc9
需要使用C++编译器,安装方法取决于操作系统,Linux:一般安装了R就会安装了;Mac:Xocode;Windows:Rtools,与版本要对应。需要用到的包:microbenchmark, ggplot2movies, profvis, Rcpp
方程的求根大家应该在高中就已深入骨髓,今天给大家介绍下在R语言中如何实现方程的求根以及方程中参数的确定。我们需要借助R包rootSolve开始我们的教程。包的安装就不再赘述了。直接进入主题,在此包中求根函数涉及以下三个:
上一次说到通过PAM50基因进行乳腺癌分型,利用的就是自己的表达矩阵和PAM50基因比较,看表达量变化进行分类。细胞周期分类和PAM50类似,也是利用基因来推断G、S、M期(https://en.wikipedia.org/wiki/Cell_cycle)
本章主要是代码标准与技术的内容,需要安装的包是lubridate和dplyr,这些包用来演示良好的实践。高效协作的5条高级技巧:
经常会遇到下载的基因表达数据,是分散在多个数据文件中,而我们为了得到基因表达矩阵,则必须要做的一步就是通过R语言合并这些表达文件。所以这里我们做一下几种不同的方法的对比:
之前曾经写过一篇关于知乎live课程信息爬取的短文,那个直接遍历的知乎live主页上展示的部分课程,仅仅是很小的一部分。 今日这一篇将是该小项目的升级版,直接对live主页的课程按照模块进行二级页面的遍历,这样可以抓取更加丰富的课程信息,本次一共获取课程数目将近800+ 对于课程页抓包分析详情,这里不再赘述,想要了解的可以看这一篇旧文,本篇内容仅对二级页面的遍历思路进行整理。 R语言爬虫实战——知乎live课程数据爬取实战 因为课程数相对较多,这里使用cookie直接登录,需要获取cookie值。 lib
地理位置信息的解析与逆解析可能是我们在分析地理位置数据时所面临的最棘手的问题了,好在现在很多主流的在线 地图厂商地给开发者提供了免费的API接口调用。 这一篇以百度地图API为例,演示如何在R语言以及Python中通过调用API实现地理位置的解析与逆解析,即将地址转换为具体经纬度,将经纬度转换为具体的地址。 免费API调用需要开发者自己在百度地图开放平台上注册APPkey,每日限调6000次,因为是免费的,所有人都可以申请注册,注册地址如下。 http://lbsyun.baidu.com/apiconso
这一篇涉及到如何在网页请求环节使用多进程任务处理功能,因为网页请求涉及到两个重要问题:一是多进程的并发操作会面临更大的反爬风险,所以面临更严峻的反爬风险,二是抓取网页数据需要获取返回值,而且这些返回值需要汇集成一个关系表(数据框)(区别于上一篇中的二进制文件下载,文件下载仅仅执行语句块命令即可,无需收集返回值)。 R语言使用RCurl+XML,Python使用urllib+lxml。 library("RCurl") library("XML") library("magrittr") 方案1——自建显式循
apply函数族是R语言中数据处理的一组核心函数,通过使用apply函数,我们可以实现对数据的循环、分组、过滤、类型控制等操作。但是,由于在R语言中apply函数与其他语言循环体的处理思路是完全不一样的,所以apply函数族一直是使用者玩不转一类核心函数。
Harmony需要输入低维空间的坐标值(embedding),一般使用PCA的降维结果。Harmony导入PCA的降维数据后,会采用soft k-means clustering算法将细胞聚类。常用的聚类算法仅考虑细胞在低维空间的距离,但是soft clustering算法会考虑我们提供的校正因素。这就好比我们的高考加分制度,小明高考成绩本来达不到A大学的录取分数线,但是他有一项省级竞赛一等奖加10分就够线了。同样的道理,细胞c2距离cluster1有点远,本来不能算作cluster1的一份子;但是c2和cluster1的细胞来自不同的数据集,因为我们期望不同的数据集融合,所以破例让它加入cluster1了。聚类之后先计算每个cluster内各个数据集的细胞的中心点,然后根据这些中心点计算各个cluster的中心点。最后通过算法让cluster内的细胞向中心聚集,实在收敛不了的离群细胞就过滤掉。调整之后的数据重复:聚类—计算cluster中心点—收敛细胞—聚类的过程,不断迭代直至聚类效果趋于稳定。
可以看到并行计算香对于多核串行计算在提高效率方面说有大的提高,本节内容介绍到此结束过程仅供参考;
这篇是基因组选择的理论加实践,因为我看到一句话,Talk is cheap. Show me the code,很有感触,有感而写。使用的包是R的sommer和asreml,其实强健的还是成熟的软件,比如DMU,BLUPF90,PIBLUP,ASreml等,但sommer作为基本功能的演示,非常合适。
前几期的大猫课堂中大猫教了大家“10行代码搞定滚动回归”,在那一期的最后大猫说文章中给出的是目前大猫看到的最快的实现方法,“如果有发现更快方法的小伙伴一定要联系大猫”,emmmm……现在看来大猫不得不自己寻找更快的方法了,因为大猫前几天遇到了这样一个需求:需要处理大约2700个股票的120日滚动回归,每次滚动回归包含一个OLS以及一个GARCH拟合。按照平均每个股票7年历史,每年250个交易日来算,那就大约需要完成2700*7*250*2=940万次拟合!这个运算在大猫的i7 3.5G+32G+1T SSD的地球人上似乎要永远运行下去,于是大猫只得乖乖停止进程思考提高运算效率的办法。
其实之前读了李东风老师的内容,感觉收获颇丰;但因为自己的业务逻辑过于简单,渐渐又荒废掉了。
前三章中列出的大多数示例代码都很短,并没有涉及到复杂的操作。从本章开始将会把前面介绍的数据结构组合起来,构成真正的程序。大部分程序是由条件语句和循环语句控制,R 语言中的条件语句(if-else)和 C 语言中类似此处就不再介绍,循环语句包括 for 和 while 控制块。循环是社交网络分析的主旋律,比如使用 for 循环遍历分析网络中的每一个节点。当网络规模足够大时,并行处理又变得十分必要。熟练掌握本章的内容后,你的程序将会优雅而自然。
在使用R语言过程中,每一步中都需要关注R语言的数据结构。数据结构是R语言中最重要的内容,也是最难的一部分,学会了这部分之后,R语言就不难了。很多时候,函数无法运行,都是因为数据结构的问题。在学习R语言数据结构之前需要首先了解下数据的类型。
作为菜鸟分析师一枚,日常工作中需要处理大量地理位置相关(如城市、辖区、街道、商场、楼宇等)数据。分析报告中总是用吐了的柱形图、条形图,不仅自己看着辣眼睛,老板也审美疲劳。
曼哈顿图(manhattan plot),是一种类似曼哈顿摩天大楼排列的一种展示图。如下图所示。
单细胞数据 hub 之前域名是 https://singlecell.xenahubs.net,现在是 https://singlecellnew.xenahubs.net,已更新。
在掌握一定的 R 编程技能后,我们开始迈入数据分析的殿堂。大部分数据分析事务的数据都不是通过 R 创建,而是来自于各种数据收集软硬件、渠道,包括 Excel、网络等。本章聚焦于如何将数据导入 R 中以便于开始数据分析。对于本章的内容,读者既可以系统地从头到尾深入阅读学习,也可以根据自己实际工作需要或时间限制选择一些重点或感兴趣内容进行掌握。
如果我们有比较强的背景知识,或者看了如下分布的条形图,会下意识的猜想出是两个高斯分布的混合,但是想从数据的角度来探索,两个独立的高斯分布各自独立的均值和方差该如何推测出来呢?
数据处理在数据分析流程中的地位相信大家都有目共睹,也是每一个数据从业者面临的最为繁重的工作任务。 在实际应用场景下,虽然SQL(SQL类专业的etl语言)是数据处理的首选明星语言,性能佳、效率高、容易培养数据思维,但是SQL没法处理构建全流程的数据任务,之后仍然需要借助其他数据分析工具来对接更为深入的分析任务。 R语言作为专业的统计计算语言,数据处理是其一大特色功能,事实上每一个处理任务在R语言中都有着不止一套解决方案(这通常也是初学者在入门R语言时,感觉内容太多无从下手的原因),当然这些不同方案确实存在
还可以尝试一下同一个团队早在2014年就出品的R包之 pRRophetic ,也可以对你的表达量矩阵进行药物反应预测啦!很有意思的是这个包虽然是2014就发表了,文章是:《pRRophetic: An R Package for Prediction of Clinical Chemotherapeutic Response from Tumor Gene Expression Levels》
连接、搭建H2o环境(heo.init())——数据转换成h2o格式(as.h2o)——模型拟合(h2o.deeplearning)——预测(h2o.predict)——数据呈现(h2o.performance)。
Zabbix运维工程师,熟悉Zabbix开源监控系统的架构。乐于分享Zabbix运维经验,个人公众号“运维开发故事”。
【画图】与SARS-CoV-2病毒结合ACE2基因表达正相关的LncRNA有哪些?
领取专属 10元无门槛券
手把手带您无忧上云