发明内容
本发明提供基于物联网的畜牧养殖异常预警系统,以解决现有的问题。
本发明的基于物联网的畜牧养殖异常预警系统采用如下技术方案:
本发明一个实施例提供了基于物联网的畜牧养殖异常预警系统,该系统包括以下模块:
数据采集模块,采集温度时序数据;
数据编码模块,根据数据频率构建霍夫曼树,将霍夫曼树中的任意一层记为目标层,将目标层上的温度时序数据记为目标数据,所述目标数据具有相同编码长度,根据目标数据的编码的码元长度和码元变换次数得到编码的冗余度,根据编码的冗余度得到第一排序结果;
将频率相同的目标数据记为等概数据,再在温度时序数据中获取等概数据的邻位数据,根据每个等概数据的邻位数据的编码长度和等概数据的邻位数据的频率得到等概数据的优先级;根据目标数据的频率的从大到小顺序以及等概数据的优先级的从大到小的顺序,对目标数据排序得到第三排序结果;根据第一排序结果和第三排序结果得到目标数据的新编码结果;
数据压缩预警模块,根据新编码结果对温度时序数据压缩得到压缩后的结果,对压缩后的数据进行聚类得到正常数据和异常数据,根据正常数据和异常数据得到正常数据与异常数据之间的差异性,根据正常数据与异常数据之间的差异性和预设阈值进行预警。
进一步地,所述编码的冗余度的具体获取方法为:
编码的冗余度的公式为:
式中,R表示编码的冗余度,C表示编码的码元变换次数,L表示编码的长度。
进一步地,所述第一排序结果的具体获取方法为:
按照编码的冗余度从大到小顺序对目标数据的编码排序得到第一排序结果。
进一步地,所述再在温度时序数据中获取等概数据的邻位数据,具体操作为:
将目标数据中的任意一个等概数据记为数据A,在温度时序数据中获取与数据A左相邻与右相邻的数据,由于数据A在温度时序数据可能多次出现,因此与数据A左相邻与右相邻的数据有多个,将所有与数据A左相邻与右相邻的数据均称为数据A的相邻数据,记作邻位数据。
进一步地,所述等概数据的优先级的具体获取方法为:
等概数据的优先级的公式为:
B表示等概数据的优先级;n表示等概数据的邻位数据数量;i表示等概数据的第i个邻位数据;表示等概数据的第i个邻位数据的编码长度;/>表示等概数据的第i个邻位数据的频率。
进一步地,所述第三排序结果的具体获取方法为:
将第二排序结果中频率相同的数据按照等概数据的优先级从大到小进行重新排序得到/>,记为第三排序结果;其中,/>表示第二排序结果中的第n个目标数据,n表示第二排序结果和第三排序结果的长度,/>表示第三排序结果中的第n个目标数据。
进一步地,所述第二排序结果的具体获取方法为:
将数据按照出现频率由大到小进行排序得到/>,记为第二排序结果;其中,/>表示第二排序结果中的第n个目标数据,n表示第二排序结果和第三排序结果的长度,/>表示第三排序结果中的第n个目标数据。
进一步地,所述根据第一排序结果和第三排序结果得到目标数据的新编码结果的具体获取方法为:
将第一排序结果记为,第三排序结果记为/>,目标数据/>的编码结果为/>,目标数据/>的编码结果为/>,……,目标数据/>的编码结果为/>;其中,/>表示第一排序结果中的第n个编码,n表示第一排序结果和第三排序结果的长度,表示第三排序结果中的第n个目标数据。
进一步地,所述正常数据与异常数据之间的差异性的具体获取方法为:
正常数据与异常数据之间的差异性的公式为:
其中,Q表示正常数据和异常数据的差异性;表示正常数据的聚类中心;/>表示异常数据的聚类中心;/>表示所有数据的最大值;/>表示所有数据的最小值。
进一步地,所述根据正常数据与异常数据之间的差异性和预设阈值进行预警,包括的具体步骤为:
当正常数据与异常数据之间的差异性大于预设阈值T时,进行预警,当正常数据与异常数据之间的差异性/>小于等于预设阈值T时,则不进行预警。
本发明的技术方案的有益效果是:通过对霍夫曼树中同一层编码长度相同的数据进行重编码,使编码的重压缩效果更好,则需要在不更改霍夫曼编码压缩效果的情况下对各个数据重新编码,使频率更高的数据所对应的编码冗余度更大,由于数据之间的频率会存在相同的情况,导致对频率相同的数据不能很好的确定顺序位置,使得数据没有唯一性,因此通过对编码冗余度的计算和频率相同的邻位数据之间的关系确定频率相同时的优先级,让数据具有一个更优的排序结果,最后对霍夫曼树上的数据进行重编码,以此来提高数据的压缩效率。
具体实施方式
为了更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的基于物联网的畜牧养殖异常预警系统,其具体实施方式、结构、特征及其功效,详细说明如下。在下述说明中,不同的“一个实施例”或“另一个实施例”指的不一定是同一实施例。此外,一或多个实施例中的特定特征、结构或特点可由任何合适形式组合。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。
下面结合附图具体的说明本发明所提供的基于物联网的畜牧养殖异常预警系统的具体方案。
请参阅图1,其示出了本发明一个实施例提供的基于物联网的畜牧养殖异常预警系统的步骤流程图,该系统包括以下模块:
模块101:数据采集模块。
首先需要布置数据采集模块对牲畜所处环境变化进行监测。数据采集模块包括温度传感器和湿度传感器。其中,温度传感器针对棚内温度每隔十分钟采集一天内的数据,用来进行棚内温度的监测,得到一组温度时序数据;湿度传感器针对棚内湿度每隔十分钟采集一天内的数据,用来进行棚内湿度的监测,得到一组湿度时序数据。
其中,温度时序数据和湿度时序数据都是牲畜所处环境数据,本实施例只以牲畜所处环境的温度时序数据为例进行分析,所获取的温度数据均保留一位小数。
至此,数据采集完成。
模块102:数据编码模块。
需要说明的是,在利用霍夫曼编码对数据进行压缩时,相同编码长度所对应数据的频率并不是都相等的。传统的霍夫曼编码对于该种情况的处理手段是,根据频率大小,从左往右从小到大进行排列,若要按照此顺序对该数据进行重压缩,压缩效果并不好。本实施例通过对编码长度相同的数据进行重编码,使频率更大的数据所对应的编码冗余度更大,使重编码后的数据利用游程编码进行重压缩的效果更好。
(1)根据数据频率构建霍夫曼树,获取每个数据的编码长度。
需要说明的是,各个数据出现的频率不同,其利用霍夫曼编码后的编码长度也不同。数据出现频率更高的编码长度更短;数据出现频率更低的编码长度更长。但是在编码过程中会出现,数据编码长度相同,但是数据的频率并不相等的情况。需要都这些数据进行重新编码。
具体地,首先统计每个数据频率,根据频率构建霍夫曼树,获取每个数据的编码长度。
首先,统计出温度数据中每个数据的频数;然后,根据频率构建霍夫曼树;最后,根据霍夫曼树,得到相同编码长度的所有数据。
至此,得到所有编码长度相同的数据。
(2)将编码长度相同的数据重新进行编码,使频率更高的编码冗余度更高。
需要说明的是,在霍夫曼树中,同一层的编码长度是相同的。原有的对于同一层的赋码规则为:从左往右、从小到大依次排序赋予编码。在该编码规则下:数据出现频率越高,其所对应的编码数值越大,和编码的冗余度无关。若想要使编码的重压缩效果更好,则需要在不更改霍夫曼编码压缩效果的情况下对各个数据重新编码(即在同一层重编码),使频率更高的数据所对应的编码冗余度更大。
进一步需要说明的是,在霍夫曼树中,上层的数据出现的频率更大,频率越大,其冗余度对压缩结果的影响就越大。因此,从霍夫曼树的上层往下层依次对数据进行重编码。
具体地,得到一组相同编码长度的数据记为,/>表示第n个编码长度相同的数据,n表示编码长度相同的个数;这组数据/>分别对应的编码为/>,/>为数据/>对应的编码,计算每个编码的冗余度。
编码的冗余度的计算如下:
式中,R表示编码的冗余度,其取值范围为[0,1];C表示编码的码元变换次数,L表示编码的长度。
例如“10010”的码元变化次数为3;L表示码元长度,“10010”的码元长度为5,=5,(L-1)表示码元的最大变化次数。
其中,码元变换次数的获取方法为:在编码中只有1和0,所以就统计1和0相邻的位置个数,记为码元变换次数。
编码长度越长,码元变化次数越少,编码的冗余度越大。编码冗余度越大,则该编码的选择越优。
将编码按照冗余度的高低进行排序得到/>,记为第一排序结果。将数据/>按照出现频率由大到小进行排序得到,记为第二排序结果。将/>与/>进行一对一匹配,即数据/>匹配编码/>,数据/>匹配编码/>,……,数据/>匹配编码/>。
上述通过冗余度和频率对数据进行重新编码,保证了频率大的数据对应的编码具有较高的冗余度,当频率大的数据对应的编码具有较高的冗余度时,可以进一步保证在后续进行游程编码时具有较高的压缩率,进而保证节省数据的存储空间。
至此,获取到了同一层编码长度相同的每个数据对应新的编码。
(3)对于在同一编码层中出现频率相同的数据,分析其左右邻位数据特征,对其进行重编码。
需要说明的是,在上一个步骤中,在同一编码层中出现数据频率相等的情况,导致在依据概率进行排序时,排序结果有多种,本实施例需要选取一种合适的排序结果来保证具有更进一步的压缩效率。而在整个数据样本中,由于各个数据是随机分布的,通过对等概出现的数据赋予编码,尽可能的使相邻数据的数据组合编码冗余度更大,因此需要依据频率相等数据的相邻数据来获得合适的排序结果。
需要说明的是,当冗余度相同时,也会得到冗余度的多种排序结果,但是不同排序结果对最后的压缩率影响都一样,本实施例只需随机的对冗余度相同的编码进行排序即可。
通过对同一编码层中出现频率相同的数据的左右邻位数据的特征进行分析,使相邻的数据编码冗余度更大,对同一编码层中等概出现的数据进行优先级排序。
具体地,以任意编码层为例,获取该编码层频率相同的所有数据,记为等概数据,这些数据中的任意一个数据记为数据A。
在温度时序数据中获取与数据A左相邻与右相邻的数据,由于数据A在温度时序数据可能多次出现,因此与数据A左相邻与右相邻的数据有多个,本实施例将所有与数据A左相邻与右相邻的数据均称为数据A的相邻数据,记作邻位数据。
至此,得到每个等概数据的邻位数据个数和邻位数据的频率。
需要说明的是,对于这些同一层中等概出现的数据,只从出现频率考虑的话,他们的优先级是相同的。因此,在频率的基础上需要考虑其他因素,对这些等概出现的数据排列优先级。在本实施例中考虑到的方向为:等概出现的数据的邻位数据编码长度。由于数据需要利用游程编码重压缩,而游程编码压缩的理想数据为:数据长且数据的码元变化次数少。这种情况下可以达到更大的压缩率。因此,优先对邻位数据编码长度长的数据进行选择,令编码长度更长的数据,优先选择冗余度更大的编码。
(4)计算等概数据与其所有邻位数据编码长度总和,记为等概数据的优先特征。
则等概数据的优先级计算公式如下:
其中,B表示等概数据的优先级;n表示该等概数据的邻位数据数量;i表示该等概数据的第i个邻位数据;表示该等概数据的第i个邻位数据的编码长度;/>表示该等概数据的第i个邻位数据的频率。/>即表示该等概数据的所有邻位数据编码长度之和。
其中,邻位数据的编码长度越长、频率越高,则其邻位数据的编码长度总和越大。邻位数据的编码长度总和越大,则对其选择编码的顺序优先级就越高。
按照其优先级排序,依次对该层等概数据选择编码,优先级越高,选择的编码冗余度就越高。
具体地,将上述中的第二排序结果中频率相同的数据按照等概数据的优先级从大到小进行重新排序得到/>,记为第三排序结果,根据第三排序结果/>和第一排序结果/>进行一一对应得到每个数据对应的编码,得到新的编码结果。
在选择编码的过程中会出现冗余度相同的编码,在压缩时,冗余度相同,利用游程编码压缩时,冗余度相同的数据,压缩大小也相同。因此,相同的编码可以任意选择,对压缩结果不产生影响。
根据选择编码的结果,在不更改原始霍夫曼树的形状的前提下,更改数据所对应的编码,重构霍夫曼树。
至此,得到重构后的霍夫曼树。
模块103:数据压缩预警模块。
根据重构后的霍夫曼树,将原始数据进行初次压缩,然后将压缩后的数据利用游程编码重压缩。将压缩后的数据上传云端,在云平台对数据进行差异性分析。利用k-means聚类将数据分为正常数据和异常数据,通过聚类得到两组数据的聚类中心以及聚类数量。
计算异常数据与正常数据的差异性:
其中,Q表示正常数据和异常数据的差异性;表示正常数据的聚类中心;/>表示异常数据的聚类中心;/>表示所有数据的最大值;/>表示所有数据的最小值。
Q即表示两个聚类中心的距离,两个聚类中心的距离越远,则正常数据和异常数据的差异性就越大,对用户的预警程度就越高。
预设一个预警阈值T,其中本实施例以T=0.5为例进行叙述,本实施例不进行具体限定,其中T可根据具体实施情况而定。由于该数据的差异性描述的是温度之间的差异,所以当Q>T时,则进行预警,反之则不进行预警。
至此,本实施例完成。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。