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

import numpy as np


def py_intersect(string_1, string_2):
    """
    :param string_1: 字符串
    :param string_2: 字符串
    :return: 两字符串的交集
    """
    result = ''
    for char in string_1:
        if char in string_2 and char not in result:
            result += char
    return result


def dempster(mp1, mp2, P):
    """
    :param mp1: 证据源1,numpy数组,存储信度
    :param mp2: 证据源2,numpy数组,存储信度
    :param P: 辨识框架
    :return: 返回融合信度和冲突因子
    """
    l = len(P)  # 幂集长度
    mp = np.zeros((1, l), 'float64')  # 初始化最终结果mp
    k_matrix = np.zeros((l, l))  # 冲突因子乘子
    for k in range(l):
        tmp = P[k]
        f_matrix = np.zeros((l, l))  # 融合乘子
        for i in range(l):
            for j in range(l):
                tmp_ij = py_intersect(P[i], P[j])  # 有无交集
                if not tmp_ij:  # 若空集
                    k_matrix[i][j] = 1
                if tmp_ij == tmp:  # 若交集等于P[k]
                    f_matrix[i][j] = 1
        mp[0][k] = sum(sum(np.dot(mp1.T, mp2) * f_matrix))
    k = sum(sum(np.dot(mp1.T, mp2) * k_matrix))
    mp = mp / (1 - k)
    return mp, k


m1 = np.array([[0.3243, 0, 0, 0, 0, 0, 0.6857]])
m2 = np.array([[0, 0, 0.4696, 0, 0, 0.3054, 0.2250]])

P = ['S', 'E', 'V', 'SE', 'SV', 'EV', 'SEV']

mp, k = dempster(m1, m2, P)
print(f'融合后信度为{mp}')
print(f'冲突因子k = {k}')

  • 10
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 25
    评论
### 回答1: D-S证据理论是一种推理方法,可以用来处理不确定性问题。它是由Dempster和Shafer在20世纪60年代提出的。这种理论假设存在一个全集合,我们不能确定其中的任何一个子集的真实值,但是我们可以凭借一些证据对它们进行推断。 Python是一个广泛使用的编程语言,具有强大的数据分析和科学计算功能。因此,D-S证据理论Python中得到了广泛应用。常用的Python库包括numpy、scipy和sklearn等。这些库提供了一些实现D-S证据理论所需的函数和工具。 在Python中,可以使用numpy库来实现D-S证据的计算。它提供了一些函数来计算证据、假设和置信度等指标。该库还提供了一些有用的工具来将数据转换为相应的D-S证据形式。 Sklearn库也提供了一些有用的函数,例如DecisionTreeClassifier,可以用来进行决策树分类,在这个过程中也使用了D-S证据理论。 总之,D-S证据理论Python中具有重要的应用价值。它可以用来处理不确定性问题,例如在医学、金融、自然语言处理等领域中。相信在未来,随着Python的不断发展和完善,D-S证据理论Python中的应用会越来越广泛。 ### 回答2: D-S证据理论是指通过对一组不完全可信的证据进行合并,从而得出一个相对可靠的结论的一种方法。这种理论可以被应用于各种领域,包括数据挖掘、决策分析等。Python是一种广泛使用的编程语言,它具有简单易学、易于扩展等优点,因此被大量应用于数据科学领域。在Python中,可以使用第三方库pyds实现D-S证据理论。 使用pyds库可以轻松地将不完全可信的证据进行合并,并得出一个相对可靠的结论。例如,可以使用pyds库来对一组商品进行评估,从而得出哪些商品值得购买,哪些商品不值得购买。具体操作步骤为:先建立一个证据集合,将各种商品的特征作为证据,然后使用D-S证据理论对这些证据进行合并,得出每个商品的可靠性得分。最后,可以按照得分由高到低的顺序,来决定哪些商品值得购买。 总之,使用D-S证据理论Python编程语言可以轻松地处理不完全可信的证据,在数据分析中有很大的应用潜力。 ### 回答3: D-S证据理论是一种基于证据的推理方法,它是由美国科学家Dempster和Shafer于20世纪60年代提出的。D-S证据理论常用于处理不确定性的问题,它将所有可能的事件分为两个集合:一是目标事件,而另外一个是目标事件的补集,将各种证据证据函数表示出来,通过这些证据函数的组合来推断目标事件的可能性。这种方法具有更广泛的适用性和更好的处理效果。 Python是一个广受欢迎的编程语言,被广泛应用于各种领域,例如数据科学、机器学习、深度学习等。在处理D-S证据理论时,我们可以使用Python编写相关的算法。利用Python语言的简单性和灵活性,我们可以轻松地实现证据函数和似然函数,并通过它们的组合得到目标事件的可能性。同时,Python还提供了许多强大的库,例如NumPy和SciPy,用于科学计算和数据处理,这些库有效地提高了我们处理证据的效率和准确性。 总之,D-S证据理论Python语言的结合为我们解决不确定性问题提供了一种有效的方法。我们可以使用Python编写程序来实现证据的处理和分析,从而更好地理解和应用D-S证据理论
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值