FuzzyLogic library
Authors: V.S. Luferov
Fuzzy Variables
Fuzzy Rules
subtract clusteting
(Data for su/examples/subclust.m.csv)[/examples/subclust.m.csv]
import numpy as np
from pprint import pprint
from fuzzy_logic.clustering import SubtractClustering
import csv
data = np.zeros([3, 600])
with open('m.csv') as f:
spamreader = csv.reader(f, delimiter=',')
for i, row in enumerate(spamreader):
data[0, i] = float(row[0])
data[1, i] = float(row[1])
data[2, i] = float(row[2])
sc = SubtractClustering(data, np.array([0.6] * 3))
pprint(sc())
Mamdani Fuzzy System
from pprint import pprint
from fuzzy_logic.terms import Term
from fuzzy_logic.variables import FuzzyVariable
from fuzzy_logic.mamdani_fs import MamdaniFuzzySystem
from fuzzy_logic.mf import TriangularMF
t1 = Term('mf1', TriangularMF(0, 0, 0.5))
t2 = Term('mf2', TriangularMF(0, 0.5, 1))
t3 = Term('mf3', TriangularMF(0.5, 1, 1))
input1: FuzzyVariable = FuzzyVariable('input1', 0, 1, t1, t2, t3)
input2: FuzzyVariable = FuzzyVariable(
'input2', 0, 1,
Term('mf1', TriangularMF(0, 0, 0.5)),
Term('mf2', TriangularMF(0, 0.5, 1)),
Term('mf3', TriangularMF(0.5, 1, 1))
)
output = FuzzyVariable(
'output', 0, 1,
Term('mf1', TriangularMF(0, 0, 0.5)),
Term('mf2', TriangularMF(0, 0.5, 1)),
Term('mf3', TriangularMF(0.5, 1, 1))
)
mf: MamdaniFuzzySystem = MamdaniFuzzySystem([input1, input2], [output])
mf.rules.append(mf.parse_rule('if (input1 is mf1) and (input2 is mf1) then (output is mf1)'))
mf.rules.append(mf.parse_rule('if (input1 is mf2) and (input2 is mf2) then (output is mf2)'))
result = mf.calculate({input1: 0.45, input2: 0.45})
pprint(result)
Sugeno Fuzzy System
from pprint import pprint
from fuzzy_logic.terms import Term
from fuzzy_logic.variables import FuzzyVariable, SugenoVariable, LinearSugenoFunction
from fuzzy_logic.sugeno_fs import SugenoFuzzySystem
from fuzzy_logic.mf import TriangularMF
t1: Term = Term('mf1', TriangularMF(0, 0, 0.5))
t2: Term = Term('mf2', TriangularMF(0, 0.5, 1))
t3: Term = Term('mf3', TriangularMF(0.5, 1, 1))
input1: FuzzyVariable = FuzzyVariable('input1', 0, 1, t1, t2, t3)
input2: FuzzyVariable = FuzzyVariable(
'input2', 0, 1,
Term('mf1', TriangularMF(0, 0, 0.5)),
Term('mf2', TriangularMF(0, 0.5, 1)),
Term('mf3', TriangularMF(0.5, 1, 1))
)
output: SugenoVariable = SugenoVariable(
'output',
LinearSugenoFunction('mf1', {input1: 0.1, input2: 0.3}, 0.5),
LinearSugenoFunction('mf2', {input1: 0.4, input2: 0.2}, 0.7)
)
mf: SugenoFuzzySystem = SugenoFuzzySystem([input1, input2], [output])
mf.rules.append(mf.parse_rule('if (input1 is mf1) and (input2 is mf1) then (output is mf1)'))
mf.rules.append(mf.parse_rule('if (input1 is mf2) and (input2 is mf2) then (output is mf2)'))
result = mf.calculate({input1: 0.45, input2: 0.45})
pprint(result)
Anfis
import numpy as np
from pprint import pprint
from fuzzy_logic.anfis import Anfis
x: np.ndarray = np.array([
[.1, .3, .5, .7, .9],
[.1, .2, .4, .6, .8]
])
y: np.ndarray = np.array([.01, .06, .2, .42, .72])
anfis: Anfis = Anfis(x, y, .5)
anfis.train()
pprint(f'{anfis.calculate([.2, .3])} == {.2 * .3}')
Metadata
Release files for fuzzy-logic-toolbox 1.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| fuzzy_logic_toolbox-1.0.2.tar.gz | 17.6 kB | Without provenance | Details for fuzzy_logic_toolbox-1.0.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| fuzzy_logic_toolbox-1.0.2-py3-none-any.whl | Python 3 | none | any | Details for fuzzy_logic_toolbox-1.0.2-py3-none-any.whl |
Total release size: 41.1 kB
Release files / fuzzy_logic_toolbox-1.0.2.tar.gz
| Download URL | fuzzy_logic_toolbox-1.0.2.tar.gz |
|---|---|
| Size | 17.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
33be3161910c4fed60f714677b88a42ff6c9445211ee5b3523d235b0b1148a19
|
|
BLAKE2b-256 checksum How to use checksums |
8fd65258d7b9696c68519751c85ed294aaee008402f73b454dd206743bffa47b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.4
|
Release files / fuzzy_logic_toolbox-1.0.2-py3-none-any.whl
| Download URL | fuzzy_logic_toolbox-1.0.2-py3-none-any.whl |
|---|---|
| Size | 23.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b09ebead3a103036a69b8189b0f0e7940fda1f211533f1314c1b3bffe7681efe
|
|
BLAKE2b-256 checksum How to use checksums |
5ae907dc8c06467aac05130afe1752b8c6bca35e886c609f05d89699cebd4890
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.4
|
Security for fuzzy-logic-toolbox 1.0.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.