本发明属于计算机信息处理技术领域,涉及到一种基于无参数网格的无线电信号数据聚类方法。
背景技术:
在无线电信号分析领域经常面临的一个问题就是怎么样将属于同一个信号源的信号分选出来并进行后续分析。在信号环境越来越复杂的情况下,传统的信号分选方法已不能满足准确性和高效性的需求。因此,我们需要借助一些智能的机器学习算法对信号进行处理。
网格聚类算法的基本思想是将数据维度划分为多个相邻的区间,创建网格单元集合,然后基于网格结构对数据进行聚类。网格聚类算法的优点是它的处理速度很快,其处理时间独立于数据对象的数目,只和量化空间中的每一维的单元数目有关。由此可以看出网格聚类方法非常适合对大规模的无线电信号数据进行聚类分析,可以满足信号聚类的高效性需求。
通常情况下,网格聚类算法需要人为确定两个参数——网格划分值和密度阈值,其中网格划分值一般只需要和数据个数保持一致,但密度阈值的取值却需要对数据的分布情况进行详细分析之后才能确定。网格聚类算法聚类结果的正确与否与这两个参数的设定有相当紧密的关系。
技术实现要素:
本发明所解决的技术问题是,针对现有技术的不足,提供一种基于无参数网格的无线电信号数据聚类方法,根据无线电信号数据的采集时长、信号数据点个数等信息自动计算参数k及minpts,以解决聚类结果对参数的依赖性问题。
本发明所提供的技术方案为:
一种基于无参数网格的无线电信号数据聚类方法,包括以下步骤:
步骤1):以无线电信号数据集中的数据个数除以该批数据的采集时长,得到网格划分值k;
步骤2):根据步骤1)得到的网格划分值k,将该批信号数据的中心频率维度划分为k个等长但不相交的网格单元;以信号数据中心频率属性的分布范围除以网格划分值得到单个网格单元的长度,然后根据单个单元的长度和信号数据中心频率属性的分布范围计算得到每个网格单元的中心频率范围;
步骤3):根据已知的每个信号数据中心频率值,将其划分至对应的网格单元,并且统计每个网格单元的数据点个数作为网格单元密度值;
步骤4):根据已统计的网格单元密度值,计算密度阈值,并依据密度阈值对网格单元进行划分,其中网格密度高于密度阈值的为高密网格,反之为低密网格即边界网格;
步骤5):根据步骤4)得到的高密网格集合,将其中相邻的高密网格单元连接起来,形成多个聚类。即假设a高密网格单元与b高密网格单元相邻,c高密网格单元与d高密网格单元相邻,但是ab和cd之间不相邻,那么这里会形成ab和cd两个聚类。
步骤6):从边界网格单元中提取聚类边界点,并根据边界处理方法将其放至所属聚类,以该步骤之后所得聚类结果为[c1,c2,...,ct,...,ck],其中1≤t≤k;
所述的边界处理方法是对低密网格单元中的所有信号数据即信号点,计算其到所有相邻高密网格单元中心位置的距离,最后将小于阈值的信号点放置相应的聚类。
步骤7):通过信号的带宽属性,对信号聚类结果进行噪声检测。
所述的一种基于无参数网格的无线电信号数据聚类方法,所述步骤1)包括以下步骤:
步骤1.1):采集包括中心频率、带宽和采集时间这三个属性在内的无线电信号数据,统计无线电信号数据集的信号点个数m,在此=count(j);其中j表示一个信号;
步骤1.2):根据信号数据的采集时间t(j),计算该信号数据集的采集时长t=max(t(j))-min(t(j));
步骤1.3):根据步骤1.1)和步骤1.2)得到的信号点个数m和采集时长t,计算得出网格划分值k,其中k的计算公式为k=m/t。
所述的一种基于无参数网格的无线电信号数据聚类方法,所述步骤2)具体步骤如下:
步骤2.1):以信号数据中心频率属性的分布范围为[startfreq,endfreq],则单个网格单元的长度δ=(endfreq-startfreq)/k;
步骤2.2):在步骤2.1)的基础上,以i来表示任意一个网格单元,则中心频率范围的计算公式为freq(i)=(startfreq+(i-1)*δ,startfreq+i*δ],其中1≤i≤n,n为网格单元的全部数量,依次计算得到所有网格单元的中心频率范围。
所述的一种基于无参数网格的无线电信号数据聚类方法,所述步骤3)具体步骤如下:
步骤3.1):根据每个信号数据的中心频率值,将其划分至包含有该中心频率值的网格单元中,以j表示一个信号数据,则网格单元i中的信号数据为一个集合,表示为point(i)={j|f(j)∈freq(i)},其中1≤j≤m,m为信号数据个数,f(j)为第j个信号数据的频率属性;
步骤3.2):在步骤3.1)的基础上对每个网格单元中的信号个数进行统计来作为网格单元密度值,计算公式为size(i)=count(point(i))。
所述的一种基于无参数网格的无线电信号数据聚类方法,所述步骤4)具体步骤如下:
表示密度步骤4.1):根据网格单元密度值,查找具有最多数据点的网格单元maxcount=max(size(i)),并记录其数据点个数;
步骤4.2):统计非空的网格单元个数gn。:首先,统计非空网格单元的集合u={i|size(i)>0},则gn=count(u);
步骤4.3):根据信号数据个数m和非空单元格个数gn,计算一个中间值c=m/gn;
步骤4.4):令
步骤4.5):根据步骤4.4)所得结果,计算bm=(am+am+1)/2,其中1≤m≤h-1;
步骤4.6):计算密度阈值
步骤4.7):通过对比每个网格单元密度和密度阈值之间的大小,计算得到高密网格集合highdengrid={i|size(i)>minpts},同时得到低密网格集合lowdengrid={i|size(i)≤minpts}。
所述的一种基于无参数网格的无线电信号数据聚类方法,所述步骤5)具体步骤如下:
步骤5.1):基于所得的高密网格集合,寻找所有出现相邻情况的高密网格单元,并将这些高密网格单元连接起来形成聚类。
所述的一种基于无参数网格的无线电信号数据聚类方法,所述步骤6)具体步骤如下:
步骤6.1):对于低密网格单元lowi∈lowdengrid,统计其相邻的高密网格单元集合
步骤6.2):通过计算集合
步骤6.3):对于每个属于低密网格单元lowi的信号点p,计算其到所有相邻高密网格单元中心位置的距离,计算公式为
步骤6.4):根据步骤6.3)所得内容,计算信号点p到每个相邻高密网格单元数据中心距离的最小值
步骤6.5):设定阈值ε,默认取值δ/2,即为网格单元宽度的一半,如果
步骤6.6):以经过上述所有步骤之后,所得聚类结果为{c1,c2,...,ct,...,ck},其中1≤t≤k。
所述的一种基于无参数网格的无线电信号数据聚类方法,所述步骤7)具体如下:
步骤7.1):以聚类ct中包含nt条数据
步骤7.2):对于属于聚类ct的所有数据点pi,计算该点到聚类ct中其他所有数据点的距离之和,其计算公式为
步骤7.3):计算聚类ct的距离和均值v,其计算公式为:
步骤7.4):对聚类ct中的所有数据点pi,将其距离和di与距离和均值v进行比较,如果di>xv,则认为数据点pi为噪声点,同时将数据点pi从聚类ct中删除。x通过取值为
步骤7.5):重复步骤7.1)到7.4),直到遍历完所有聚类。
本发明的技术效果在于,本发明根据无线电信号数据的采集时长、信号数据点个数等信息自动计算参数k及minpts,以解决聚类结果对参数的依赖性问题。该方法基于无线电信号的数据特征,自动计算网格划分值和密度阈值两个参数,在网格聚类算法高效性的基础上提升了该算法对无线电信号数据聚类的准确性,且减少了分析人员的分析负担。
附图说明
图1是本发明所述方法流程图;
图2是由未聚类的信号数据绘制的频率带宽图;
图3是由本发明所述方法聚类之后的信号数据绘制的频率带宽图。
具体实施方式
本发明包含以下步骤:
步骤1):根据无线电信号数据集中的数据个数m及该批数据的采集时长,计算网格划分值k,其中采集时长可通过信号数据自带的采集时间计算得出;
步骤2):根据步骤1)得到的网格划分值k,将信号数据的中心频率维度划分为k个等长但不相交的网格单元。假设信号数据中心频率属性的分布范围为[startfreq,endfreq],则根据网格划分值k可得到单个网格单元的长度δ,其计算公式为δ=(endfreq-startfreq)/k。进一步可得到所有网格单元的频率范围,在此我们以i来表示任意一个网格单元,则其中心频率范围的计算公式为freq(i)=(startfreq+(i-1)*δ,startfreq+i*δ],其中1≤i≤n,n为网格单元的全部数量。
步骤3):根据每个信号数据的中心频率值,将其划分至对应的网格单元,并且统计每个网格单元的密度,即对网格单元中的数据点个数进行统计;在此我们以j表示一个信号数据,则网格单元i中的信号数据为一个集合,该集合可表示为point(i)=[j|f(j)∈freq(i)],其中1≤j≤m,m为信号数据个数,f(j)为第j个信号数据的频率属性。在此基础上对每个网格单元中的信号个数进行统计,计算公式为size(i)=count(point(i));
步骤4):根据已统计的网格单元密度值,计算密度阈值,并依据密度阈值对网格单元进行划分,其中网格密度高于密度阈值的为高密网格,反之为边界网格;在此我们用minpts表示密度阈值,其计算公式后文会进行详细说明。通过对比每个网格单元密度和密度阈值之间的大小,我们可得到高密网格集合highdengrid=[i|size(i)>minpts],同时可得到低密网格集合lowdengrid=[i|size(i)≤minpts];
步骤5):根据步骤4)得到的高密网格集合,我们需要检测相邻的高密网格单元,并将其连接形成聚类。
步骤6):从边界网格单元中提取聚类边界点,并根据边界处理方法将其放至所属聚类。假设该步骤之后所得聚类结果为[c1,c2,...,ct,...,ck],其中1≤t≤k;
步骤7):通过信号的带宽属性,对信号聚类结果进行噪声检测。
所述步骤1)包括以下步骤:
步骤1.1):本发明主要用于对无线电信号数据进行聚类,其中每条无线电信号数据包含中心频率、带宽、信号强度、信噪比以及采集时间五个属性。首先我们需要统计无线电信号数据集的信号点个数m,在此我们以j来表示一个信号,则信号点个数m的计算公式为m=count(j);
步骤1.2):根据信号数据的采集时间t(j),计算该信号数据集的采集时长t=max(t(j))-min(t(j));
步骤1.3):根据步骤1.1)和步骤1.2)得到的信号点个数m和采集时长t,计算得出网格划分值k,其中k的计算公式为k=m/t。通常情况下网格划分值k=m,即网格划分值与数据点个数保持一致。在此我们考虑到,随着信号采集时间的增长,数据会越来越多,但信号采集的频率范围却是固定不变的。此时如果还是采用数据点个数作为网格划分值,会导致网格划分值越来越大。为了保持一个逻辑上的信号能够在网格划分空间内均匀分布,我们采用上述方法计算网格划分值。这里需要说明的是一个逻辑上的信号指那些同属于一个信号源的信号,这些信号在数据集中为一条记录。
所述步骤2)包括以下步骤:
步骤2.1):假设信号数据中心频率属性的分布范围为[startfreq,endfreq],则根据网格划分值k可得到单个网格单元的长度δ,其计算公式为δ=(endfreq-startfreq)/k;
步骤2.2):在步骤2.1)的基础上,可得到所有网格单元的频率范围。在此我们以i来表示任意一个网格单元,则其中心频率范围的计算公式为freq(i)=(startfreq+(i-1)*δ,startfreq+i*δ],其中1≤i≤n,n为网格单元的全部数量。
所述步骤3)包括以下步骤:
步骤3.1):根据每个信号数据的中心频率值,将其划分至对应的网格单元。在此我们以j表示一个信号数据,则网格单元i中的信号数据为一个集合,该集合可表示为point(i)={j|f(j)∈freq(i)},其中1≤j≤m,m为信号数据个数,f(j)为第j个信号数据的频率属性;
步骤3.2):在步骤3.1)的基础上对每个网格单元中的信号个数进行统计,计算公式为size(i)=count(point(i))。
所述步骤4)包括以下步骤:
步骤4.1):根据步骤3.2)中已统计的网格单元密度值,计算密度阈值,在此我们用minpts表示密度阈值;
步骤4.2):查找具有最多数据点的网格单元,并记录其数据点个数,该过程可用公式表述为maxcount=max(size(i));
步骤4.3):进一步,我们需要统计非空的网格单元个数gn。首先,统计非空网格单元的集合u={i|size(i)>0},则gn=count(u);
步骤4.4):根据步骤1.1)所得信号数据个数m和步骤4.3)所得非空单元格个数gn,计算一个中间值c=m/gn;
步骤4.5):令
步骤4.6):根据步骤4.5)所得结果,计算bm=(am+am+1)/2,其中1≤m≤h-1;
步骤4.7):计算密度阈值
步骤4.8):通过对比每个网格单元密度和密度阈值之间的大小,计算得到高密网格集合highdengrid={i|size(i)>minpts},同时可得到低密网格集合lowdengrid={i|size(i)≤minpts}。
所述步骤5)包括以下步骤:
步骤5.1):基于步骤4.8)所得的高密网格集合,连接相邻的高密网格单元形成聚类。
所述步骤6)包括以下步骤:
步骤6.1):对于低密网格单元lowi∈lowdengrid,统计其相邻的高密网格单元集合
步骤6.2):计算集合
步骤6.3):对于每个属于低密网格单元lowi的信号点p,计算其到所有相邻高密网格单元中心位置的距离,计算公式为
步骤6.4):根据步骤6.3)所得内容,计算数据点p到每个相邻高密网格单元数据中心距离的最小值
步骤6.5):设定阈值ε,默认取值δ/2,即为网格单元宽度的一半,用户也可以自行指定。如果
步骤6.6):假设经过上述所有步骤之后,所得聚类结果为{c1,c2,...,ct,...,ck},其中1≤t≤k。
所述步骤7)包括以下步骤:
步骤7.1):假设聚类ct中包含nt条数据
步骤7.2):对于属于聚类ct的所有数据点pi,计算该点到聚类ct中其他所有数据点的距离之和,其计算公式为
步骤7.3):计算聚类ct的距离和均值v,其计算公式为:
步骤7.4):对聚类ct中的所有数据点pi,将其距离和di与距离和均值v进行比较,如果di>xv,则认为数据点pi为噪声点,同时将数据点pi从聚类ct中删除。这里的x通过多次实验验证,推荐取值为
步骤7.5):重复步骤7.1)到7.4),直到遍历完所有聚类。
为使本发明的目的、设计思路和优点更加清楚,以下结合具体实例,并参照附图,对本发明作进一步详细说明。
本发明提供了一种基于无参数网格的无线电信号数据聚类方法(标题),如图1所示,包含七个主要步骤:1)根据无线电信号数据集中的数据个数及该批数据的采集时长,计算网格划分值k;2)根据网格划分值k,将信号数据的中心频率维度划分为k个等长但不相交的网格单元;3)根据每个信号数据的中心频率值,将其划分至对应的网格单元,并且统计每个网格单元的密度,即对网格单元中的数据点个数进行统计;4)根据已统计的网格单元密度值,计算密度阈值,并依据密度阈值对网格单元进行划分,其中网格密度高于密度阈值的为高密网格,反之为低密网格,也即边界网格;5)检测相邻的高密网格单元,并将其连接形成聚类;6)从边界网格单元中提取聚类边界点,并根据边界处理方法将其放至所属聚类;7)通过信号的带宽属性,对信号聚类结果进行噪声检测。
下面对本发明的方法涉及的关键步骤进行逐一详细说明,具体步骤如下所示:
步骤一,如图2所示为我们本次进行聚类的无线电信号数据,该组信号采集时长t=94s,数据个数m=5996。根据数据个数m和采集时长t,计算得出网格划分值
步骤二,根据信号数据中心频率属性的分布范围[startfreq,endfreq],及网格划分值k可得到单个网格单元的长度δ=(endfreq-startfreq)/k;进一步得到所有网格单元的频率范围。在此我们以i来表示任意一个网格单元,则其中心频率范围freq(i)=(startfreq+(i-1)*δ,startfreq+i*δ],其中1≤i≤n,n为网格单元的全部数量。
步骤三,根据每个信号数据的中心频率值,将其划分至对应的网格单元。在此我们以j表示一个信号数据,在进行划分操作之后网格单元i中的信号数据集合可表示为point(i)={j|f(j)∈freq(i)},其中1≤j≤m,m为信号数据个数,f(j)为第j个信号数据的频率属性;进一步,统计网格单元密度值,即对每个网格单元中的信号个数进行统计size(i)=count(point(i))。
步骤四,根据已统计的网格单元密度值,计算密度阈值。首先,查找具有最多数据点的网格单元,并记录其数据点个数,该过程可用公式表述为maxcount=max(size(i));其次,统计非空网格单元个数gn;然后,根据信号数据个数m和非空单元格个数gn,计算一个中间值c=m/gn;进一步,令
在得到密度阈值minpts之后,我们需要对比每个网格单元密度和密度阈值之间的大小,得到高密网格集合highdengrid={i|size(i)>minpts},以及低密网格集合lowdengrid={i|size(i)≤minpts}。
步骤五,基于步骤四所得的高密网格集合,连接相邻的高密网格单元形成聚类。
步骤六,对于低密网格单元lowi∈lowdengrid,统计其相邻的高密网格单元集合
假设经过上述所有步骤之后,所得聚类结果为{c1,c2,...,ct,...,ck},其中1≤t≤k。
步骤七,假设聚类ct中包含nt条数据