主要内容

分析大数据在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年的)

图包含一个坐标轴对象。坐标轴对象与标题的航班数量,1987 - 1989,包含一年,ylabel航班数量包含一个直方图类型的对象。

扩展到整个数据集

而不是使用较小的数据返回执行计算,可以扩大对整个数据集使用的结果高(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年的)

图包含一个坐标轴对象。坐标轴对象与标题的航班数量,1987 - 2008,包含一年,ylabel航班数量包含一个直方图类型的对象。

使用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年)

图包含一个坐标轴对象。坐标轴对象与标题航班到月、年,1987 - 2008,包含一个类型的对象包含一年,ylabel月histogram2。

数据分析和机器学习有着高大的数组

可以执行更复杂的统计分析高层数组,包括计算预测分析和机器学习表演,使用统计和机器学习中的功能工具箱™。

有关更多信息,请参见大数据分析有着高大的数组(统计和机器学习的工具箱)

规模大数据系统

高大的MATLAB中的数组的一个关键能力是大数据平台的连接,如计算集群和Apache引发™。

这个例子只触及表面的高可能与大数据的数组。看到扩展高数组与其他产品下载188bet金宝搏关于使用的更多信息:

  • 统计和机器学习的工具箱™

  • 数据库工具箱™

  • 并行计算工具箱™

  • MATLAB®并行服务器™

  • MATLAB编译器™

另请参阅

相关的话题