D-S证据融合理论python代码

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]  #融合结果

可见该融合结果符合我们的预期。

你可能感兴趣的:(python,算法)