MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   如何为数据流挖掘创建滑动窗口模型? (https://www.labfans.com/bbs/showthread.php?t=23499)

poster 2019-12-10 20:41

如何为数据流挖掘创建滑动窗口模型?
 
我们有一种情况,即流(来自传感器的数据或服务器上的单击流数据)通过滑动窗口算法传输,我们必须将最后(例如)500个数据样本存储在内存中。然后将这些样本用于创建直方图,聚合和捕获有关输入数据流中异常的信息。

请告诉我如何制作这种滑动窗口。



[B]回答:[/B]

如果要问如何以滑动窗口方式存储和维护这些值,请考虑以下简单示例,该示例跟踪一些随机数据流的最后10个值的运行平均值:

WINDOW_SIZE = 10; x = nan(WINDOW_SIZE,1); %# init counter = 0; stats = [NaN NaN]; %# previous/current value %# prepare figure SHOW_LIM = 200; hAx = axes('XLim',[1 SHOW_LIM], 'YLim',[200 800]); hLine = line('XData',1, 'YData',nan, 'EraseMode','none', ... 'Parent',hAx, 'Color','b', 'LineWidth',2); %# infinite loop! while true val = randi([1 1000]); %# get new value from data stream x = [ x(2:end) ; val ]; %# add to window in a cyclic manner counter = counter + 1; %# do something interesting with x stats(1) = stats(2); %# keep track of the previous mean stats(2) = nanmean(x); %# update the current mean %# show and update plot set(hLine, 'XData',[counter-1 counter], 'YData',[stats(1) stats(2)]) if rem(counter,SHOW_LIM)==0 %# show only the last couple of means set(hAx, 'XLim', [counter counter+SHOW_LIM]); end drawnow pause(0.02) if ~ishandle(hAx), break, end %# break in case you close the figure end [URL="https://i.stack.imgur.com/MdU6O.gif"][IMG]https://i.stack.imgur.com/MdU6O.gif[/IMG][/URL]

[B]更新资料[/B]

在最近的版本中,不推荐使用[URL="http://www.mathworks.com/help/matlab/graphics_transition/how-do-i-replace-the-erasemode-property.html"]EraseMode=none属性[/URL]并将其删除。请改用[URL="http://www.mathworks.com/help/matlab/ref/animatedline.html"]animatedline[/URL]函数来实现类似功能。



[url=https://stackoverflow.com/questions/2947497]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 01:18

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.