Author: Alex Zhang,Data Scientist,GE Digital
内容简介
本文提供了在Predix上进行数据分析的实例 。该实例 通过AnalyticFramework定时调用分类器对Timeseris 数据库中的数据进行实时读取、分析,并将结果写回Timeseries中存储。若读者已经注册Predix帐号,可根据本文中的操作步骤表进行实际操作。主要步骤:
1. 数据准备:训练数据的准备;测试数据导入到Timeseries;
2. 建立分类器用于Anomaly Detection(以Python为例);
3. 将分类器和在线分类打包上传到Analytic catalog;
4. 在Analytic Framework上配置Analytic的输入输出;
5. 用Analytic Framework的jobscheduler实时调用分类算法并将结果写回Timeseries。
1. 数据准备
通过随机数发生器产生一段随机数,以10000个点为例,并在此基础上做基于移动平均的平滑,以窗口大小为100为例,可以产生一段数据。并在随机的时间点产生幅度较大的随机数,如下图中的红点所示。在我们的例子中,我们将分类黑线中的sample,并通过一个分类器来判断其是否为异常点(即红点)。
在我们的例子中,我们将黑线数据分成长度相等的两部份,一部份用于分类器的训练,另一部份用于仿真实时数据的得到和分类。我们将每二部份数据导入到预先建好的时间序列数据库中,每五秒钟存一个数据点。过程请参考:http://blog.youkuaiyun.com/predixcn/article/details/70227396
2. 训练分类器
在这一步,我们要训练一个分类器来判断黑线中的样本点是否为异常数据。在此,我们用sklearn.discriminant_analysis中的QuadraticDiscriminantAnalysis方法,即QuadraticDiscriminant Analysis方法。该方法假设每一类数据均符合高斯分布,每个类所属高斯函数有不同的协方差矩阵。我们将训练中的正常数据标为0,异常数据标为1,并对分类器进行训练:
qda =QuadraticDiscriminantAnalysis(store_covariances=False, priors=(0.9, 0.1))
qda.fit(X, label)
其中X为黑线的sample数据,label为类标,即0或1。由于数据中大部份为正常数据,所以我们可以调整先验概率大部份为正常样本(0.9)。之 后,我们将模型序列化并存储:
output = open('qda.pkl', 'wb')
pickle.dump(qda, output)
output.close()