简介:今天,首席CTO注意与您分享R软件的哪些功能来处理大数据集的相关内容。如果您可以解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!
“参考网站1”提到,如果只有整数操作(计算过程和结果仅用于整数),则无需使用“ double”(8个字节),但是较小的“整数”(4个字节)应该使用。使用storege.mode(x)查看对象存款的模式,storage.mode.mode(x)-s值;使用格式(object.size(a),单位='auto')查看对象所占据的内存空间(此处可用,每个整数在r中占用多少空间?)。
您需要解释GC()函数以查看内存使用情况。相似地,清除大对象后,使用GC()释放内存空间。
在“参考URL 2”中提到的li hang,即对于大型矩阵的操作,请尝试避免使用CBind和rbind,因为这将使内存无法分配空间。”对于长度的矩阵,请尝试定义大型矩阵首先,然后逐渐增加”和“注意清除中间物体”。
使用BigMemory家族:BigMemory,BigAnalytics,同步,BigAbulate和Bigalgebra,同时
Biglm。
BigMemory软件包使用:
1.建立一个大记忆对象
BigMemory使用C ++数据格式来“模仿” R中的矩阵。
编写大数据格式文件时,您可以首先建立文件返还。big.matrix
as.big.matrix(x,type = null,selected = false,backingfile = null,backingpath = null,distriptorfile = null,sharone = true)
注意:
big.matrix使用两种存储数据的方法:一种是big.matrix的默认方法。如果内存空间相对较大,则可以尝试;另一个已文件返回。big.matrix.backings),并且需要描述符文件;
“ init”是指矩阵的初始值。如果设置为设置,则设定值将提前填充在矩阵中;如果未设置,它将被处理为NA
“类型”是指big.matrix中原子元素的存储格式。默认值为“双”(8个字节)。它可以更改为“整数”(4个字节),“短”(2个字节)或“ char”(1 Byte).Note:此软件包不支持字符串。type =“ char”是指ASCII代码。
当big.matrix非常大时,请避免使用Rownames和Colnames(并且BigMemory禁止访问元素的名称),因为此方法非常占据内存。如果您必须更改,请使用选项(bigmemory.allow.dall.dabaly.dimnames = true)和然后在Colnames,Rownames中设置。
在命令提示符之后输入x(x是一个大矩阵),它将返回x的描述,并且在所有内容中都不会有任何内容。因此,请注意x [,](打印了所有内容的所有内容矩阵);
如果Big.matrix中有很多列,则应在存储后存储;(不推荐)或将参数“选择”设置为true,以便每列分开存储。否则,数据将存储在R的传统方法中。
如果构建文件返回。作为;同样,随着big.matrix的更改,deripsfile变化;如果要维护更改,则需要重新建立更改。文件返还。.matrix。此功能易于使用,因为在创建文件返回后,每次创建文件后,保存R和退出后,先前创建的矩阵将消失。
2.筛选big.matrix列的特定元素的条件
内存没有限制;比传统(喜欢!)更灵活
mwhich(x,cols,vals,comps,op ='and')
x可以是大的。马trix或传统的R对象;
科尔斯:线
Vals:截止,您可以设置两个,例如C(1,2)
comps:'eq'(==),'neq'(!=),'le'(),'lt'(=),'ge'()和'gt'(=)
OP:“和”或“或”
可以直接比较Na,Inf和-inf
3. BigMemory中的其他功能
nrow,ncol,dimnames,尾巴,头,类型,继承基本软件包
big.matrix,is.big.matrix,as.big.matrix,arth.big.matrix,description,read.big.matrix,write.big.matrix,is.sub.banmatrix the unique big.matrix文件操作;filebacked.big.matrix,is.filebacked
M the the Base软件包中的整体,Morder增强顺序,Mpermute(根据特定序列进行矩阵中的列,但它将更改原始对象。这是为了避免内存溢出)
matrix对象的副本使用deepcopy(x,color = null,lows = null,y = null,type = null,selected = null,backingfile = null,backingpath = null)。
BigAnalytics软件包使用
BigAnalytics主要是一些基本功能的扩展。它主要包括最大,最小,道具,总和,范围,颜色,颜色,颜色,颜色,colors,colsd,colvar,摘要(仅适用于行或列。同时排名)
更独特的是Bigkmeans集群
其余的Biglm.big.matrix和Bigglm.big.matrix可以参考Lumley的BigLM包。
BigTabulate软件包的使用
并行计算限制中的突破:
使用DOMC家族:DOMC,Dosnow,Dompi,Doredis,Dosmp和Foreach软件包。
使用foreach包裹
foreach(...,.combine,.init,.final = null,.inorder = true,.multicombine = false,.maxcombine = if(.mmulticombine)100 else 2,.errorhandling = c('stop','stop','emoce'','删除','pass'),.packages = null,.export = null,.noexport = null,.verbose = false)
foreach的特征是平行计算,例如在网络空间和雪中?
%do%严格执行任务(因此,不通过非合并计算计算),%dopar%执行并行执行任务
...:指定周期的数量;
。
.init:.combine函数的第一个变量
.Final:返回最终结果
。不需要结果的顺序。
.Muticombine:设置.combine函数的传输参数。默认值是错误的,其参数为2,true可以设置多个参数
.maxcombine:设置.combine的最大参数
.Errorhandling:如果周期中存在错误,则处理错误的方法
.packages:软件包(%do%会忽略此选项)取决于%dopar%的过程。
GetDoparworkers():查看已注册了多少个核
GetDoparregistered():查看Dopar是否已注册;如果没有注册,请返回false
getDoparname():查看注册Dopar的名称
GetDoparversion():查看Dopar的注册版本
========================================
#foreach的循环可以指定多个变量,但只有最少的变量?
foreach(a = 1:10,b = rep(10,3))%do%(a*b)
[[1]
[1] 10
[[2]
[1] 20
[[3]
[1] 30
#.combine的foreach的“+”或“*”是cbind之后的操作;这就是说“表达式”返回一个向量,该向量将在向量+或*或*或*或*中可用。
foreach(i = 1:4,.combine =“+”)%do%2
[1] 8
foreach(i = 1:4,.combine =“ rbind”)%do%rep(2,5)
[,1] [,2] [,3] [,4] [,5]
结果1 2 2 2 2 2 2 2
结果2 2 2 2 2 2 2 2
结果3 2 2 2 2 2 2 2
结果4 2 2 2 2 2 2
foreach(i = 1:4,.combine =“+”)%do%rep(2,5)
[1] 8 8 8 8 8 8
foreach(i = 1:4,.combine =“*”)%do%rep(2,5)
[1] 16 16 16 16 16
==================================
迭代器软件包的使用
迭代器将为foreach提供循环变量。定义了每个迭代器。它设置了“周期的数量”和“每个循环的值”,因此非常适合组合使用foreach。
iter(obj,...):您可以接受iTer,向量,矩阵,data.frame,函数。
NextElem(OBJ,...):接受iTer对象并显示对象值。
以矩阵为例
iter(obj,by = c('colorn','cell','row'),块= 1L,checkfunc = fuund(...)true,recycle = false,...)
作者:按周期顺序;矩阵和data.frame是默认的“行”,“单元格”是按顺序输出的(因此,对于“单元”,块size只能指定为默认值,即,1)
块:每个执行函数NextElem之后,返回结果的长度基于By的设置。如果背面结构不够,则将剩下所有的剩余结构。
checkfunc = function(...)true:执行函数checkFun,如果返回true,请返回;否则,跳过。
回收:是否将设置设置为末端(“错误:停止”),即从一开始。
以示例为例
iter(function()rnorm(1)),可以重复使用NextElem;但是迭代(rnorm(1))只能出现。
更有趣的是,如果对象是迭代,即test1 -iter(obj);test2-ITER(test1),然后将这两个对象连接在一起并同时更改。
====================================
A
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20
i2 -iter(a,by =“ row”,块= 3)
NextElem(i2)
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18 18
[3,] 3 7 11 15 19
NextElem(i2)#第二次迭代后,只剩1行,全部返回
[,1] [,2] [,3] [,4] [,5]
[1,] 4 8 12 16 20
i2 -iter(a,by =“ column”,checkfunc = function(x)sum(x)50)
NextElem(i2)
[,1]
[1,] 13
[2,] 14
[3,] 15
[4,] 16
NextElem(i2)
[,1]
[1,] 17
[2,] 18
[3,] 19
[4,] 20
NextElem(i2)
错误:停止
船柱(a)
[1] 10 26 42 58 74
testfun -function(x){return(x+2)}
i2 -iter(function()testfun(1))
NextElem(i2)
[1] 3
NextElem(i2)
[1] 3
NextElem(i2)
[1] 3
i2-ITER(testfun(1))
NextElem(i2)
[1] 3
NextElem(i2)
错误:停止
i2-ITER(testfun(1))
i3 -ITER(I2)
NextElem(i3)
[1] 3
NextElem(i2)
错误:停止
=================================
迭代器包包括
irnorm(...,count);irunif(...,count);irbinom(...,count);irnbinom(...,count);IRPOI(...,计数)工具生成的内部迭代器工具分别表明N元素是从正常,均匀,二项式,二项式,负二项式和泊松分布中随机选择的,以执行计数时间。负数分布,负二项式分布:概率质量质量函数是骰子。每个骰子的3点的概率为P。
iCount(count)可以生成1:Conunt的迭代器;如果未指定计数,它将从无休止的1:INF生成
ICOUNTN(VN)更有趣。VN是指数值向量(如果是十进制的数值,则将数量的数量取到后面,例如2.3 -3)。循环的数量是prod(VN)。每个返回向量中的每个元素从1开始,不超过设置VN。变化率从左到右增加。
idiv(n,...,块,块)从1:n,“块”和“块”返回段的长度,不能同时指定。小的)
iapply(x,边距):类似于申请,1是行的行,2是colorn
iSplit(x,f,drop = false,...):根据指定的f分配矩阵
==================================
I2 -ICOUNTN(C(3.4,1.2)))
NextElem(i2)
[1] 1 1
NextElem(i2)
[1] 2 1
NextElem(i2)
[1] 3 1
NextElem(i2)
[1] 4 1
NextElem(i2)
[1] 1 2
NextElem(i2)
[1] 2 2
NextElem(i2)
[1] 3 2
NextElem(i2)
[1] 4 2
NextElem(i2)
错误:停止
我不知道您说的大桌子有多大,但是只要您可以将其加载到M语言内存,就可以计算出来。使用子集功能
假设数据集为x
A-Subset(X,A30)
A-Subset(A,D50)
子集的第一个参数是要筛选的数据集。第二个是条件。就像您说的问题一样,您可以根据第一步再次过滤它,也可以将其结合在一起。
R是GNU的开源工具,GNU具有语言血统,并且擅长统计计算和统计图。大多数R语言爱好者可以使用强大的工具Rhadoop在大数据领域展示自己的脚,这无疑是一个R语言程序员的好消息。
Rhadoop是Hadoop和R语言的组合,由Revolution Analytics开发,并向GitHub社区开源
Noodle.rhadoop包括三个RMR(RMR,RHDFS,RHBASE),它们对应
HBase三个部分。
2)。Rhiverhive是一种由Nexr Korean Company开发的R语言直接访问Hive的工具包。
3)。用R语言重新编织Mahout的实施也是思想的结合。我也做了相关的尝试。
4)。hadoop呼叫r
上面提到的所有呼叫Hadoop的方式。当然,我们还可以在相反的操作上进行操作,打开Java和R的连接通道,并让Hadoop Call R.How的功能,此部分中没有任何产品。
5.实际上R和Hadoop的情况
1. Hadoop的组合,技术阈值仍然有点高。对于一个人来说,不仅是Linux,Java,Hadoop,R的技术,还具有软件开发,算法,概率统计信息,线性代数,数据可视化,数据可视化,数据可视化,以及行业背景的一些基本品质。在公司部署这种环境中,它还需要多个部门和各种才能的合作。Hadoop运营和维护,Hadoop算法研究与发展,R语言建模,R语言
MAPREDUCE,软件开发,测试等。因此,情况并不多。
Rhadoop是Hadoop和R语言的组合。它是由RevolutionAnalytics和Github社区开发的。Rhadoop包含三个RMR(RMR,RHDFS,RHBASE),该RMR与三个部分相对应:MapReduce,HDFS,HBase。
2)。Rhiverhive是一种由Nexr Korean Company开发的R语言直接访问Hive的工具包。
3)。用R语言重新编织Mahout的实施也是思想的结合。我也做了相关的尝试。
4)。hadoop呼叫r
上面提到的所有呼叫Hadoop的方式。当然,我们还可以在相反的操作上进行操作,打开Java和R的连接通道,并让Hadoop Call R.How的功能,此部分中没有任何产品。
5.实际上R和Hadoop的情况
R和Hadoop的组合,技术阈值仍然有点高。对于一个人来说,不仅是Linux,Java,Hadoop,R的技术,而且还拥有它
软件开发,算法,概率统计,线性代数,数据可视化,行业背景
在公司部署这种环境中,它还需要多个部门和各种才能的合作。
MAPREDUCE,软件开发,测试等。
使用R语言时,如果是少量数据,则可以使用C()或其他功能来创建;但是对于大量数据,最好先通过其他更方便的软件创建数据文件,然后使用R读取此文件。
.CSV是一种不错的数据文件格式,跨平台支持非常好。我在Excel或SPSS中创建的数据,只要它以CSV格式存储,我几乎可以使用任何数据处理软件来处理这些数据。使用常见行为中的普通格式,例如多人合作和不同版本,优势非常明显。此外,其他原因是使用不同的数据处理软件来处理软件的原因,首先,它可以利用它。例如,某些工作SPS非常复杂,您可以使用R语言线来获取它。第二,可以处理和找到软件的结果。
在R语言中读取外部文件的最基本功能是read.table(),以及用于读取CSV的read.csv()。.CSV是一种非常好的数据文件格式。交叉平台支持非常好。
输入help(read.table)命令,您可以查看数据输入函数的说明。
澄清概念:Explorest数据分析(EDA),一般过程是:
(1)询问数据。
(2)数据的可视化,转换和建模,然后找到问题的答案。
(3)使用上一步的结果来完善问题并提出新问题。
确定该变量是分类变量还是连续变量。如果要检查分类变量的分布,可以使用条形图:
条带的高度表示每个X值中的观测值。您可以使用dplyr :: count()手动计算这些值:
如果要检查连续变量的分布,可以使用直方图:
您可以通过组合DPLYR :: count()和ggplot2 :: cut_width()的组合来手动计算结果。设置的Binwidth参数设置为在直方图中设置间隔的宽度。
在同一图上叠加多个直方图,使用geom_freqpoyploy()而不是geom_histogram(),然后使用折叠行。
相似值形成的群集表明数据中有一个子组。
有一个Xlim()参数用于放大coord_cartesian()函数中的x轴。在ggplot2中也有函数。
其他Xlim()和Ylim()函数:它们将忽略坐标轴范围的数据。
如果分析具有异常值和没有异常值的数据的分析,则结果是不同的。如果差异不大,则可以用Na替换。
5.3.4锻炼
(1)研究钻石数据浓度中X,Y和Z变量的分布。您可以找到什么?考虑一下
钻石数据,如何确定指示长度,宽度和高度的变量?
(2)研究价格的分配,您能发现异常或令人惊讶的事情吗?(提示:仔细考虑
binwidth参数并确定有足够的值。)
(3)0.99克拉多少钻石?1克拉钻石是多少?这种差异的原因是什么?
(4)比较并比较coord_cartesina()和xlim()/ylim()的功能。
Binwidth参数会发生什么?如果直方图仅显示条带的一半,则将再次发送
发生了什么?
数据中有异常值,可以消除异常值:
通常不建议将其删除。建议使用缺失值而不是异常值。
IFLSE函数参数1用于逻辑判断。如果是t,则结果是第二个参数的值。如果是f,则是第三参数的值。
GGPLOT2将忽略缺失的值:
实践
(1)如何处理直方图的缺失值?如何处理价值损失?为什么会有如此差异?
(2)na.rm = true在平均值()和sum()函数中的作用是什么?
在执行统计数据之前删除缺失的值
根据分组变量显示连续变量分布的另一种方法是使用框线图
实践
(1)取消航班的出发时间和未解决的飞行时间。
改善结果。
(2)在钻石数据浓度中,哪个变量对于预测钻石的价格最重要?该变量和切割质量之间的关系是
怎么样?为什么这两个变量关系会导致质量较差的钻石价格更高?
(3)安装GGSTANCE软件包并创建水平盒线。此方法与使用COORD_FLIP()函数有何不同?
(4)框图存在的问题是,在小数据集的时代,大数据集会的数量显示了极端
它巨大的异常价值。解决此问题的一种方法是使用字母值图。安装LVPLOT包并尝试
使用GEOM_LV()函数来显示基于切割质量的切割的分布。您会发现什么问题?如何解释这一点
植物图形?
(5)比较并比较geom_violin(),geom_histogram()和颜色geom_freqpoyploy()。每种方法的优点和缺点是什么?
(6)对于小数据集,如果您想观察连续变量和分类变量之间的关系,有时GEOM_ITTER()函数特别有用。GGBEESWARM软件包提供了类似于Geom_jitter()的方法。这些方法。这些方法。
并简单地描述每种方法的作用。
必须先计数两个分类变量之间的关系,并且可以使用geom_count()函数
D3 -HeatMap或Heatmaply包装可以具有交易互动图
实践
(1)如何调整计数数据,以便更清楚地表示颜色之间的切割质量的分布或切割颜色
切割质量的分布?
(2)使用GEOM_TILE()函数探索平均飞行延迟如何探索平均飞行延迟。
改变和改变。为什么这张图片很难阅读?如何改进?
(3)为什么在上面的示例中AES(x =颜色,y = cut)比AES更好(x = cut,y =颜色)?
连续变量之间的关系通常由分散的点表示。Geom_point()
对于大数据集,为了避免重叠,您可以使用geom_bin2d()和geom_hex()函数将坐标平面划分为两维部门,并使用填充颜色
每个水箱的数据点。
另一种方法是将一个连续变量划分,因此该连续变量的作用相当于分类变量。
cut_width(x,width)函数将x变量划分为宽度的一部分。参数varwidth = true使框图的宽度与观测值成正比。
cut_number()函数几乎显示了每个框中的数据点数
实践
(1)除了使用框线图总结条件分布外,您还可以使用频率多边形图。
当width()函数或cut_number()函数时,您需要考虑哪些问题?这对克拉和Price的两个维点
衣服可视化的影响是什么?
(2)根据价格分类可视化克拉的分布。
(3)相对较大的钻石和较小的钻石的价格分布。结果满足期望吗?这是出乎意料的吗?
(4)组合使用了您学到的两种技术来可视化剪切,克拉和价格的组合分布。
(5)两个维图可以显示在一个维度上看不到的不见点。例如,下图中的某些点具有异常
x值和y值的组合使这些点成为组点,即使分别检查这些点的x值和y值
看起来正常。
GGPLOT(数据=钻石) +
geom_point(映射= aes(x = x,y = y)) +
coord_cartesian(xlim = c(4,11),ylim = c(4,11))
数据中的模式提供了一个关系线索,以探索两个变量的相关性。
模型是从数据中提取模式的工具。
残留(预测和实际值之间的差异)
阅读建议:
Shengxin技能树公共福利视频汇编:学习顺序是Linux,R,软件安装,GEO,TIPS,NGS Group!
电台B链接:
YouTube链接:
Shengxin工程师入门的最佳指南:
结论:以上是首席CTO的全部内容指出,用于大数据集使用哪种功能R软件。感谢您阅读本网站的内容。我希望这对您有帮助。不要忘记找到大数据集的相关内容。