当前位置: 首页 > news >正文

网站建设 企业网站 框架免费的seo网站下载

网站建设 企业网站 框架,免费的seo网站下载,襄阳建设21网站,有哪些企业可以做招聘的网站有哪些方面preface 流式数据的监控#xff0c;以下主要是从算法的呈现出发#xff0c;提供一种python的实现思路 其中#xff1a; 1.python是2.X版本 2.提供两种实现思路#xff0c;一是基于matplotlib的animation#xff0c;一是基于matplotlib的ion 话不多说#xff0c;先了解大概…preface 流式数据的监控以下主要是从算法的呈现出发提供一种python的实现思路 其中 1.python是2.X版本 2.提供两种实现思路一是基于matplotlib的animation一是基于matplotlib的ion 话不多说先了解大概的效果如下一、一点构思 在做此流数据输出可视化前一直在捣鼓nupic框架其内部HTM算法主要是一种智能的异常检测算法是目前AI框架中垂直领域下的一股清流但由于其实现的例子对应的流数据展示并非我想要的故此借鉴后自己重新写了一个主要是达到三个目的一是展示真实数据的波动二是展示各波动的异常得分三是罗列异常的点。 上述的输出结构并非重点重点是其实时更新的机制了解后即可自行定义。另js对于这种流数据展示应该不难所以本文主要立足的是算法的呈现角度以及python的实现。 二、matplotlib animation实现思路 一、骨架与实时更新 animation翻译过来就是动画其动画展示核心主要有三个1是动画的骨架先搭好就是图像的边边框框这些2是更新的过程即传入实时数据时图形的变化方法3是FuncAnimation方法结尾。 下面以一个小例子做进一步说明 1.对于动画的骨架 # initial the figure. x [] y [] fig plt.figure(figsize(18, 8), facecolorwhite) ax1 fig.add_subplot(111) p1, ax1.plot(x, y, linestyledashed, colorred) 以上分别对应初始化空数据初始化图形大小和背景颜色插入子图三个数字分别表示几行几列第几个位置初始化图形数据为空。 import numpy as np x np.arange(0, 1000, 1) y np.random.normal(100, 10, 1000) 随机生成一些作图数据下面定义update过程。 2.对于更新过程 def update(i): x.append(xs[i]) y.append(ys[i]) ax1.set_xlim(min(x),max(x)1) ax1.set_ylim(min(y),max(y)1) p1.set_data(x,y) ax1.figure.canvas.draw() return p1 上述定义更新函数参数i为每轮迭代从FuncAnimation方法frames参数传进来的数值frames参数的指定下文会进一步说x/y通过相应更新之后对图形的x/y轴大小做相应的重设再把数据通过set_data传进图形注意ax1和p1的区别最后再把上述的变化通过draw()方法绘制到界面上返回p1给FuncAnimation方法。 3.对于FuncAnimation方法 ani FuncAnimation(figfig,funcupdate,frameslen(xs),interval1) plt.show() FuncAnimation方法主要是与update函数做交互将frames参数对应的数据逐条传进update函数再由update函数返回的图形覆盖FuncAnimation原先的图形fig参数即为一开始对应的参数interval为每次更新的时间间隔还有其他一些参数如blitTrue控制图形精细当界面较多子图时为True可以使得看起来不会太卡关键是frames参数下面是官方给出的注释可为迭代数可为函数也可为空上面我指定为数组的长度其迭代则从0开始到最后该数值停止。 该例子最终呈现的效果如下了解大概的实现细节就不在这里多说了。 二、animation的优缺点 animation的绘制的结果相比于下文的ion会更加的细腻主要体现在FuncAnimation方法的一些参数的控制上。但是缺点也是明显就是必须先有指定的数据或者指定的数据大小显然这样对于预先无法知道数据的情况没法处理。所以换一种思路在matplotlib ion打开的模式下每次往模板插入数据都会进行相应的更新具体看第二部分。 三、matplotlib ion实现思路 一、实时更新 matplotlib ion的实现也主要是三个核心1是打开ion2是实时更新机制3是呈现在界面上。 1.对于打开ion ion全称是 interactive on交互打开其意为打开一个图形的交互接口之后每次绘图都在之前打开的面板上操作举个例子 import matplotlib.pyplot as plt plt.ion() fig plt.figure() ax1 fig.add_subplot(111) line, ax1.plot(t, v, linestyle-, colorr) 打开交互接口初始化图形。 2.对于实时更新机制 import numpy as np ys np.random.normal(100, 10, 1000) def p(a, b): t.append(a) v.append(b) ax1.set_xlim(min(t), max(t) 1) ax1.set_ylim(min(v), max(v) 1) line.set_data(t, v) plt.pause(0.001) ax1.figure.canvas.draw() for i in xrange(len(ys)): p(i, ys[i]) 随机生成一组数据定义作图函数p包含pause表示暂定时延最好有防止界面卡死传入数据实时更新。 3.对于界面最终呈现 plt.ioff() plt.show() ioff是关闭交互模式就像open打开文件产生的句柄最好也有个close关掉。 最终效果如下二、ion的优缺点 animation可以在细节上控制比ion更加细腻这也是ion没有的一点但是单就无需预先指定数据这一点ion也无疑是能把流数据做得更加好。 四、最后 贴一下两种方法在最开始那种图的做法ion我定义成类这样每次调用只需穿入参数就可以。 animation版本 # _*_ coding:utf-8 _*_ import os import csv import datetime import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation from matplotlib.dates import DateFormatter import matplotlib.ticker as ticker # read the file filePath os.path.join(os.getcwd(), data/anomalyDetect_output.csv) file open(filePath, r) allData csv.reader(file) # skip the first three columns allData.next() allData.next() allData.next() # cache the data data [line for line in allData] # for i in data: print i # take out the target value timestamp [line[0] for line in data] value [line[1:] for line in data] # format the time style 2016-12-01 00:00:00 def timestampFormat(t): result datetime.datetime.strptime(t, %Y-%m-%d %H:%M:%S) return result # take out the data timestamp map(timestampFormat, timestamp) value_a [float(x[0]) for x in value] predict_a [float(x[1]) for x in value] anomalyScore_a [float(x[2]) for x in value] # initial the size of the figure fig plt.figure(figsize(18, 8), facecolorwhite) fig.subplots_adjust(left0.06, right0.70) ax1 fig.add_subplot(2, 1, 1) ax2 fig.add_subplot(2, 1, 2) ax3 fig.add_axes([0.8, 0.1, 0.2, 0.8], frameonFalse) # initial plot p1, ax1.plot_date([], [], fmt-, colorred, labelactual) ax1.legend(locupper right, frameonFalse) ax1.grid(True) p2, ax2.plot_date([], [], fmt-, colorred, labelanomaly score) ax2.legend(locupper right, frameonFalse) ax2.axhline(0.8, colorblack, lw2) # add the x/y label ax2.set_xlabel(date time) ax2.set_ylabel(anomaly score) ax1.set_ylabel(value) # add the table in ax3 col_labels [date time, actual value, predict value, anomaly score] ax3.text(0.05, 0.99, anomaly value table, size12) ax3.set_xticks([]) ax3.set_yticks([]) # axis format dateFormat DateFormatter(%m/%d %H:%M) ax1.xaxis.set_major_formatter(ticker.FuncFormatter(dateFormat)) ax2.xaxis.set_major_formatter(ticker.FuncFormatter(dateFormat)) # define the initial function def init(): p1.set_data([], []) p2.set_data([], []) return p1, p2 # initial data for the update function x1 [] x2 [] x1_2 [] y1_2 [] x1_3 [] y1_3 [] y1 [] y2 [] highlightList [] turnOn True tableValue [[0, 0, 0, 0]] # update function def stream(i): # update the main graph(contains actual value and predicted value) # add the data global turnOn, highlightList, ax3 x1.append(timestamp[i]) y1.append(value_a[i]) # update the axis minAxis max(x1) - datetime.timedelta(days1) ax1.set_xlim(minAxis, max(x1)) ax1.set_ylim(min(y1), max(y1)) ax1.figure.canvas.draw() p1.set_data(x1, y1) # update the anomaly graph(contains anomaly score) x2.append(timestamp[i]) y2.append(anomalyScore_a[i]) ax2.set_xlim(minAxis, max(x2)) ax2.set_ylim(min(y2), max(y2)) # update the scatter if anomalyScore_a[i] 0.8: x1_3.append(timestamp[i]) y1_3.append(value_a[i]) ax1.scatter(x1_3, y1_3, s50, colorblack) # update the high light if anomalyScore_a[i] 0.8: highlightList.append(i) turnOn True else: turnOn False if len(highlightList) ! 0 and turnOn is False: ax2.axvspan(timestamp[min(highlightList)] - datetime.timedelta(minutes10), timestamp[max(highlightList)] datetime.timedelta(minutes10), colorr, edgecolorNone, alpha0.2) highlightList [] turnOn True p2.set_data(x2, y2) # add the table in ax3 # update the anomaly tabel if anomalyScore_a[i] 0.8: ax3.remove() ax3 fig.add_axes([0.8, 0.1, 0.2, 0.8], frameonFalse) ax3.text(0.05, 0.99, anomaly value table, size12) ax3.set_xticks([]) ax3.set_yticks([]) tableValue.append([timestamp[i].strftime(%Y-%m-%d %H:%M:%S), value_a[i], predict_a[i], anomalyScore_a[i]]) if len(tableValue) 40: tableValue.pop(0) ax3.table(cellTexttableValue, colWidths[0.35] * 4, colLabelscol_labels, loc1, cellLoccenter) return p1, p2 # main animated function anim FuncAnimation(fig, stream, init_funcinit, frameslen(timestamp), interval0) plt.show() file.close() ion版本 #! /usr/bin/python import os import csv import datetime import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation from matplotlib.dates import DateFormatter import matplotlib.ticker as ticker class streamDetectionPlot(object):Anomaly plot output.# initial the figure parameters. def __init__(self): # Turn matplotlib interactive mode on. plt.ion() # initial the plot variable. self.timestamp [] self.actualValue [] self.predictValue [] self.anomalyScore [] self.tableValue [[0, 0, 0, 0]] self.highlightList [] self.highlightListTurnOn True self.anomalyScoreRange [0, 1] self.actualValueRange [0, 1] self.predictValueRange [0, 1] self.timestampRange [0, 1] self.anomalyScatterX [] self.anomalyScatterY [] # initial the figure. global fig fig plt.figure(figsize(18, 8), facecolorwhite) fig.subplots_adjust(left0.06, right0.70) self.actualPredictValueGraph fig.add_subplot(2, 1, 1) self.anomalyScoreGraph fig.add_subplot(2, 1, 2) self.anomalyValueTable fig.add_axes([0.8, 0.1, 0.2, 0.8], frameonFalse) # define the initial plot method. def initPlot(self): # initial two lines of the actualPredcitValueGraph. self.actualLine, self.actualPredictValueGraph.plot_date(self.timestamp, self.actualValue, fmt-, colorred, labelactual value) self.predictLine, self.actualPredictValueGraph.plot_date(self.timestamp, self.predictValue, fmt-, colorblue, labelpredict value) self.actualPredictValueGraph.legend(locupper right, frameonFalse) self.actualPredictValueGraph.grid(True) # initial two lines of the anomalyScoreGraph. self.anomalyScoreLine, self.anomalyScoreGraph.plot_date(self.timestamp, self.anomalyScore, fmt-, colorred, labelanomaly score) self.anomalyScoreGraph.legend(locupper right, frameonFalse) self.baseline self.anomalyScoreGraph.axhline(0.8, colorblack, lw2) # set the x/y label of the first two graph. self.anomalyScoreGraph.set_xlabel(datetime) self.anomalyScoreGraph.set_ylabel(anomaly score) self.actualPredictValueGraph.set_ylabel(value) # configure the anomaly value table. self.anomalyValueTableColumnsName [timestamp, actual value, expect value, anomaly score] self.anomalyValueTable.text(0.05, 0.99, Anomaly Value Table, size12) self.anomalyValueTable.set_xticks([]) self.anomalyValueTable.set_yticks([]) # axis format. self.dateFormat DateFormatter(%m/%d %H:%M) self.actualPredictValueGraph.xaxis.set_major_formatter(ticker.FuncFormatter(self.dateFormat)) self.anomalyScoreGraph.xaxis.set_major_formatter(ticker.FuncFormatter(self.dateFormat)) # define the output method. def anomalyDetectionPlot(self, timestamp, actualValue, predictValue, anomalyScore): # update the plot value of the graph. self.timestamp.append(timestamp) self.actualValue.append(actualValue) self.predictValue.append(predictValue) self.anomalyScore.append(anomalyScore) # update the x/y range. self.timestampRange [min(self.timestamp), max(self.timestamp)datetime.timedelta(minutes10)] self.actualValueRange [min(self.actualValue), max(self.actualValue)1] self.predictValueRange [min(self.predictValue), max(self.predictValue)1] # update the x/y axis limits self.actualPredictValueGraph.set_ylim( min(self.actualValueRange[0], self.predictValueRange[0]), max(self.actualValueRange[1], self.predictValueRange[1]) ) self.actualPredictValueGraph.set_xlim( self.timestampRange[1] - datetime.timedelta(days1), self.timestampRange[1] ) self.anomalyScoreGraph.set_xlim( self.timestampRange[1]- datetime.timedelta(days1), self.timestampRange[1] ) self.anomalyScoreGraph.set_ylim( self.anomalyScoreRange[0], self.anomalyScoreRange[1] ) # update the two lines of the actualPredictValueGraph. self.actualLine.set_xdata(self.timestamp) self.actualLine.set_ydata(self.actualValue) self.predictLine.set_xdata(self.timestamp) self.predictLine.set_ydata(self.predictValue) # update the line of the anomalyScoreGraph. self.anomalyScoreLine.set_xdata(self.timestamp) self.anomalyScoreLine.set_ydata(self.anomalyScore) # update the scatter. if anomalyScore 0.8: self.anomalyScatterX.append(timestamp) self.anomalyScatterY.append(actualValue) self.actualPredictValueGraph.scatter( self.anomalyScatterX, self.anomalyScatterY, s50, colorblack ) # update the highlight of the anomalyScoreGraph. if anomalyScore 0.8: self.highlightList.append(timestamp) self.highlightListTurnOn True else: self.highlightListTurnOn False if len(self.highlightList) ! 0 and self.highlightListTurnOn is False: self.anomalyScoreGraph.axvspan( self.highlightList[0] - datetime.timedelta(minutes10), self.highlightList[-1] datetime.timedelta(minutes10), colorr, edgecolorNone, alpha0.2 ) self.highlightList [] self.highlightListTurnOn True # update the anomaly value table. if anomalyScore 0.8: # remove the table and then replot it self.anomalyValueTable.remove() self.anomalyValueTable fig.add_axes([0.8, 0.1, 0.2, 0.8], frameonFalse) self.anomalyValueTableColumnsName [timestamp, actual value, expect value, anomaly score] self.anomalyValueTable.text(0.05, 0.99, Anomaly Value Table, size12) self.anomalyValueTable.set_xticks([]) self.anomalyValueTable.set_yticks([]) self.tableValue.append([ timestamp.strftime(%Y-%m-%d %H:%M:%S), actualValue, predictValue, anomalyScore ]) if len(self.tableValue) 40: self.tableValue.pop(0) self.anomalyValueTable.table(cellTextself.tableValue, colWidths[0.35] * 4, colLabelsself.anomalyValueTableColumnsName, loc1, cellLoccenter ) # plot pause 0.0001 second and then plot the next one. plt.pause(0.0001) plt.draw() def close(self): plt.ioff() plt.show() 下面是ion版本的调用 graph stream_detection_plot.streamDetectionPlot() graph.initPlot() for i in xrange(len(timestamp)): graph.anomalyDetectionPlot(timestamp[i],value_a[i],predict_a[i],anomalyScore_a[i]) graph.close() 具体为实例化类初始化图形传入数据作图关掉。 以上就是本文的全部内容希望对大家的学习有所帮助也希望大家多多支持脚本之家。
http://wiki.neutronadmin.com/news/173417/

