传感数据分析——Permutation Entropy Weight Method(排列熵权法)
传感数据分析——Permutation Entropy Weight Method(排列熵权法)
前言
文章传感数据分析——Entropy Weight Method (熵权法)中叙述了熵权法的基本步骤。
之前几期文章已经叙述了信息熵权法、TOPSIS熵权法、近似熵权法、样本熵权法、模糊熵权法。
本节将叙述排列熵权法对多传感数据进行处理,并基于Python实现。
本文正文内容
一、基础理论
基本步骤
熵权法的5个步骤可以参考我的另一篇文章传感数据分析——Entropy Weight Method (熵权法)。
排列熵
排列熵
P
e
E
n
PeEn
PeEn是一种检测时间序列随机性和动态变异行为的熵值。
P
e
E
n
PeEn
PeEn的特点就
是就是更具信号特征的改变实现动态的检测,可实现突变信号在线监测。
P
e
E
n
PeEn
PeEn
在计算重构子序列之间的复杂度时引入了排列的思想,具体公式如下:
Y
i
=
[
x
(
i
)
,
x
(
i
+
τ
)
,
?
?
,
x
(
i
+
(
m
?
1
)
τ
)
]
,
i
=
1
,
2
,
?
?
,
N
?
m
+
1
\begin{equation}Y_i=[x(i),x(i+\tau),\cdots,x(i+(m-1)\tau)],i=1,2,\cdots,N-m+1\end{equation}
Yi?=[x(i),x(i+τ),?,x(i+(m?1)τ)],i=1,2,?,N?m+1??
x
(
i
+
(
j
1
?
1
)
τ
)
≤
x
(
i
+
(
j
2
?
1
)
τ
)
≤
?
≤
x
(
i
+
(
j
m
?
1
)
τ
)
\begin{equation}x(i+(j_1-1)\tau)\leq x(i+(j_2-1)\tau)\leq\cdots\leq x(i+(j_m-1)\tau)\end{equation}
x(i+(j1??1)τ)≤x(i+(j2??1)τ)≤?≤x(i+(jm??1)τ)??
S
(
l
)
=
(
j
1
,
j
2
,
?
?
,
j
m
)
,
l
=
1
,
2
,
?
?
,
k
,
a
n
d
?
k
≤
m
!
\begin{equation}S(l)=(j_1,j_2,\cdots,j_m),l=1,2,\cdots,k,and~k\leq m!\end{equation}
S(l)=(j1?,j2?,?,jm?),l=1,2,?,k,and?k≤m!??
P
i
=
N
u
m
b
e
r
(
Y
i
)
N
?
(
m
?
1
)
τ
\begin{equation}P_i=\frac{Number(Y_i)}{N-(m-1)\tau}\end{equation}
Pi?=N?(m?1)τNumber(Yi?)???
P
E
(
m
)
=
?
∑
i
=
1
k
(
P
i
ln
?
P
i
)
\begin{equation}PE(m)=-\sum_{i=1}^k(P_i\ln P_i)\end{equation}
PE(m)=?i=1∑k?(Pi?lnPi?)??
0
≤
f
PeEn
=
P
E
/
ln
?
(
m
!
)
≤
1
\begin{equation}0\leq f_{\textit{PeEn}} = P E / \ln ( m ! ) \leq 1\end{equation}
0≤fPeEn?=PE/ln(m!)≤1??
式(1)~(6)中,
m
m
m 表示嵌入维度,
τ
\tau
τ表示时间延迟因子,
S
(
l
)
S(l)
S(l)是一组符
号序列,由每个元素位置列的索引组成,在每个重构分量按升序重新排列之后。
l
l
l是向量中第
m
m
m个元素的位置的列索引。
P
i
P_i
Pi?是每一类出现的概率。
P
E
PE
PE表示序列的
排列熵值,
f
P
e
E
n
f_{PeEn}
fPeEn?表示排列熵的归一化值。
矩阵
Y
Y
Y共有
k
k
k 个重构分量,每个重构分量都有
m
m
m 维嵌入元素。将矩阵中的第
j
j
j 个类别按升序排列。
j
m
j_m
jm?表示重构分量中每个元素的下标索引值。注意,序列
P
P
P的时间延迟因子
τ
\tau
τ ,它必须是一个正整数。这个参数可以理解为序列的采样间隔。例如,当
τ
=
3
\tau=3
τ=3时,每 3 个数据点采样一次;当
τ
=
1
\tau=1
τ=1时,序列
P
P
P与
A
p
E
n
ApEn
ApEn 和
S
a
m
p
E
n
SampEn
SampEn 的序列定义相同。
==========================================
相关细节叙述可以见大佬的博客:【熵与特征提取】从近似熵,到样本熵,到模糊熵,再到排列熵,究竟实现了什么?(第四篇)——“排列熵”及其MATLAB实现。
二、运行环境
系统: Windows 10 / Ubuntu 20.04
编程语言: Python 3.8
文本编译器: Vscode
所需库:pandas >= 0.23.0, matplotlib >= 2.2.2 , numpy >= 1.19.5,scikit-learn > 0.19.1
三、排列熵Python实现
代码如下(示例):
def permutation_entropy(y, m, t):
"""
计算排列熵
输入:y:时间序列;
m:排列熵的阶数
t:排列熵的延迟时间,
输出:
pe:排列熵
hist:顺序分布的直方图
"""
# Calculate the length of the time series
ly = len(y)
# Generate all possible permutations of integers from 1 to m
permlist = list(permutations(range(1, m+1)))
c = np.zeros(len(permlist))
# Generate all possible permutations of integers from 1 to m
for j in range(ly - t * (m - 1)):
# Sort the values and get the sorted indices
_, iv = zip(*sorted(enumerate(y[j:t+j]), key=lambda x: x[1]))
iv = np.array(iv) + 1
# Check for each permutation and update the count
for jj, perm in enumerate(permlist):
if np.array_equal(np.array(perm), iv):
c[jj] += 1
# Extract non-zero counts as histogram
hist = c[c != 0]
# Calculate probabilities
p = hist / np.sum(hist)
pe = -np.sum(p * np.log(p))
return pe, hist
其他部分的程序与信息熵权法、TOPSIS熵权法、近似熵权法、样本熵权法、模糊熵权法类似,可自行参考。
结果图
总结
以上就是本节对传感数据进行排列熵权法计算输出综合评价值的内容,本文简单介绍了传感数据分析中排列熵权法基本公式及Python的实现,具体见资源传感数据分析-Permutation Entropy Weight Method(排列熵权法,后续还会持续更新本系列,收藏过100,后台联系我,我会免费将熵权法全部相关的代码都发给你。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!