主要内容

이번역페이지는최신내용을담고있지않습니다。최신내용을문으로보려면여기를클릭하십시오。

MATLAB에서高형배열을사용하여빅데이터분석하기

이예제에서는MATLAB®에서高형배열을사용하여빅데이터를처리하는방법을보여줍니다。高형배열을사용하여메모리에맞지않는여러유형의데이터에대해다양한계산을수행할수있습니다。여기에는기본적인계산뿐아니라统计和机器学习工具箱™의머신러닝알고리즘도포함됩니다。

이예제에서는먼저한대의컴퓨터에서적은양의일부데이터세트에대해연산을수행한다음전체데이터세트로분석범위를확장합니다。하지만이분석기법을사용하면이보다더확장하여메모리로읽어올수없을정도로큰데이터세트나Apache火花™같은시스템에서도작업할수있습니다。

高大형배열소개

高형배열과高형테이블은메모리에담을수없을정도로큰데이터,즉사실상무한개수의행을가질수있는데이터를처리할때사용합니다。高형배열과테이블을사용하면방대한크기의데이터를특별히고려하여코드를작성할필요없이메모리내MATLAB®배열과유사한방식으로대규모데이터세트를처리할수있습니다。차이점은형배열은일반적으로사용자가계산수행요청을할때까지미평가상태로유지된다는점입니다。

이렇게평가작업을보류해두면MATLAB이가능한한대기중인계산을함께처리할수있고데이터통과횟수를최소화할수있습니다。데이터통과횟수는실행시간에큰영향을미치기때문에필요한경우에만출력값을요청하는것이좋습니다。

파일모음에대한데이터저장소만들기

데이터저장소를만들면데이터모음에액세스할수있습니다。데이터저장소는임의의많은데이터를처리할수있으며,심지어데이터가여러폴더안의여러파일에분산되어있어도가능합니다。데이터저장소는테이블형식텍스트파일(여기에서다룸),스프레드시트,이미지,SQL데이터베이스(数据库工具箱™필요),Hadoop®시퀀스파일등대부분의파일유형에대해만들수있습니다。

항공사데이터를포함하는. csv파일에대해데이터저장소를만듭니다。“NA”값을누락된값으로처리하여tabularTextDatastore가 이 값을값으로대체하도록합니다。원하는변수를선택하고起源변수 및桌子변수에대해分类데이터형을지정합니다。내용을미리봅니다。

ds = tabularTextDatastore(“airlinesmall.csv”);ds。TreatAsMissing =“NA”;ds。SelectedVariableNames = {“年”“月”“ArrDelay”“DepDelay”“起源”“桌子”};ds.SelectedFormats(5:6) = {“% C”“% C”};预=预览(ds)
pre =8×6表年月ArrDelay DepDelay Origin Dest ____ _____ ________ ________ ______ ____ 1987 10 8 12 LAX SJC 1987 10 8 1 SJC BUR 1987 10 21 20 SAN SMF 1987 10 13 12 BUR SJC 1987 10 4 -1 SMF LAX 1987 10 59 63 LAX SJC 1987 10 3 -2 SAN SFO 1987 10 11 -1 SEA LAX

高大형배열만들기

高형배열은행개수에제한이없다는점만제외하면메모리내MATLAB배열과유사합니다。高형배열은숫자형,논리형,datetime형,持续时间형,calendarDuration형,直言형또는字符串형인데이터를포함할수있습니다。또한,메모리내배열을高형배열로변환할수있습니다。메모리내배열一个는지원되는데이터형중하나로되어있어야합니다。

高大형배열의기본클래스는이를지원하는데이터저장소유형을기반으로합니다。예를들어,데이터저장소ds에테이블형식의데이터가포함되어있으면高(ds)는이데이터를포함한高형테이블을반환합니다。

Tt =高(ds)
tt = Mx6高表年月ArrDelay DepDelay起源服务台  ____ _____ ________ ________ ______ ____ ?????????? ? ? ? ? ? ? ? ? : : : : : : : : : : : :

위에표시된결과를보면기본데이터형을알수있으며데이터의처음여러개행이포함되어있음을확인할수있습니다。테이블의크기는”Mx6으로표시되며,이MATLAB이는아직데이터의전체행개수를알지못한다는의미입니다。

高大형배열에대한계산수행하기

메모리내MATLAB배열및테이블로작업할때와유사한방식으로高형배열및高형테이블로작업할수있습니다。

高형배열의중요한특성중하나는高형배열로작업할때MATLAB이대부분의연산을즉시수행하지않는다는점입니다。사용자가확실히출력을요청할때까지실제계산을보류해두기때문에연산이신속하게실행되는것처럼보입니다。大小(X)같이간단한명령도10억개의행이포함된高형배열에서실행하면빠르게계산하기힘들기때문에이처럼평가를보류하는것이매우중요합니다。

