当前位置:   article > 正文

D-S证据融合(Dempster组合规则)——Python3代码实现_ds证据理论 python

ds证据理论 python
  1. import numpy as np
  2. def py_intersect(string_1, string_2):
  3. """
  4. :param string_1: 字符串
  5. :param string_2: 字符串
  6. :return: 两字符串的交集
  7. """
  8. result = ''
  9. for char in string_1:
  10. if char in string_2 and char not in result:
  11. result += char
  12. return result
  13. def dempster(mp1, mp2, P):
  14. """
  15. :param mp1: 证据源1,numpy数组,存储信度
  16. :param mp2: 证据源2,numpy数组,存储信度
  17. :param P: 辨识框架
  18. :return: 返回融合信度和冲突因子
  19. """
  20. l = len(P) # 幂集长度
  21. mp = np.zeros((1, l), 'float64') # 初始化最终结果mp
  22. k_matrix = np.zeros((l, l)) # 冲突因子乘子
  23. for k in range(l):
  24. tmp = P[k]
  25. f_matrix = np.zeros((l, l)) # 融合乘子
  26. for i in range(l):
  27. for j in range(l):
  28. tmp_ij = py_intersect(P[i], P[j]) # 有无交集
  29. if not tmp_ij: # 若空集
  30. k_matrix[i][j] = 1
  31. if tmp_ij == tmp: # 若交集等于P[k]
  32. f_matrix[i][j] = 1
  33. mp[0][k] = sum(sum(np.dot(mp1.T, mp2) * f_matrix))
  34. k = sum(sum(np.dot(mp1.T, mp2) * k_matrix))
  35. mp = mp / (1 - k)
  36. return mp, k
  37. m1 = np.array([[0.3243, 0, 0, 0, 0, 0, 0.6857]])
  38. m2 = np.array([[0, 0, 0.4696, 0, 0, 0.3054, 0.2250]])
  39. P = ['S', 'E', 'V', 'SE', 'SV', 'EV', 'SEV']
  40. mp, k = dempster(m1, m2, P)
  41. print(f'融合后信度为{mp}')
  42. print(f'冲突因子k = {k}')
'
运行

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/829639
推荐阅读
相关标签
  

闽ICP备14008679号