Skip to main content

A Python package for simple and efficient implementation of Evidential Reasoning (ER) methods.

Project description

ERTool

ERTool is a Python package designed for simple and efficient implementation of Evidential Reasoning (ER) methods. It aims to provide an intuitive and flexible approach for integrating ER processes, particularly suitable for data analysis and decision support systems.

Features

  • Easy-to-use implementation of Evidential Reasoning.
  • Efficient in handling complex ER tasks.
  • Flexible interface suitable for various application scenarios.

Installation

You can install ERTool directly from PyPI using pip:

pip install ertool

Using Instruction

er_algorithm

ertool.er.er_algorithm(W, DBF, numOfEvidence, numOfProposition)

er_algorithm() can implement the Evidential Reasoning (ER) algorithm.

Input Variables

  • W: A one-dimensional array of floats. It represents the weights of each piece of evidence. These weights are used in the algorithm to adjust the influence of each evidence.
  • DBF: A two-dimensional array of floats. It stands for "Degrees of Belief" and is one of the main inputs to the algorithm, used to represent the initial belief degree of each proposition supported by each evidence.
  • numOfEvidence: An integer. It indicates the number of evidence to be combined. In the DBF array, this typically corresponds to the number of rows.
  • numOfProposition: An integer. It indicates the number of propositions or evidential grades. In the DBF array, this typically corresponds to the number of columns.

Output Values

  • B Array: Upon completion of the algorithm, the B array is updated with the final calculation results. It reflects the degree of belief of each proposition or evidential grades for the object being assessed after combining all availble evidence. The pre-Numofproposition values in the B represent the belief degree of each proposition after evidence fusion. The last value of the B represents the belief degree of the global uncertainty.
  • False (Boolean): It returns True if the algorithm successfully executes and completes all computations. If any error is encountered during execution (e.g., division by zero), it returns False.

dempster_shafer

ertool.er.dempster_shafer(DBF, numOfEvidence, numOfProposition)

dempster_shafer() can implement the original Dempster-Shafer evidence theory.

Input Variables

  • DBF: A two-dimensional array of floats. It stands for "Degrees of Belief" and is one of the main inputs to the algorithm, used to represent the initial belief degree of each proposition supported by each evidence. The pre-Numofproposition values in the B represent the belief degree of each proposition after evidence fusion. The last value of the B represents the belief degree of the global uncertainty.
  • numOfEvidence: An integer. It indicates the number of evidence to be combined. In the DBF array, this typically corresponds to the number of rows.
  • numOfProposition: An integer. It indicates the number of propositions or evidential grades. In the DBF array, this typically corresponds to the number of columns.

Output Values

  • B Array: Upon completion of the algorithm, the B array is updated with the final calculation results. It reflects the degree of belief of each proposition or evidential grades for the object being assessed after combining all availble evidence.
  • False (Boolean): It returns True if the algorithm successfully executes and completes all computations. If any error is encountered during execution (e.g., division by zero), it returns False.

show_er_result

ertool.er.show_er_result(B, P = None)

er.show_er_result() can visualize the result of evidential reasoning algorithm.

Input Variables

  • B: The ER result of belief degree.
  • P: The name array of propositions.

Quick Start

Here is a basic usage example of ERTool.

Consider a medical scenario. There are three medical experts (weights 10, 8, and 5). For one patient, the three experts rated the different likelihood of the diagnosis of cold, common pneumonia, COVID-19, and other diseases. As shown in the table.

Experts & Diseases Expert 1 Expert 2 Expert 3
Cold 90% 0 0
Common Pneumonia 0 90% 0
COVID-19 0 0 90%
Other Diseases 10% 10% 10%

In this case, the numOfEvidence is 3 (the number of experts) and the numOfProposition is 4 (cold, common pneumonia, COVID-19, and other diseases).

The W array is the weights array of every expert and the ERTool package can normalize them automatically.

We can write the code using the ERTool package:

from ertool import er
import numpy as np

W = np.array([10,8,5])
DBF = np.array([[0.9, 0, 0, 0.1], 
                [0, 0.9, 0, 0.1], 
                [0, 0, 0.9, 0.1]])

# List or numpy array are both OK.
# W = [10,8,5]
# DBF = [[0.9, 0, 0, 0.1], 
#        [0, 0.9, 0, 0.1], 
#        [0, 0, 0.9, 0.1]]

numOfEvidence = 3
numOfProposition = 4
B = er.er_algorithm(W, DBF, numOfEvidence, numOfProposition)
print("The result:", B)

P = ['Cold', 'Common Pneumonia', 'COVID-19', 'Other Disease']
er.show_er_result(B, P)

With the code, we can calculate the probability that the patient will be diagnosed with each disease using evidential reasoning.

B: [0.43591353 0.30223338 0.15741322 0.10443986 0.]

pFeiJgK.png According to the result, we can know that combining the opinions of the three experts, the probability of the patient being diagnosed with cold, common pneumonia, COVID-19 and uncertain are 0.43591353, 0.30223338, 0.15741322 and 0.10443986. The global uncertainty is the last value of B, and it is zero in this example.

Contributing

Contributions to ERTool are welcome. Please contact us for how to contribute to the project.

Contact

This project is supported by the National Institute of Health Data Science, Peking University. For any questions or suggestions, please contact us at tyshipku@gmail.com.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ERTool-0.2.1.tar.gz (5.8 kB view details)

Uploaded Source

Built Distribution

ERTool-0.2.1-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

Details for the file ERTool-0.2.1.tar.gz.

File metadata

  • Download URL: ERTool-0.2.1.tar.gz
  • Upload date:
  • Size: 5.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.6

File hashes

Hashes for ERTool-0.2.1.tar.gz
Algorithm Hash digest
SHA256 5bc7f8f3ed33ff5abd60eb9fd8837da647a47fc099a6b8e14ecf80ace12e67cd
MD5 04afafc34c864a4e7456b4355070f681
BLAKE2b-256 e12511fece529ad51c5d4e71d66211d3c2e751fb9edf5ebf77e8cc07d0a042e2

See more details on using hashes here.

File details

Details for the file ERTool-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: ERTool-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 6.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.6

File hashes

Hashes for ERTool-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1f1f54cd8e522cea9654ade50a36f129808fa149a2a31409e8a67bedce8f6753
MD5 6a377ce7abb8ae8473e745b39bea7ff7
BLAKE2b-256 646162975c63e2d1a24d664eab0454bc40e7f210d03f2cf64b0bcadd041b5316

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page