相关文章:

  • 浙江建设职业技术学院塘栖校区网站个人网站域名申请
  • 西安专业网站建设服务好国外优秀的网站建设公司
  • 2018爱情动做网站苏州建站公司认准苏州聚尚网络
  • 旅游网站大全施工企业奖惩制度范本
  • 做个公司展示网站多少钱 后期有什么费用网络游戏陪玩
  • 建设肯德基网站的好处葫芦岛建设网站
  • 怎样手机网站建设正保建设工程网站
  • 提升网站速度电销外包怎么收费
  • 十八把网站做扇子wordpress角色权限管理
  • 聊城建网站哪家好电子印章手机在线制作软件
  • 丰城做网站凡科自助建站平台
  • 茶叶手机网站建设网站建站网站哪家好
  • 网站开发 html网站后台培训
  • 网站后台可改资料建设网站如何挂到网上
  • 免费自助音乐网站申请wordpress企业网站模板破解
  • 柳州网站建设哪家好科技与狠活
  • 怎么做qq可信任网站开发一个页面多少钱
  • 南京seo网站优化深圳网络营销培训
  • 达州做网站做网站签了合同后不想做了
  • 自己做网站下载怎么二级建造师网官网
  • 云南省建设考试中心网站公司网站建设情况
  • 网站设计的开发工具和环境重庆网站建设changeke
  • 东台市住房和城乡建设局闷网站wordpress如何秒开
  • 微信上的网站怎么做的常州制作公司网站
  • 网站策划做营销推广杭州餐饮团购网站建设
  • 静态网页设计网站制作营销型网站建设有哪些平台
  • 枣庄网站制作春雨直播视频观看完整版
  • 外卖网站的建设与推广哪些公司需要网页电商设计师
  • 网站建设与维护书籍推荐网站一键备案
  • 青岛定制网站建设推广装修材料