分析大数据在MATLAB使用高数组
这个例子展示了如何使用高阵列处理大数据在MATLAB®。您可以使用高数组执行各种计算不同类型的数据,并不适合在内存中。这些包括基本计算,以及机器学习算法在统计和机器学习的工具箱™。
这个例子中运作的一个小子集一台计算机的数据,然后它尺度分析所有的数据集。然而,这种分析技术可以进一步扩大工作数据集太大无法读入内存,或系统(比如Apache火花™。
介绍高数组
高的数组和高表是用来处理内存不足数据任意数量的行。而不是写专业代码,考虑数据的巨大规模,高数组和表让你处理大型数据集的方式类似于内存中MATLAB®数组。所不同的是,高
数组通常仍未评价的,直到你要求的计算。
这种延迟评价使MATLAB结合排队计算在可能的情况下,通过数据的最小数量。由于通过数据的数量大大影响执行时间,建议您仅在必要时请求输出。
创建数据存储文件的集合
创建一个数据存储使您能够访问数据的集合。数据存储任意可以处理大量的数据,并且数据甚至可以分布在多个文件在多个文件夹。您可以创建一个数据存储对于大多数类型的文件,包括表格文本文件的集合(证明)、电子表格、图像、SQL数据库(数据库需要工具箱™)、Hadoop®序列文件,等等。
创建一个数据存储. csv
文件包含航空公司数据。治疗“NA”
失踪,这样的值tabularTextDatastore
取代他们南
值。选择感兴趣的变量,并指定一个类别的数据类型起源
和桌子
变量。预览的内容。
ds = tabularTextDatastore (“airlinesmall.csv”);ds。TreatAsMissing =“NA”;ds。SelectedVariableNames = {“年”,“月”,“ArrDelay”,“DepDelay”,“起源”,“桌子”};ds.SelectedFormats (6) = {“% C”,“% C”};=之前预览(ds)
pre =8×6表年月ArrDelay DepDelay起源Dest _____说______上1987 10 8 12松懈SJC 1987 10 8 SJC钻1987 21 1987圣SMF 10 13 12 SJC 1987钻10 4 1 SMF松懈59 1987 63松懈SJC 1987 10 3 1987圣SFO 10 11松懈
创建高数组
高数组内存MATLAB数组类似,只不过他们可以拥有任意数量的行。高数值数组可以包含数据、逻辑、日期时间、持续时间、calendarDuration,分类,或字符串。同样,你可以任何内存数组转换成一个高大的数组。(内存中的数组一个
必须支持的数据类型之一。)金宝app
底层阶级的一系列高是基于数据存储,支持它的类型。例如,如果数据存储ds
包含表格数据高(ds)
返回一个高表包含数据。
tt =高(ds)
tt = Mx6高表年月ArrDelay DepDelay起源Dest _____说______上吗?吗?吗?吗?吗?吗?吗?吗?吗?吗? ? ? ? ? ? ? ? ? : : : : : : : : : : : :
显示表明底层数据类型,包括前几行数据。表的大小显示为“Mx6”表明MATLAB还不知道有多少行数据。
执行计算高层数组
你可以用高数组和高工作表以类似的方式您使用内存中的MATLAB数组和表。
高大的数组的一个重要方面是,当你与他们合作,MATLAB不立即执行大多数操作。执行这些操作出现迅速,因为实际计算推迟到你具体要求输出。这延迟评价很重要,因为即使是一个简单的命令大小(X)
与十亿行上执行一系列高不是一个快速计算。
工作时有着高大的数组,MATLAB跟踪进行的所有操作,优化通过数据的数量。因此,它是正常的处理未鉴定的高数组和请求输出只有当你需要它。MATLAB不知道未鉴定的高数组的内容或大小,直到你要求数组被评估并显示。
计算平均延迟。
mDep =意味着(tt.DepDelay,“omitnan”)
双mDep =高?
收集结果到工作区
延期评估的好处是,当MATLAB进行计算的时候,人们往往可以结合的操作以这样一种方式,通过数据的数量最小化。所以,即使您执行许多操作,MATLAB只会让额外的绝对必要时通过数据。
的收集
函数力量评估所有排队操作,使生成的输出回内存。自收集
返回整个结果在MATLAB中,你应该确保结果将装入内存。例如,使用收集
在高大的数组是一个函数的结果,减少了高数组的大小,如总和
,最小值
,的意思是
,等等。
使用收集
计算平均延迟离开,把答案到内存中。这个计算需要一个通过数据,但是其他的计算可能需要几个通过数据。MATLAB决定的最佳数量的经过计算和显示这个信息在命令行。
mDep =收集(mDep)
评估高表达式使用当地的MATLAB会话:通过1 2:在0.75秒完成,通过2 2:在0.86秒完成评估在2.2秒完成
mDep = 8.1860
选择高数组的子集
您可以提取值高的数组下标或索引。你可以索引数组从顶部或底部,或通过使用逻辑索引。的函数头
和尾巴
是有用的索引的替代品,可以探索一个高大数组的第一个和最后一个部分。收集这两个变量在同一时间,以避免额外的通过数据。
h =头(tt);tl =尾(tt);[h, tl] =收集(h, tl)
评估高表达式使用当地的MATLAB会话:通过1 1:在0.73秒完成评估在0.97秒完成
h =8×6表年月ArrDelay DepDelay起源Dest _____说______上1987 10 8 12松懈SJC 1987 10 8 SJC钻1987 21 1987圣SMF 10 13 12 SJC 1987钻10 4 1 SMF松懈59 1987 63松懈SJC 1987 10 3 1987圣SFO 10 11松懈
tl =8×6表年月ArrDelay DepDelay起源Dest _____说______上2008 12 14 1民建联ATL 2008 12 8 2008 ATL TPA 12 1 9 ATL此时此地2008 12 8 4 ATL此时此地2008 12 15 2 BOS ATL SFO LGA 2008 12 -15 2008 -12 2008 12 1 11 ATL IAD民建联ATL
使用头
选择一个子集的10000行数据原型代码之前扩展到完整的数据集。
ttSubset =头(tt, 10000);
选择数据的条件
高层数组,您可以使用典型的逻辑操作,用于选择相关数据与逻辑索引或删除离群值。逻辑表达式创建一个高逻辑向量,然后用于下标,识别条件的行是正确的。
只选择波士顿的航班通过比较的元素类别变量起源
价值“bo”
。
idx = (ttSubset。起源= =“bo”);bosflights = ttSubset (idx:)
bosflights = 207 x6高表年月ArrDelay DepDelay起源Dest _____说______上1987 10 8 0 BOS LGA 1987 -13 1 BOS LGA 1987 10 1987年12 11日机场BOS BWI 10 3 0 BOS英文文宣写作研习营1987 10 5 0 BOS奥德1987 10 1987年31日19日BOS PHL 10 3 0 BOS蜡烛1987 11 5 5 BOS STL::::::::::::
您可以使用相同的索引技术缺失数据或删除行数组NaN值高。
idx =任何(ismissing (ttSubset), 2);ttSubset (idx:) = [];
确定最大延迟
由于大数据的性质,使用传统方法排序的所有数据排序
或sortrows
是低效的。然而,topkrows
适合个子高的数组函数返回顶部k
行排序顺序。
计算出前十名最大起飞延误。
biggestDelays = topkrows (ttSubset 10“DepDelay”);biggestDelays =收集(biggestDelays)
评估高表达式使用本地MATLAB会话:评估在0.067秒完成
biggestDelays =10×6表年月ArrDelay DepDelay起源Dest _____说______上1988 3 772 785奥德LEX 1989 3 453 447联合化疗奥德1988 397 425机场SJU BWI 1987 1988 3 261 273 339 360窝STL PHL机场民国1988 7 261 268 BWI PBI 1988 1988 3 236 240 257 253奥德北京电视台英文文宣写作研习营算法1989 2 263 227 1989 6 224 225 DFW JAX BNA暴民
可视化数据高数组
策划每一个点在一个大数据集是不可行的。出于这个原因,可视化高阵列包括减少数据点的数量使用抽样或装箱。
可视化的航班数量每年直方图。通过数据和可视化功能当你叫他们立即评估解决方案,收集
不是必需的。
直方图(ttSubset.Year“BinMethod”,“整数”)
评估高表达式使用本地MATLAB会话:评估在0.33秒完成
包含(“年”)ylabel (航班的数量)标题(的航班数量,1987 - 1989年的)
扩展到整个数据集
而不是使用较小的数据返回头
执行计算,可以扩大对整个数据集使用的结果高(ds)
。
tt =高(ds);idx =任何(ismissing (tt), 2);tt (idx:) = [];mnDelay =意味着(tt.DepDelay,“omitnan”);biggestDelays = topkrows (tt 10“DepDelay”);[mnDelay, biggestDelays] =收集(mnDelay biggestDelays)
评估高表达式使用当地的MATLAB会话:通过1 2:在0.38秒完成,通过2 2:在0.64秒完成评估在1.2秒完成
mnDelay = 8.1310
biggestDelays =10×6表年月ArrDelay DepDelay起源Dest _____说______上1991 3 1998 1438机场MCO BWI 12 -12 1433总经理汇报ORF 1995 11 1014 1014 HNL松懈DTW 2001 4 887 884 2007 4 914 924肯尼迪MCO DTW奥德1988 3 772 785 2008 7 845 855他而言不啻奥德LEX 2008 4 710 713英文文宣写作研习营RDU 1998 679 673 MCI DFW 2006 6 603 626 ABQ PHX
直方图(tt.Year“BinMethod”,“整数”)
评估高表达式使用当地的MATLAB会话:通过1 2:在1.5秒完成,通过2 2:在0.73秒完成评估在2.4秒完成
包含(“年”)ylabel (航班的数量)标题(的航班数量,1987 - 2008年的)
使用histogram2
进一步分解的航班数量按月对整个数据集。自从垃圾箱月
和一年
提前,指定本边缘,以避免额外地传递数据。
year_edges = 1986.5:2008.5;month_edges = 0.5:12.5;histogram2 (tt.Year tt.Month、year_edges month_edges,“DisplayStyle”,“瓦”)
评估高表达式使用当地的MATLAB会话:通过1 1:在0.8秒完成评估在0.87秒完成
colorbar包含(“年”)ylabel (“月”)标题(月和年的航班,1987 - 2008年)
数据分析和机器学习有着高大的数组
可以执行更复杂的统计分析高层数组,包括计算预测分析和机器学习表演,使用统计和机器学习中的功能工具箱™。
有关更多信息,请参见大数据分析有着高大的数组(统计和机器学习的工具箱)。
规模大数据系统
高大的MATLAB中的数组的一个关键能力是大数据平台的连接,如计算集群和Apache引发™。
这个例子只触及表面的高可能与大数据的数组。看到扩展高数组与其他产品下载188bet金宝搏关于使用的更多信息:
统计和机器学习的工具箱™
数据库工具箱™
并行计算工具箱™
MATLAB®并行服务器™
MATLAB编译器™