高형배열로작업할때MATLAB은수행해야하는모든연산을추적하여데이터통과횟수를최적화합니다。따라서미평가高형배열로작업하면서필요한경우에만출력값을요청하는것이일반적입니다。MATLAB은사용자가高형배열을평가하고표시하도록요청할때까지미평가高형배열의내용또는크기를인식하지못합니다。

출발지연시간의평균을계산합니다。

mDep = mean(tt。DepDelay,“omitnan”
mDep =高双份?

결과를작업공간에수집하기

평가보류의이점은MATLAB이이계산을수행할때데이터통과횟수를최소화하는방식으로연산을결합할수있는경우가많다는점입니다。따라서많은연산을수행할때도MATLAB은반드시필요한경우에만추가적인데이터통과를수행합니다。

收集함수는대기중모든연산을강제로평가하고결과출력값을메모리로다시가져옵니다。收集는matlab에서전체결과를반환하기때문에결과가메모리에담길수있는지확해야합니다。예를들어,高형배열의크기를줄이는함수(예:总和最小值的意思是등)의결과tall형배열에收集를사용합니다。

收集를사용하여출발지연시간의평균을계산하고그답을메모리로가져옵니다。이계산의경우한번의데이터통과가필요하지만,다른계산에서는여러번의데이터통과가필요할수있습니다。Matlab은계산에대한최적의통과횟수를확하여이정보를명령줄에시합니다。

mDep = gather(mDep)
使用本地MATLAB会话评估tall表达式:-通过2中的第1步:在0.88秒内完成-通过2中的第2步:在0.86秒内完成评估在2.3秒内完成
mDep = 8.1860

高大형배열의일부선택하기

첨자또는덱싱을사용하여高형배열에서값을추출할수있습니다。맨위또는맨아래에서시작하여배열의요소를참조하거나논리형인덱스를사용하여배열의요소를참조할수있습니다。함수尾巴은인덱싱대신사용할수있는유용한방법이며,이를통해高형배열의첫번째부분과마지막부분을탐색할수있습니다。두변수를동시에수집하여추가적데이터통과가수행되지않도록합니다。

H = head(tt);Tl = tail(tt);[h,tl] =收集(h,tl)
使用本地MATLAB会话评估tall表达式:-通过1 / 1:在0.79秒内完成评估在1秒内完成
h =8×6表年月ArrDelay DepDelay Origin Dest ____ _____ ________ ________ ______ ____ 1987 10 8 12 LAX SJC 1987 10 8 1 SJC BUR 1987 10 21 20 SAN SMF 1987 10 13 12 BUR SJC 1987 10 4 -1 SMF LAX 1987 10 59 63 LAX SJC 1987 10 3 -2 SAN SFO 1987 10 11 -1 SEA LAX
tl =8×6表Year Month ArrDelay DepDelay Origin Dest ____ _____ ________ ________ ______ ____ 2008 12 14 1 DAB ATL 2008 12 -8 -1 ATL TPA 2008 12 1 9 ATL CLT 2008 12 -8 -4 ATL CLT 2008 12 15 -2 BOS LGA 2008 12 -15 -1 SFO ATL 2008 12 -12 1 DAB ATL 2008 12 -1 11 ATL IAD

전체데이터세트로확장하기전에먼저코드프로토타이핑을위해를사용하여데이터에서10000개행을선택합니다。

tt子集= head(tt,10000);

조건을기준으로데이터선택하기

高형배열에일반적논리연산을사용할수있습니다。이는논리형인덱싱을사용하여관련데이터를선택하거나이상값을제거하는데유용합니다。논리식이高논리형벡터를만들고,이벡터를첨자로사용하여조건인이如此행을식별합니다。

分类형변수起源의소를값“bo”와비교하여보스톤에서출발하는항공편만선택합니다。

idx = (tt子集。起源= =“bo”);bosflights = tt子集(idx,:)
bosflights = 207x6高表年月ArrDelay DepDelay Origin Dest ____ _____ ________ ________ ______ ____ 1987 10 -8 0 BOS LGA 1987 10 -13 -1 BOS LGA 1987 10 12 11 BOS BWI 1987 10 -3 0 BOS EWR 1987 10 -5 0 BOS ORD 1987 10 31 19 BOS PHL 1987 10 -3 0 BOS CLE 1987 11 5 5 BOS STL::::::::::::

동일한인덱싱기법을사용하여高형배열에서누락된데이터또는南값이있는행을제거할수있습니다。

idx = any(ismissing(tt子集),2);tt子集(idx,:) = [];

최대지연시간확하기

빅데이터의특성으로해排序또는sortrows와같은기존방법을사용하여모든데이터를정렬하는것은비효율적입니다。하지만高형배열에topkrows함수를사용하면상위k개행을정렬된순서로반환합니다。

상위10개의최대출발지연시간을계산합니다。

biggestDelays = topkrows(tt子集,10,“DepDelay”);biggestdelayed = gather(biggestdelayed)
使用本地MATLAB会话计算高表达式:计算在0.16秒内完成
biggestDelays =10×6表年月ArrDelay DepDelay Origin Dest ____ _____ ________ ________ ______ ____ 1988 3 772 785 ORD LEX 1989 3 453 447 MDT ORD 1988 12 397 425 SJU BWI 1987 12 339 360 DEN STL 1988 3 261 273 PHL ROC 1988 7 261 268 BWI PBI 1988 2 257 253 ORD BTV 1988 3 236 240 EWR FLL 1989 2 263 227 BNA MOB 1989 6 224 225 DFW JAX

高大형배열의데이터시각화하기

빅데이터세트의모든점을플로팅하는것은실현가능하지않습니다。이러한이유로高형배열의시각화과정에는샘플링또는비닝을사용하여데이터점의개수를줄이는작업이포함됩니다。

히스토그램을사용하여연간비행횟수를시각화합니다。시각화함수는호출될때데이터통과를수행하여해를즉시계산하므로收集가필하지않습니다。

直方图(ttSubset。一年,“BinMethod”“整数”
使用本地MATLAB会话计算tall表达式:计算在0.62秒内完成
包含(“年”) ylabel (“飞行次数”)标题(1987 - 1989年按年划分的飞行次数

图中包含一个轴对象。标题为Number of Flights by Year, 1987 - 1989的axes对象包含一个类型为直方图的对象。

전체데이터세트로확장하기

에서반환한보다작은크기의데이터를사용하는대신高(ds)의결과를사용하여전체데이터세트에대해계산을수행하도록확장할수있습니다。

Tt =高(ds);Idx = any(ismissing(tt),2);Tt (idx,:) = [];mnDelay = mean(tt。DepDelay,“omitnan”);biggestdelay = topkrows(tt,10,“DepDelay”);[mnDelay, biggestdelayed] = gather(mnDelay, biggestdelayed)
使用本地MATLAB会话评估tall表达式:-通过2中的第1步:在0.62秒内完成-通过2中的第2步:在1秒内完成评估在2秒内完成
mnDelay = 8.1310
biggestDelays =10×6表年月ArrDelay DepDelay Origin Dest ____ _____ ________ ________ ______ ____ 1991 3 -8 1438 MCO BWI 1998 12 -12 1433 CVG ORF 1995 11 1014 1014 HNL LAX 2007 4 914 924 JFK DTW 2001 4 887 884 MCO DTW 2008 7 845 855 CMH ORD 1988 3 772 785 ORD LEX 2008 4 710 713 EWR RDU 1998 10 679 673 MCI DFW 2006 6 603 626 ABQ PHX
直方图(tt。一年,“BinMethod”“整数”
使用本地MATLAB会话评估tall表达式:-通过2中的1:在1.3秒内完成-通过2中的2:在0.77秒内完成评估在2.7秒内完成
包含(“年”) ylabel (“飞行次数”)标题(1987 - 2008年按年划分的飞行次数

图中包含一个轴对象。标题为Number of Flights by Year, 1987 - 2008的axes对象包含一个类型为直方图的对象。

histogram2를사용하여전체데이터세트에대해비행횟수를월별기준으로더세분화합니다。一年의本을미리알수있으므로本경계값을지정하여추가적인데이터통과가수행되지않도록합니다。

Year_edges = 1986.5:2008.5;Month_edges = 0.5:12.5;histogram2 (tt.Year tt.Month、year_edges month_edges,“DisplayStyle”“瓦”
使用本地MATLAB会话评估tall表达式:-通过1 / 1:在1.7秒内完成评估在2秒内完成
colorbar包含(“年”) ylabel (“月”)标题(1987 - 2008年按月和年划分的航空公司航班

图中包含一个轴对象。标题为Airline Flights by Month and Year, 1987 - 2008的axes对象包含一个类型为histogram2的对象。

高大형배열을사용한데이터분석및머신러닝

统计和机器学习工具箱™의함수를사용하여예측분석계산및머신러닝수행등高형배열에더정교한통계분석을수행할수있습니다。

자세한내용은高大형배열을사용한빅데이터분석(统计和机器学习工具箱)항목을참조하십시오。

빅데이터시스템으로확장하기

MATLAB에서高형배열의핵심기능은연산클러스터나Apache火花™같은빅데이터플랫폼에연결가능하는것입니다。

앞서설명한예는빅데이터에대해高형배열을사용하여수행할수있는일의극히일부만보여준것입니다。다음을사용하는방법에대한더자세한내용은用其他产品扩展Tall数组下载188bet金宝搏항목을참조하십시오。

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

  • 数据库工具箱™

  • 并行计算工具箱

  • MATLAB®并行服务器

  • MATLAB编译器™

참고 항목

관련 항목