D-S证据融合理论是我们在做决策级融合时十分重要的方法之一。下面我们利用numpy库来实现D-S融合过程,具体代码如下所示:
import numpy as np
def fusion(a,b):
m1 = np.array(a)
m2 = np.array(b)
k = 0
for i in range(len(a)):
for j in range(len(a)):
k=k+m1[i]*m2[j] #计算冲突因子k
res = 0
for q in range(len(a)):
res=res+m1[q]*m2[q]
k = k-res
list = []
for s in range(len(a)):
A=m1[s]*m2[s]/(1-k)
list.append(A)
list2 = []
for t in range(len(a)):
P=list[t]/np.sum(list)
list2.append(P)
result = np.array(list2)
return result
首先导入numpy库,其次定义一个融合函数。下面我们显示一个融合例子...
m=np.array([0.6,0.1,0.15,0.15])
n=np.array([0.5,0.3,0.1,0.1])
print(fusion(m,n))
>> [0.83333333 0.08333333 0.04166667 0.04166667] #融合结果
可见该融合结果符合我们的预期。