the scikit-fuzzy documentation...skfuzzy.interp_universe(x, xmf, y) find interpolated universe...
Post on 02-Feb-2021
9 Views
Preview:
TRANSCRIPT
-
The scikit-fuzzy DocumentationRelease 0.3dev
The scikit-image team
December 08, 2016
-
Contents
1 Sections 31.1 SciKit-Fuzzy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2 API Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.3 Pre-built installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821.4 Installation from source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821.5 User Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831.6 How to contribute to skfuzzy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851.7 License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 891.8 General examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
2 Indices and tables 117
Bibliography 119
i
-
ii
-
The scikit-fuzzy Documentation, Release 0.3dev
This SciKit is a fuzzy logic toolbox for SciPy.
Contents 1
http://scikits.appspot.comhttp://www.scipy.org
-
The scikit-fuzzy Documentation, Release 0.3dev
2 Contents
-
CHAPTER 1
Sections
1.1 SciKit-Fuzzy
Scikit-Fuzzy is a collection of fuzzy logic algorithms intended for use in the SciPy Stack, written in the Pythoncomputing language.
This SciKit is developed by the SciPy community. Contributions are welcome! Please join us on the mailing list orour persistent chatroom on Gitter.IM.
1.1.1 Homepage and package documentation
http://pythonhosted.org/scikit-fuzzy/
1.1.2 Source, bugs, and development
http://github.com/scikit-fuzzy/scikit-fuzzy
1.1.3 Gitter.IM
https://gitter.im/scikit-fuzzy/scikit-fuzzy
1.1.4 Mailing List
http://groups.google.com/group/scikit-fuzzy
1.2 API Reference
1.2.1 skfuzzy
scikit-fuzzy (a.k.a. skfuzzy): Fuzzy Logic Toolbox for Python.
This package implements many useful tools and functions for computation and projects involving fuzzy logic, alsoknown as grey logic.
Most of the functionality is actually located in subpackages, but like numpy we bring most of the core functionalityinto the base namespace.
3
http://scipy.orghttp://www.scipy.org/stackspec.htmlhttp://www.python.orghttp://scikits.appspot.comhttp://pythonhosted.org/scikit-fuzzy/http://github.com/scikit-fuzzy/scikit-fuzzyhttps://gitter.im/scikit-fuzzy/scikit-fuzzyhttp://groups.google.com/group/scikit-fuzzy
-
The scikit-fuzzy Documentation, Release 0.3dev
Recommended Use
>>> import skfuzzy as fuzz
skfuzzy.addval(interval1, interval2) Add intervals interval1 and interval2.skfuzzy.arglcut(ms, lambdacut) Determines the subset of indices mi of the elements in an N-point resultant fuzzy membership sequence ms that have a grade of membership >= lambdacut.skfuzzy.cartadd(x, y) Cartesian addition of fuzzy membership vectors using the algebraic method.skfuzzy.cartprod(x, y) Cartesian product of two fuzzy membership vectors.skfuzzy.centroid(x, mfx) Defuzzification using centroid (center of gravity) method.skfuzzy.classic_relation(a, b) Determine the classic relation matrix, R, between two fuzzy sets.skfuzzy.cmeans(data, c, m, error, maxiter[, ...]) Fuzzy c-means clustering algorithm [1].skfuzzy.cmeans_predict(test_data, ...[, ...]) Prediction of new data in given a trained fuzzy c-means framework [1].skfuzzy.continuous_to_discrete(a, b, ...) Converts a continuous-time system to its equivalent discrete-time version.skfuzzy.contrast(arr[, amount, split, normalize]) General contrast booster or diffuser of normalized array-like data.skfuzzy.dcentroid(x, mfx, x0) Defuzzification using a differential centroidal method about x0.skfuzzy.defocus_local_means(im) Defocusing non-normalized image im using local arithmatic mean.skfuzzy.defuzz(x, mfx, mode) Defuzzification of a membership function, returning a defuzzified value of the function at x, using various defuzzification methods.skfuzzy.divval(interval1, interval2) Divide interval2 into interval1, by inversion and multiplication.skfuzzy.dsigmf(x, b1, c1, b2, c2) Difference of two fuzzy sigmoid membership functions.skfuzzy.dsw_add(x, mfx, y, mfy, n) Add two fuzzy variables together using the restricted DSW method [1].skfuzzy.dsw_div(x, mfx, y, mfy, n) Divide one fuzzy variable by another using the restricted DSW method [1].skfuzzy.dsw_mult(x, mfx, y, mfy, n) Multiply two fuzzy variables using the restricted DSW method [1].skfuzzy.dsw_sub(x, mfx, y, mfy, n) Subtract a fuzzy variable from another by the restricted DSW method [1].skfuzzy.fire1d(x[, l1, l2]) 1-D filtering using Fuzzy Inference Ruled by Else-action (FIRE) [1].skfuzzy.fire2d(im[, l1, l2, fuzzyresolution]) 2-D filtering using Fuzzy Inference Ruled by Else-action (FIRE) [1].skfuzzy.fuzzy_add(x, a, y, b) Add fuzzy set a to fuzzy set b.skfuzzy.fuzzy_and(x, mfx, y, mfy) Fuzzy AND operator, a.k.a.skfuzzy.fuzzy_compare(q) Determine the comparison matrix, c, based on the fuzzy pairwise comparison matrix, q, using Shimura’s special relativity formula.skfuzzy.fuzzy_div(x, a, y, b) Divide fuzzy set b into fuzzy set a.skfuzzy.fuzzy_min(x, a, y, b) Find minimum between fuzzy set a fuzzy set b.skfuzzy.fuzzy_mult(x, a, y, b) Multiplies fuzzy set a and fuzzy set b.skfuzzy.fuzzy_not(mfx) Fuzzy NOT operator, a.k.a.skfuzzy.fuzzy_or(x, mfx, y, mfy) Fuzzy OR operator, a.k.a.skfuzzy.fuzzy_similarity(ai, b[, mode]) The fuzzy similarity between set ai and observation set b.skfuzzy.fuzzy_sub(x, a, y, b) Subtract fuzzy set b from fuzzy set a.skfuzzy.gauss2mf(x, mean1, sigma1, mean2, sigma2) Gaussian fuzzy membership function of two combined Gaussians.skfuzzy.gaussmf(x, mean, sigma) Gaussian fuzzy membership function.skfuzzy.gbellmf(x, a, b, c) Generalized Bell function fuzzy membership generator.skfuzzy.inner_product(a, b) Inner product (dot product) of two fuzzy sets.skfuzzy.interp10(x) Utility function which conducts linear interpolation of any rank-1 array.skfuzzy.interp_membership(x, xmf, xx) Find the degree of membership u(xx) for a given value of x = xx.skfuzzy.interp_universe(x, xmf, y) Find interpolated universe value(s) for a given fuzzy membership value.skfuzzy.lambda_cut(ms, lcut) The crisp (binary) lambda-cut set of the membership sequence ms with membership >= lcut.skfuzzy.lambda_cut_boundaries(x, mfx, lambdacut) Find exact boundaries where mfx crosses lambdacut using interpolation.skfuzzy.lambda_cut_series(x, mfx, n) Determine a series of lambda-cuts in a sweep from 0+ to 1.0 in n steps.skfuzzy.maxmin_composition(s, r) The max-min composition t of two fuzzy relation matrices.skfuzzy.maxprod_composition(s, r) The max-product composition t of two fuzzy relation matrices.skfuzzy.modus_ponens(a, b, ap[, c]) Generalized modus ponens deduction to make approximate reasoning in a rules-base system.skfuzzy.multval(interval1, interval2) Multiply intervals interval1 and interval2.skfuzzy.nmse(known, degraded) Computes the percent normalized mean square error (NMSE %) between known and degraded arrays.skfuzzy.outer_product(a, b) Outer product of two fuzzy sets.
Continued on next page
4 Chapter 1. Sections
-
The scikit-fuzzy Documentation, Release 0.3dev
Table 1.1 – continued from previous pageskfuzzy.pad(array, pad_width[, mode]) Pads an array.skfuzzy.partial_dmf(x, mf_name, ...) Calculate the partial derivative of a specified membership function.skfuzzy.piecemf(x, abc) Piecewise linear membership function (particularly used in FIRE filters).skfuzzy.pimf(x, a, b, c, d) Pi-function fuzzy membership generator.skfuzzy.psigmf(x, b1, c1, b2, c2) Product of two sigmoid membership functions.skfuzzy.relation_min(a, b) Determine fuzzy relation matrix R using Mamdani implication for the fuzzy antecedent a and consequent b inputs.skfuzzy.relation_product(a, b) Determine the fuzzy relation matrix, R, using product implication for the fuzzy antecedent a and the fuzzy consequent b.skfuzzy.scaleval(q, interval) Multiply scalar q with interval interval.skfuzzy.sigmf(x, b, c) The basic sigmoid membership function generator.skfuzzy.sigmoid(x, power[, split]) Intensify grayscale values in an array using a sigmoid function.skfuzzy.smf(x, a, b) S-function fuzzy membership generator.skfuzzy.subval(interval1, interval2) Subtract interval interval2 from interval interval1.skfuzzy.test([doctest, verbose]) This would run all unit tests, but nose couldn’t be imported so the test suite can not run.skfuzzy.trapmf(x, abcd) Trapezoidal membership function generator.skfuzzy.trimf(x, abc) Triangular membership function generator.skfuzzy.view_as_blocks(arr_in, block_shape) Block view of the input n-dimensional array (using re-striding).skfuzzy.view_as_windows(arr_in, window_shape) Rolling window view of the input n-dimensional array.skfuzzy.zmf(x, a, b) Z-function fuzzy membership generator.
addval
skfuzzy.addval(interval1, interval2)Add intervals interval1 and interval2.
Parametersinterval1 : 2-element iterable
First interval set.
interval2 : 2-element iterable
Second interval set.
ReturnsZ : 2-element array
Sum of interval1 and interval2, defined as:
Z = interval1 + interval2 = [a + c, b + d]
arglcut
skfuzzy.arglcut(ms, lambdacut)Determines the subset of indices mi of the elements in an N-point resultant fuzzy membership sequence ms thathave a grade of membership >= lambdacut.
Parametersms : 1d array
Fuzzy membership sequence.
lambdacut : float
Value used for lambda cutting.
1.2. API Reference 5
-
The scikit-fuzzy Documentation, Release 0.3dev
Returnslidx : 1d array
Indices corresponding to the lambda-cut subset of ms.
Notes
This is a convenience function for np.nonzero(lambdacut
-
The scikit-fuzzy Documentation, Release 0.3dev
Fuzzy membership function
Returnsu : 1d array, length M
Defuzzified result
See also:
skfuzzy.defuzzify.defuzz, skfuzzy.defuzzify.dcentroid
classic_relation
skfuzzy.classic_relation(a, b)Determine the classic relation matrix, R, between two fuzzy sets.
Parametersa : 1D array or iterable
First fuzzy membership vector, of length M.
b : 1D array or iterable
Second fuzzy membership vector, of length N.
ReturnsR : 2D array
Classic relation matrix between a and b, shape (M, N)
Notes
The classic relation is defined as:
r = [a x b] U [(1 - a) x ones(1, N)],
where x represents a cartesian product and N is len(b).
cmeans
skfuzzy.cmeans(data, c, m, error, maxiter, init=None, seed=None)Fuzzy c-means clustering algorithm [1].
Parametersdata : 2d array, size (S, N)
Data to be clustered. N is the number of data sets; S is the number of features withineach sample vector.
c : int
Desired number of clusters or classes.
m : float
Array exponentiation applied to the membership function u_old at each iteration, whereU_new = u_old ** m.
error : float
Stopping criterion; stop early if the norm of (u[p] - u[p-1]) < error.
maxiter : int
1.2. API Reference 7
-
The scikit-fuzzy Documentation, Release 0.3dev
Maximum number of iterations allowed.
init : 2d array, size (S, N)
Initial fuzzy c-partitioned matrix. If none provided, algorithm is randomly initialized.
seed : int
If provided, sets random seed of init. No effect if init is provided. Mainly for de-bug/testing purposes.
Returnscntr : 2d array, size (S, c)
Cluster centers. Data for each center along each feature provided for every cluster (ofthe c requested clusters).
u : 2d array, (S, N)
Final fuzzy c-partitioned matrix.
u0 : 2d array, (S, N)
Initial guess at fuzzy c-partitioned matrix (either provided init or random guess used ifinit was not provided).
d : 2d array, (S, N)
Final Euclidian distance matrix.
jm : 1d array, length P
Objective function history.
p : int
Number of iterations run.
fpc : float
Final fuzzy partition coefficient.
Notes
The algorithm implemented is from Ross et al. [R11].
Fuzzy C-Means has a known problem with high dimensionality datasets, where the majority of cluster centersare pulled into the overall center of gravity. If you are clustering data with very high dimensionality and en-counter this issue, another clustering method may be required. For more information and the theory behind this,see Winkler et al. [R12].
References
[R11], [R12]
cmeans_predict
skfuzzy.cmeans_predict(test_data, cntr_trained, m, error, maxiter, init=None, seed=None)Prediction of new data in given a trained fuzzy c-means framework [1].
Parameterstest_data : 2d array, size (S, N)
New, independent data set to be predicted based on trained c-means from cmeans. Nis the number of data sets; S is the number of features within each sample vector.
8 Chapter 1. Sections
-
The scikit-fuzzy Documentation, Release 0.3dev
cntr_trained : 2d array, size (S, c)
Location of trained centers from prior training c-means.
m : float
Array exponentiation applied to the membership function u_old at each iteration, whereU_new = u_old ** m.
error : float
Stopping criterion; stop early if the norm of (u[p] - u[p-1]) < error.
maxiter : int
Maximum number of iterations allowed.
init : 2d array, size (S, N)
Initial fuzzy c-partitioned matrix. If none provided, algorithm is randomly initialized.
seed : int
If provided, sets random seed of init. No effect if init is provided. Mainly for de-bug/testing purposes.
Returnsu : 2d array, (S, N)
Final fuzzy c-partitioned matrix.
u0 : 2d array, (S, N)
Initial guess at fuzzy c-partitioned matrix (either provided init or random guess used ifinit was not provided).
d : 2d array, (S, N)
Final Euclidian distance matrix.
jm : 1d array, length P
Objective function history.
p : int
Number of iterations run.
fpc : float
Final fuzzy partition coefficient.
Notes
Ross et al. [R13] did not include a prediction algorithm to go along with fuzzy c-means. This predictionalgorithm works by repeating the clustering with fixed centers, then efficiently finds the fuzzy membership atall points.
References
[R13]
1.2. API Reference 9
-
The scikit-fuzzy Documentation, Release 0.3dev
continuous_to_discrete
skfuzzy.continuous_to_discrete(a, b, sampling_rate)Converts a continuous-time system to its equivalent discrete-time version.
Parametersa : (N, N) array of floats
State variable coefficients describing the continuous-time system.
b : (N,) or (N, 1) array of floats
Constant coefficients describing the continuous-time system. Can be either a rank-1array or a rank-2 array of shape (N, 1).
sampling_rate : float
Rate in Hz at which the continuous-time system is to be sampled.
Returnsphi : (N, N) array of floats
Variable coefficients describing the discrete-time system.
gamma : (N,) or (N, 1) array of floats
Constant coefficients describing the discrete-time system. Shape of this output main-tains the shape passed as b.
contrast
skfuzzy.contrast(arr, amount=0.2, split=0.5, normalize=True)General contrast booster or diffuser of normalized array-like data.
Parametersarr : ndarray
Input array (of floats on range [0, 1] if normalize=False). If values exist outsidethis range, with normalize=True the image will be normalized for calculation.
amount : float or length-2 iterable of floats
Controls the exponential contrast mechanism for values above and below split in I.If positive, the curve provides added contrast; if negative, the curve provides reducedcontrast.
If provided as a lenth-2 iterable of floats, they control the regions (below, above) splitseparately.
split : float
Positive scalar, on range [0, 1], determining the midpoint of the exponential contrast.Default of 0.5 is reasonable for well-exposed images.
normalize : bool, default True
Controls normalization to the range [0, 1].
Returnsfocused : ndarray
Contrast adjusted, normalized, floating-point image on range [0, 1].
10 Chapter 1. Sections
-
The scikit-fuzzy Documentation, Release 0.3dev
See also:
skfuzzy.fuzzymath.sigmoid
Notes
The result of this algorithm is like applying a Curves adjustment in the GIMP or Photoshop.
Algorithm for curves adjustment at a given pixel, x, is given by:
| split * (x/split)^below, 0
-
The scikit-fuzzy Documentation, Release 0.3dev
Notes
Reduces ‘salt & pepper’ noise in a quantized image by taking the arithmatic mean of the 4-connected neighbor-hood. So the new value at X, given the 4-connected neighborhood:
+---+| c |
+---+---+---+| a | X | b |+---+---+---+
| d |+---+
is defined by the relationship:
X = 0.25 * (a + b + c + d)
defuzz
skfuzzy.defuzz(x, mfx, mode)Defuzzification of a membership function, returning a defuzzified value of the function at x, using variousdefuzzification methods.
Parametersx : 1d array or iterable, length N
Independent variable.
mfx : 1d array of iterable, length N
Fuzzy membership function.
mode : string
Controls which defuzzification method will be used. * ‘centroid’: Centroid of area *‘bisector’: bisector of area * ‘mom’ : mean of maximum * ‘som’ : min of maximum *‘lom’ : max of maximum
Returnsu : float or int
Defuzzified result.
See also:
skfuzzy.defuzzify.centroid, skfuzzy.defuzzify.dcentroid
divval
skfuzzy.divval(interval1, interval2)Divide interval2 into interval1, by inversion and multiplication.
Parametersinterval1 : 2-element iterable
First interval set.
interval2 : 2-element iterable
Second interval set.
12 Chapter 1. Sections
-
The scikit-fuzzy Documentation, Release 0.3dev
Returnsz : 2-element array
Interval result of interval1 / interval2.
dsigmf
skfuzzy.dsigmf(x, b1, c1, b2, c2)Difference of two fuzzy sigmoid membership functions.
Parametersx : 1d array
Independent variable.
b1 : float
Midpoint of first sigmoid; f1(b1) = 0.5
c1 : float
Width and sign of first sigmoid.
b2 : float
Midpoint of second sigmoid; f2(b2) = 0.5
c2 : float
Width and sign of second sigmoid.
Returnsy : 1d array
Generated sigmoid values, defined asy = f1 - f2 f1(x) = 1 / (1. + exp[- c1 * (x - b1)]) f2(x) = 1 / (1. + exp[- c2 * (x - b2)])
dsw_add
skfuzzy.dsw_add(x, mfx, y, mfy, n)Add two fuzzy variables together using the restricted DSW method [1].
Parametersx : 1d array
Universe for first fuzzy variable.
mfx : 1d array
Fuzzy membership for universe x. Must be convex.
y : 1d array
Universe for second fuzzy variable.
mfy : 1d array
Fuzzy membership for universe y. Must be convex.
n : int
Number of lambda-cuts to use; a higher number will have greater resolution toward thelimit imposed by input sets x and y.
1.2. API Reference 13
-
The scikit-fuzzy Documentation, Release 0.3dev
Returnsz : 1d array
Output universe variable.
mfz : 1d array
Output fuzzy membership on universe z.
Notes
The Dong, Shah, and Wong (DSW) method requires convex fuzzy membership functions. The dsw_* functionsreturn results similar to Matplotlib’s fuzarith function.
References
[R14]
dsw_div
skfuzzy.dsw_div(x, mfx, y, mfy, n)Divide one fuzzy variable by another using the restricted DSW method [1].
Parametersx : 1d array
Universe for first fuzzy variable.
mfx : 1d array
Fuzzy membership for universe x. Must be convex.
y : 1d array
Universe for second fuzzy variable.
mfy : 1d array
Fuzzy membership for universe y. Must be convex.
n : int
Number of lambda-cuts to use; a higher number will have greater resolution toward thelimit imposed by input sets x and y.
Returnsz : 1d array
Output universe variable.
mfz : 1d array
Output fuzzy membership on universe z.
Notes
The Dong, Shah, and Wong (DSW) method requires convex fuzzy membership functions. The dsw_* functionsreturn results similar to Matplotlib’s fuzarith function.
References
[R15]
14 Chapter 1. Sections
-
The scikit-fuzzy Documentation, Release 0.3dev
dsw_mult
skfuzzy.dsw_mult(x, mfx, y, mfy, n)Multiply two fuzzy variables using the restricted DSW method [1].
Parametersx : 1d array
Universe for first fuzzy variable.
mfx : 1d array
Fuzzy membership for universe x. Must be convex.
y : 1d array
Universe for second fuzzy variable.
mfy : 1d array
Fuzzy membership for universe y. Must be convex.
n : int
Number of lambda-cuts to use; a higher number will have greater resolution toward thelimit imposed by input sets x and y.
Returnsz : 1d array
Output universe variable.
mfz : 1d array
Output fuzzy membership on universe z.
Notes
The Dong, Shah, and Wong (DSW) method requires convex fuzzy membership functions. The dsw_* functionsreturn results similar to Matplotlib’s fuzarith function.
References
[R16]
dsw_sub
skfuzzy.dsw_sub(x, mfx, y, mfy, n)Subtract a fuzzy variable from another by the restricted DSW method [1].
Parametersx : 1d array
Universe for first fuzzy variable.
mfx : 1d array
Fuzzy membership for universe x. Must be convex.
y : 1d array
Universe for second fuzzy variable, which will be subtracted from x.
mfy : 1d array
1.2. API Reference 15
-
The scikit-fuzzy Documentation, Release 0.3dev
Fuzzy membership for universe y. Must be convex.
n : int
Number of lambda-cuts to use; a higher number will have greater resolution toward thelimit imposed by input sets x and y.
Returnsz : 1d array
Output universe variable.
mfz : 1d array
Output fuzzy membership on universe z.
Notes
The Dong, Shah, and Wong (DSW) method requires convex fuzzy membership functions. The dsw_* functionsreturn results similar to Matplotlib’s fuzarith function.
References
[R17]
fire1d
skfuzzy.fire1d(x, l1=0, l2=1)1-D filtering using Fuzzy Inference Ruled by Else-action (FIRE) [1].
FIRE filtering is nonlinear, and is specifically designed to remove impulse (salt and pepper) noise.
Parametersx : 1d array or iterable
Input sequence, filtered range limited by l1 and l2.
l1 : float
Lower input range limit for x.
l2 : float
Upper input range limit for x.
Returnsy : 1d array
FIRE filtered sequence.
Notes
Filtering occurs for l1 < |x| < l2; for |x| < l1 there is no effect.
References
[R18]
16 Chapter 1. Sections
-
The scikit-fuzzy Documentation, Release 0.3dev
fire2d
skfuzzy.fire2d(im, l1=0, l2=255, fuzzyresolution=1)2-D filtering using Fuzzy Inference Ruled by Else-action (FIRE) [1].
FIRE filtering is nonlinear, and is specifically designed to remove impulse (salt and pepper) noise.
ParametersI : 2d array
Input image.
l1 : float
Lower limit of filtering range.
l2 : float
Upper limit of filtering range.
fuzzyresolution : float, default = 1
Resolution of fuzzy input sequence, or spacing between [-l2+1, l2-1]. The default as-sumes an integer input; for floating point images a decimal value should be used ap-proximately equal to the bit depth.
ReturnsJ : 2d array
FIRE filtered image.
Notes
Filtering occurs for l1 < |x| < l2; outside this range the data is unaffected.
References
[R19]
fuzzy_add
skfuzzy.fuzzy_add(x, a, y, b)Add fuzzy set a to fuzzy set b.
Parametersx : 1d array, length N
Universe variable for fuzzy set a.
a : 1d array, length N
Fuzzy set for universe x.
y : 1d array, length M
Universe variable for fuzzy set b.
b : 1d array, length M
Fuzzy set for universe y.
Returnsz : 1d array
Output variable.
1.2. API Reference 17
-
The scikit-fuzzy Documentation, Release 0.3dev
mfz : 1d array
Fuzzy membership set for variable z.
Notes
Uses Zadeh’s Extension Principle as described in Ross, Fuzzy Logic with Engineering Applications (2010), pp.414, Eq. 12.17.
If these results are unexpected and your membership functions are convex, consider trying theskfuzzy.dsw_* functions for fuzzy mathematics using interval arithmetic via the restricted Dong, Shah,and Wong method.
fuzzy_and
skfuzzy.fuzzy_and(x, mfx, y, mfy)Fuzzy AND operator, a.k.a. the intersection of two fuzzy sets.
Parametersx : 1d array
Universe variable for fuzzy membership function mfx.
mfx : 1d array
Fuzzy membership function for universe variable x.
y : 1d array
Universe variable for fuzzy membership function mfy.
mfy : 1d array
Fuzzy membership function for universe variable y.
Returnsz : 1d array
Universe variable for union of the two provided fuzzy sets.
mfz : 1d array
Fuzzy AND (intersection) of mfx and mfy.
fuzzy_compare
skfuzzy.fuzzy_compare(q)Determine the comparison matrix, c, based on the fuzzy pairwise comparison matrix, q, using Shimura’sspecial relativity formula.
Parametersq : 2d array, (N, N)
Fuzzy pairwise comparison matrix.
Returnsc : 2d array, (N, N)
Comparison matrix.
18 Chapter 1. Sections
-
The scikit-fuzzy Documentation, Release 0.3dev
fuzzy_div
skfuzzy.fuzzy_div(x, a, y, b)Divide fuzzy set b into fuzzy set a.
Parametersx : 1d array, length N
Universe variable for fuzzy set a.
a : 1d array, length N
Fuzzy set for universe x.
y : 1d array, length M
Universe variable for fuzzy set b.
b : 1d array, length M
Fuzzy set for universe y.
Returnsz : 1d array
Output variable.
mfz : 1d array
Fuzzy membership set for variable z.
Notes
Uses Zadeh’s Extension Principle from Ross, Fuzzy Logic w/Engineering Applications, (2010), pp.414, Eq.12.17.
If these results are unexpected and your membership functions are convex, consider trying theskfuzzy.dsw_* functions for fuzzy mathematics using interval arithmetic via the restricted Dong, Shah,and Wong method.
fuzzy_min
skfuzzy.fuzzy_min(x, a, y, b)Find minimum between fuzzy set a fuzzy set b.
Parametersx : 1d array, length N
Universe variable for fuzzy set a.
a : 1d array, length N
Fuzzy set for universe x.
y : 1d array, length M
Universe variable for fuzzy set b.
b : 1d array, length M
Fuzzy set for universe y.
Returnsz : 1d array
1.2. API Reference 19
-
The scikit-fuzzy Documentation, Release 0.3dev
Output variable.
mfz : 1d array
Fuzzy membership set for variable z.
Notes
Uses Zadeh’s Extension Principle from Ross, Fuzzy Logic w/Engineering Applications, (2010), pp.414, Eq.12.17.
If these results are unexpected and your membership functions are convex, consider trying theskfuzzy.dsw_* functions for fuzzy mathematics using interval arithmetic via the restricted Dong, Shah,and Wong method.
fuzzy_mult
skfuzzy.fuzzy_mult(x, a, y, b)Multiplies fuzzy set a and fuzzy set b.
Parametersx : 1d array, length N
Universe variable for fuzzy set a.
A : 1d array, length N
Fuzzy set for universe x.
y : 1d array, length M
Universe variable for fuzzy set b.
b : 1d array, length M
Fuzzy set for universe y.
Returnsz : 1d array
Output variable.
mfz : 1d array
Fuzzy membership set for variable z.
Notes
Uses Zadeh’s Extension Principle from Ross, Fuzzy Logic w/Engineering Applications, (2010), pp.414, Eq.12.17.
If these results are unexpected and your membership functions are convex, consider trying theskfuzzy.dsw_* functions for fuzzy mathematics using interval arithmetic via the restricted Dong, Shah,and Wong method.
fuzzy_not
skfuzzy.fuzzy_not(mfx)Fuzzy NOT operator, a.k.a. complement of a fuzzy set.
Parametersmfx : 1d array
20 Chapter 1. Sections
-
The scikit-fuzzy Documentation, Release 0.3dev
Fuzzy membership function.
Returnsmfz : 1d array
Fuzzy NOT (complement) of mfx.
Notes
This operation does not require a universe variable, because the complement is defined for a single set. Theoutput remains defined on the same universe.
fuzzy_or
skfuzzy.fuzzy_or(x, mfx, y, mfy)Fuzzy OR operator, a.k.a. union of two fuzzy sets.
Parametersx : 1d array
Universe variable for fuzzy membership function mfx.
mfx : 1d array
Fuzzy membership function for universe variable x.
y : 1d array
Universe variable for fuzzy membership function mfy.
mfy : 1d array
Fuzzy membership function for universe variable y.
Returnsz : 1d array
Universe variable for intersection of the two provided fuzzy sets.
mfz : 1d array
Fuzzy OR (union) of mfx and mfy.
fuzzy_similarity
skfuzzy.fuzzy_similarity(ai, b, mode=’min’)The fuzzy similarity between set ai and observation set b.
Parametersai : 1d array
Fuzzy membership function of set ai.
b : 1d array
Fuzzy membership function of set b.
mode : string
Controls the method of similarity calculation. * ’min’ : Computed by array minimumoperation. * ’avg’ : Computed by taking the array average.
Returnss : float
1.2. API Reference 21
-
The scikit-fuzzy Documentation, Release 0.3dev
Fuzzy similarity.
fuzzy_sub
skfuzzy.fuzzy_sub(x, a, y, b)Subtract fuzzy set b from fuzzy set a.
Parametersx : 1d array, length N
Universe variable for fuzzy set a.
A : 1d array, length N
Fuzzy set for universe x.
y : 1d array, length M
Universe variable for fuzzy set b.
b : 1d array, length M
Fuzzy set for universe y.
Returnsz : 1d array
Output variable.
mfz : 1d array
Fuzzy membership set for variable z.
Notes
Uses Zadeh’s Extension Principle from Ross, Fuzzy Logic w/Engineering Applications, (2010), pp.414, Eq.12.17.
If these results are unexpected and your membership functions are convex, consider trying theskfuzzy.dsw_* functions for fuzzy mathematics using interval arithmetic via the restricted Dong, Shah,and Wong method.
gauss2mf
skfuzzy.gauss2mf(x, mean1, sigma1, mean2, sigma2)Gaussian fuzzy membership function of two combined Gaussians.
Parametersx : 1d array or iterable
Independent variable.
mean1 : float
Gaussian parameter for center (mean) value of left-side Gaussian. Note mean1
-
The scikit-fuzzy Documentation, Release 0.3dev
Gaussian parameter for center (mean) value of right-side Gaussian. Note mean2 >=mean1 required.
sigma2 : float
Standard deviation of right Gaussian.
Returnsy : 1d array
Membership function with left side up to mean1 defined by the first Gaussian, and theright side above mean2 defined by the second. In the range mean1
-
The scikit-fuzzy Documentation, Release 0.3dev
Notes
Definition of Generalized Bell function is:
y(x) = 1 / (1 + abs([x - c] / a) ** [2 * b])
inner_product
skfuzzy.inner_product(a, b)Inner product (dot product) of two fuzzy sets.
Parametersa : 1d array or iterable
Fuzzy membership function.
b : 1d array or iterable
Fuzzy membership function.
Returnsy : float
Fuzzy inner product value, on range [0, 1]
interp10
skfuzzy.interp10(x)Utility function which conducts linear interpolation of any rank-1 array. Result will have 10x resolution.
Parametersx : 1d array, length N
Input array to be interpolated.
Returnsy : 1d array, length 10 * N + 1
Linearly interpolated output.
interp_membership
skfuzzy.interp_membership(x, xmf, xx)Find the degree of membership u(xx) for a given value of x = xx.
Parametersx : 1d array
Independent discrete variable vector.
xmf : 1d array
Fuzzy membership function for x. Same length as x.
xx : float
Discrete singleton value on universe x.
Returnsxxmf : float
Membership function value at xx, u(xx).
24 Chapter 1. Sections
-
The scikit-fuzzy Documentation, Release 0.3dev
Notes
For use in Fuzzy Logic, where an interpolated discrete membership function u(x) for discrete values of x on theuniverse of x is given. Then, consider a new value x = xx, which does not correspond to any discrete values of x.This function computes the membership value u(xx) corresponding to the value xx using linear interpolation.
interp_universe
skfuzzy.interp_universe(x, xmf, y)Find interpolated universe value(s) for a given fuzzy membership value.
Parametersx : 1d array
Independent discrete variable vector.
xmf : 1d array
Fuzzy membership function for x. Same length as x.
y : float
Specific fuzzy membership value.
Returnsxx : list
List of discrete singleton values on universe x whose membership function value is y,u(xx[i])==y. If there are not points xx[i] such that u(xx[i])==y it returns anempty list.
Notes
For use in Fuzzy Logic, where a membership function level y is given. Consider there is some value (or set ofvalues) xx for which u(xx) == y is true, though xx may not correspond to any discrete values on x. Thisfunction computes the value (or values) of xx such that u(xx) == y using linear interpolation.
lambda_cut
skfuzzy.lambda_cut(ms, lcut)The crisp (binary) lambda-cut set of the membership sequence ms with membership >= lcut.
Parametersms : 1d array
Fuzzy membership set.
lcut : float
Value used for lambda-cut, on range [0, 1.0].
Returnsmlambda : 1d array
Lambda-cut set of ms: ones if ms[i] >= lcut, zeros otherwise.
lambda_cut_boundaries
skfuzzy.lambda_cut_boundaries(x, mfx, lambdacut)Find exact boundaries where mfx crosses lambdacut using interpolation.
1.2. API Reference 25
-
The scikit-fuzzy Documentation, Release 0.3dev
Parametersx : 1d array, length N
Universe variable
mfx : 1d array, length N
Fuzzy membership function
lambdacut : float
Floating point value on range [0, 1].
Returnsboundaries : 1d array
Floating point values of x where mfx crosses lambdacut. Calculated using linear inter-polation.
Notes
The values returned by this function can be thought of as intersections between a hypothetical horizontal lineat lambdacut and the membership function mfx. This function assumes the end values of mfx continue onforever in positive and negative directions. This means there will NOT be crossings found exactly at the boundsof x unless the value of mfx at the boundary is exactly lambdacut.
lambda_cut_series
skfuzzy.lambda_cut_series(x, mfx, n)Determine a series of lambda-cuts in a sweep from 0+ to 1.0 in n steps.
Parametersx : 1d array
Universe function for fuzzy membership function mfx.
mfx : 1d array
Fuzzy membership function for x.
n : int
Number of steps.
Returnsz : 2d array, (n, 3)
Lambda cut intevals.
maxmin_composition
skfuzzy.maxmin_composition(s, r)The max-min composition t of two fuzzy relation matrices.
Parameterss : 2d array, (M, N)
Fuzzy relation matrix #1.
r : 2d array, (N, P)
Fuzzy relation matrix #2.
26 Chapter 1. Sections
-
The scikit-fuzzy Documentation, Release 0.3dev
ReturnsT ; 2d array, (M, P) :
Max-min composition, defined by T = s o r.
maxprod_composition
skfuzzy.maxprod_composition(s, r)The max-product composition t of two fuzzy relation matrices.
Parameterss : 2d array, (M, N)
Fuzzy relation matrix #1.
r : 2d array, (N, P)
Fuzzy relation matrix #2.
Returnst : 2d array, (M, P)
Max-product composition matrix.
modus_ponens
skfuzzy.modus_ponens(a, b, ap, c=None)Generalized modus ponens deduction to make approximate reasoning in a rules-base system.
Parametersa : 1d array
Fuzzy set a on universe x
b : 1d array
Fuzzy set b on universe y
ap : 1d array
New fuzzy fact a’ (a prime, not transpose)
c : 1d array, OPTIONAL
Keyword argument representing fuzzy set c on universe y. Default = None, which willuse np.ones() instead.
ReturnsR : 2d array
Full fuzzy relation.
bp : 1d array
Fuzzy conclusion b’ (b prime)
multval
skfuzzy.multval(interval1, interval2)Multiply intervals interval1 and interval2.
1.2. API Reference 27
-
The scikit-fuzzy Documentation, Release 0.3dev
Parametersinterval1 : 1d array, length 2
First interval.
interval2 : 1d array, length 2
Second interval.
Returnsz : 1d array, length 2
Interval resulting from multiplication of interval1 and interval2.
nmse
skfuzzy.nmse(known, degraded)Computes the percent normalized mean square error (NMSE %) between known and degraded arrays.
Parametersknown : ndarray
Known array of arbitrary size and shape. Must be convertible to float.
degraded : ndarray, same shape as known
Degraded version of known, must have same shape as known.
Returnsnmse : float
Calculated NMSE, as a percentage.
Notes
Usually used to compare a true/original image to a degraded version. For this calculation, which image isprovided as true and which degraded does not matter.
outer_product
skfuzzy.outer_product(a, b)Outer product of two fuzzy sets.
Parametersa : 1d array or iterable
Fuzzy membership function.
b : 1d array or iterable
Fuzzy membership function.
Returnsy : float
Fuzzy outer product value, on range [0, 1]
28 Chapter 1. Sections
-
The scikit-fuzzy Documentation, Release 0.3dev
pad
skfuzzy.pad(array, pad_width, mode=None, **kwargs)Pads an array.
Parametersarray : array_like of rank N
Input array
pad_width : {sequence, array_like, int}
Number of values padded to the edges of each axis. ((before_1, after_1), ... (before_N,after_N)) unique pad widths for each axis. ((before, after),) yields same before and afterpad for each axis. (pad,) or int is a shortcut for before = after = pad width for all axes.
mode : str or function
One of the following string values or a user supplied function.
‘constant’Pads with a constant value.
‘edge’Pads with the edge values of array.
‘linear_ramp’Pads with the linear ramp between end_value and the array edge value.
‘maximum’Pads with the maximum value of all or part of the vector along each axis.
‘mean’Pads with the mean value of all or part of the vector along each axis.
‘median’Pads with the median value of all or part of the vector along each axis.
‘minimum’Pads with the minimum value of all or part of the vector along each axis.
‘reflect’Pads with the reflection of the vector mirrored on the first and last values of the vectoralong each axis.
‘symmetric’Pads with the reflection of the vector mirrored along the edge of the array.
‘wrap’Pads with the wrap of the vector along the axis. The first values are used to pad theend and the end values are used to pad the beginning.
Padding function, see Notes.
stat_length : sequence or int, optional
Used in ‘maximum’, ‘mean’, ‘median’, and ‘minimum’. Number of values at edge ofeach axis used to calculate the statistic value.
((before_1, after_1), ... (before_N, after_N)) unique statistic lengths for each axis.
((before, after),) yields same before and after statistic lengths for each axis.
(stat_length,) or int is a shortcut for before = after = statistic length for all axes.
1.2. API Reference 29
-
The scikit-fuzzy Documentation, Release 0.3dev
Default is None, to use the entire axis.
constant_values : sequence or int, optional
Used in ‘constant’. The values to set the padded values for each axis.
((before_1, after_1), ... (before_N, after_N)) unique pad constants for each axis.
((before, after),) yields same before and after constants for each axis.
(constant,) or int is a shortcut for before = after = constant for all axes.
Default is 0.
end_values : sequence or int, optional
Used in ‘linear_ramp’. The values used for the ending value of the linear_ramp and thatwill form the edge of the padded array.
((before_1, after_1), ... (before_N, after_N)) unique end values for each axis.
((before, after),) yields same before and after end values for each axis.
(constant,) or int is a shortcut for before = after = end value for all axes.
Default is 0.
reflect_type : {‘even’, ‘odd’}, optional
Used in ‘reflect’, and ‘symmetric’. The ‘even’ style is the default with an unalteredreflection around the edge value. For the ‘odd’ style, the extented part of the array iscreated by subtracting the reflected values from two times the edge value.
Returnspad : ndarray
Padded array of rank equal to array with shape increased according to pad_width.
Notes
This function exists in NumPy >= 1.7.0, but is included in scikit-fuzzy for backwards compatibility withearlier versions.
For an array with rank greater than 1, some of the padding of later axes is calculated from padding of previousaxes. This is easiest to think about with a rank 2 array where the corners of the padded array are calculated byusing padded values from the first axis.
The padding function, if used, should return a rank 1 array equal in length to the vector argument with paddedvalues replaced. It has the following signature:
padding_func(vector, iaxis_pad_width, iaxis, **kwargs)
where
vector[ndarray] A rank 1 array already padded with zeros. Padded values are vector[:pad_tuple[0]]and vector[-pad_tuple[1]:].
iaxis_pad_width[tuple] A 2-tuple of ints, iaxis_pad_width[0] represents the number of values padded at thebeginning of vector where iaxis_pad_width[1] represents the number of values padded at theend of vector.
iaxis[int] The axis currently being calculated.
30 Chapter 1. Sections
-
The scikit-fuzzy Documentation, Release 0.3dev
kwargs[misc] Any keyword arguments the function requires.
Examples
>>> a = [1, 2, 3, 4, 5]>>> fuzz.pad(a, (2,3), 'constant', constant_values=(4, 6))array([4, 4, 1, 2, 3, 4, 5, 6, 6, 6])
>>> fuzz.pad(a, (2, 3), 'edge')array([1, 1, 1, 2, 3, 4, 5, 5, 5, 5])
>>> fuzz.pad(a, (2, 3), 'linear_ramp', end_values=(5, -4))array([ 5, 3, 1, 2, 3, 4, 5, 2, -1, -4])
>>> fuzz.pad(a, (2,), 'maximum')array([5, 5, 1, 2, 3, 4, 5, 5, 5])
>>> fuzz.pad(a, (2,), 'mean')array([3, 3, 1, 2, 3, 4, 5, 3, 3])
>>> fuzz.pad(a, (2,), 'median')array([3, 3, 1, 2, 3, 4, 5, 3, 3])
>>> a = [[1, 2], [3, 4]]>>> fuzz.pad(a, ((3, 2), (2, 3)), 'minimum')array([[1, 1, 1, 2, 1, 1, 1],
[1, 1, 1, 2, 1, 1, 1],[1, 1, 1, 2, 1, 1, 1],[1, 1, 1, 2, 1, 1, 1],[3, 3, 3, 4, 3, 3, 3],[1, 1, 1, 2, 1, 1, 1],[1, 1, 1, 2, 1, 1, 1]])
>>> a = [1, 2, 3, 4, 5]>>> fuzz.pad(a, (2, 3), 'reflect')array([3, 2, 1, 2, 3, 4, 5, 4, 3, 2])
>>> fuzz.pad(a, (2, 3), 'reflect', reflect_type='odd')array([-1, 0, 1, 2, 3, 4, 5, 6, 7, 8])
>>> fuzz.pad(a, (2, 3), 'symmetric')array([2, 1, 1, 2, 3, 4, 5, 5, 4, 3])
>>> fuzz.pad(a, (2, 3), 'symmetric', reflect_type='odd')array([0, 1, 1, 2, 3, 4, 5, 5, 6, 7])
>>> fuzz.pad(a, (2, 3), 'wrap')array([4, 5, 1, 2, 3, 4, 5, 1, 2, 3])
>>> def padwithtens(vector, pad_width, iaxis, kwargs):... vector[:pad_width[0]] = 10... vector[-pad_width[1]:] = 10... return vector
>>> a = np.arange(6)>>> a = a.reshape((2, 3))
1.2. API Reference 31
-
The scikit-fuzzy Documentation, Release 0.3dev
>>> fuzz.pad(a, 2, padwithtens)array([[10, 10, 10, 10, 10, 10, 10],
[10, 10, 10, 10, 10, 10, 10],[10, 10, 0, 1, 2, 10, 10],[10, 10, 3, 4, 5, 10, 10],[10, 10, 10, 10, 10, 10, 10],[10, 10, 10, 10, 10, 10, 10]])
partial_dmf
skfuzzy.partial_dmf(x, mf_name, mf_parameter_dict, partial_parameter)Calculate the partial derivative of a specified membership function.
Parametersx : float
input variable.
mf_name : string
Membership function name as a string. The following are supported: * ’gaussmf’: parameters ’sigma’ or ’mean’ * ’gbellmf’ : parameters ’a’, ’b’, or ’c’ *’sigmf’ : parameters ’b’ or ’c’
mf_parameter_dict : dict
A dictionary of {param : key-value, ...} pairs for a particular membershipfunction as defined above.
partial_parameter : string
Name of the parameter against which we take the partial derivative.
Returnsd : float
Partial derivative of the membership function with respect to the chosen parameter, atinput point x.
Notes
Partial derivatives of fuzzy membership functions are only meaningful for continuous functions. Triangular,trapezoidal designs have no partial derivatives to calculate. The following
piecemf
skfuzzy.piecemf(x, abc)Piecewise linear membership function (particularly used in FIRE filters).
Parametersx : 1d array
Independent variable vector.
abc : 1d array, length 3
Defines the piecewise function. Important: if abc = [a, b, c] then a
-
The scikit-fuzzy Documentation, Release 0.3dev
Piecewise fuzzy membership function for x.
Notes
Piecewise definition:y = 0, min(x)
-
The scikit-fuzzy Documentation, Release 0.3dev
b2 : float
Offset or bias for the second sigmoid. This is the center value of the sigmoid, where itequals 1/2.
c2 : float
Controls ‘width’ of the second sigmoidal region about b2 (magnitude), and also whichside of the function is open (sign). A positive value of c2 means the left side approacheszero while the right side approaches one; a negative value of c2 means the opposite.
Returnsy : 1d array
Generated sigmoid values, defined as
y = f1(x) * f2(x)
f1(x) = 1 / (1. + exp[- c1 * (x - b1)]) f2(x) = 1 / (1. + exp[- c2 * (x - b2)])
Notes
For a smoothed rect-like function, c2 < 0 < c1. For its inverse (zero in middle, one at edges) c1 < 0 < c2.
relation_min
skfuzzy.relation_min(a, b)Determine fuzzy relation matrix R using Mamdani implication for the fuzzy antecedent a and consequent binputs.
Parametersa : 1d array
Fuzzy antecedent variable of length M.
b : 1d array
Fuzzy consequent variable of length N.
ReturnsR : 2d array
Fuzzy relation between a and b, of shape (M, N).
relation_product
skfuzzy.relation_product(a, b)Determine the fuzzy relation matrix, R, using product implication for the fuzzy antecedent a and the fuzzyconsequent b.
Parametersa : 1d array
Fuzzy antecedent variable of length M.
b : 1d array
Fuzzy consequent variable of length N.
ReturnsR : 2d array
Fuzzy relation between a and b, of shape (M, N).
34 Chapter 1. Sections
-
The scikit-fuzzy Documentation, Release 0.3dev
scaleval
skfuzzy.scaleval(q, interval)Multiply scalar q with interval interval.
Parametersq : float
Scalar to multiply interval with.
interval : 1d array, length 2
Interval. Must have exactly two elements.
Returnsz : 1d array, length 2
New interval; z = q x interval.
sigmf
skfuzzy.sigmf(x, b, c)The basic sigmoid membership function generator.
Parametersx : 1d array
Data vector for independent variable.
b : float
Offset or bias. This is the center value of the sigmoid, where it equals 1/2.
c : float
Controls ‘width’ of the sigmoidal region about b (magnitude); also which side of thefunction is open (sign). A positive value of a means the left side approaches 0.0 whilethe right side approaches 1.; a negative value of c means the opposite.
Returnsy : 1d array
Generated sigmoid values, defined as y = 1 / (1. + exp[- c * (x - b)])
Notes
These are the same values, provided separately and in the opposite order compared to the publicly availableMathWorks’ Fuzzy Logic Toolbox documentation. Pay close attention to above docstring!
sigmoid
skfuzzy.sigmoid(x, power, split=0.5)Intensify grayscale values in an array using a sigmoid function.
Parametersx : ndarray
Input vector or image array. Should be pre-normalized to range [0, 1]
p : float
1.2. API Reference 35
-
The scikit-fuzzy Documentation, Release 0.3dev
Power of the intensification (p > 0). Experiment with small, decimal values and increaseas necessary.
split : float
Threshold for intensification. Values above split will be intensified, while valuesbelow split will be deintensified. Note range for split is (0, 1). Default of 0.5 isreasonable for many well-exposed images.
Returnsy : ndarray, same size as x
Output vector or image with contrast adjusted.
See also:
skfuzzy.fuzzymath.contrast
Notes
The sigmoid used herein is defined as:
y = 1 / (1 + exp(- exp(- power * (x-split))))
smf
skfuzzy.smf(x, a, b)S-function fuzzy membership generator.
Parametersx : 1d array
Independent variable.
a : float
‘foot’, where the function begins to climb from zero.
b : float
‘ceiling’, where the function levels off at 1.
Returnsy : 1d array
S-function.
Notes
Named such because of its S-like shape.
subval
skfuzzy.subval(interval1, interval2)Subtract interval interval2 from interval interval1.
Parametersinterval1 : 1d array, length 2
First interval.
interval2 : 1d array, length 2
36 Chapter 1. Sections
-
The scikit-fuzzy Documentation, Release 0.3dev
Second interval.
ReturnsZ : 1d array, length 2
Resultant subtracted interval.
test
skfuzzy.test(doctest=False, verbose=False)This would run all unit tests, but nose couldn’t be imported so the test suite can not run.
trapmf
skfuzzy.trapmf(x, abcd)Trapezoidal membership function generator.
Parametersx : 1d array
Independent variable.
abcd : 1d array, length 4
Four-element vector. Ensure a
-
The scikit-fuzzy Documentation, Release 0.3dev
The n-dimensional input array.
block_shape: tuple :
The shape of the block. Each dimension must divide evenly into the correspondingdimensions of arr_in.
Returnsarr_out: ndarray :
Block view of the input array.
Examples
>>> import numpy as np>>> from skfuzzy import view_as_blocks>>> A = np.arange(4*4).reshape(4,4)>>> Aarray([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],[ 8, 9, 10, 11],[12, 13, 14, 15]])
>>> B = view_as_blocks(A, block_shape=(2, 2))>>> B[0, 0]array([[0, 1],
[4, 5]])>>> B[0, 1]array([[2, 3],
[6, 7]])>>> B[1, 0, 1, 1]13
>>> A = np.arange(4*4*6).reshape(4,4,6)>>> Aarray([[[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11],[12, 13, 14, 15, 16, 17],[18, 19, 20, 21, 22, 23]],
[[24, 25, 26, 27, 28, 29],[30, 31, 32, 33, 34, 35],[36, 37, 38, 39, 40, 41],[42, 43, 44, 45, 46, 47]],
[[48, 49, 50, 51, 52, 53],[54, 55, 56, 57, 58, 59],[60, 61, 62, 63, 64, 65],[66, 67, 68, 69, 70, 71]],
[[72, 73, 74, 75, 76, 77],[78, 79, 80, 81, 82, 83],[84, 85, 86, 87, 88, 89],[90, 91, 92, 93, 94, 95]]])
>>> B = view_as_blocks(A, block_shape=(1, 2, 2))>>> B.shape(4, 2, 3, 1, 2, 2)>>> B[2:, 0, 2]array([[[[52, 53],
[58, 59]]],[[[76, 77],[82, 83]]]])
38 Chapter 1. Sections
-
The scikit-fuzzy Documentation, Release 0.3dev
view_as_windows
skfuzzy.view_as_windows(arr_in, window_shape)Rolling window view of the input n-dimensional array.
Windows are overlapping views of the input array, with adjacent windows shifted by a single row or column (oran index of a higher dimension).
Parametersarr_in: ndarray :
The n-dimensional input array.
window_shape: tuple :
Defines the shape of the elementary n-dimensional orthotope (better know as hyperrect-angle [R20]) of the rolling window view.
Returnsarr_out: ndarray :
(rolling) window view of the input array.
Notes
One should be very careful with rolling views when it comes to memory usage. Indeed, although a ‘view’has the same memory footprint as its base array, the actual array that emerges when this ‘view’ is used in acomputation is generally a (much) larger array than the original, especially for 2-dimensional arrays and above.
For example, let us consider a 3 dimensional array of size (100, 100, 100) of float64. This array takes about8*100**3 Bytes for storage which is just 8 MB. If one decides to build a rolling view on this array with awindow of (3, 3, 3) the hypothetical size of the rolling view (if one was to reshape the view for example) wouldbe 8*(100-3+1)**3*3**3 which is about 203 MB! The scaling becomes even worse as the dimension of theinput array becomes larger.
References
[R20]
Examples
>>> import numpy as np>>> from skfuzzy import view_as_windows>>> A = np.arange(4*4).reshape(4,4)>>> Aarray([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],[ 8, 9, 10, 11],[12, 13, 14, 15]])
>>> window_shape = (2, 2)>>> B = view_as_windows(A, window_shape)>>> B[0, 0]array([[0, 1],
[4, 5]])>>> B[0, 1]array([[1, 2],
[5, 6]])
>>> A = np.arange(10)>>> Aarray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
1.2. API Reference 39
-
The scikit-fuzzy Documentation, Release 0.3dev
>>> window_shape = (3,)>>> B = view_as_windows(A, window_shape)>>> B.shape(8, 3)>>> Barray([[0, 1, 2],
[1, 2, 3],[2, 3, 4],[3, 4, 5],[4, 5, 6],[5, 6, 7],[6, 7, 8],[7, 8, 9]])
>>> A = np.arange(5*4).reshape(5, 4)>>> Aarray([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],[ 8, 9, 10, 11],[12, 13, 14, 15],[16, 17, 18, 19]])
>>> window_shape = (4, 3)>>> B = view_as_windows(A, window_shape)>>> B.shape(2, 2, 4, 3)>>> Barray([[[[ 0, 1, 2],
[ 4, 5, 6],[ 8, 9, 10],[12, 13, 14]],
[[ 1, 2, 3],[ 5, 6, 7],[ 9, 10, 11],[13, 14, 15]]],
[[[ 4, 5, 6],[ 8, 9, 10],[12, 13, 14],[16, 17, 18]],
[[ 5, 6, 7],[ 9, 10, 11],[13, 14, 15],[17, 18, 19]]]])
zmf
skfuzzy.zmf(x, a, b)Z-function fuzzy membership generator.
Parametersx : 1d array
Independent variable.
a : float
‘ceiling’, where the function begins falling from 1.
b : float
40 Chapter 1. Sections
-
The scikit-fuzzy Documentation, Release 0.3dev
‘foot’, where the function reattains zero.
Returnsy : 1d array
Z-function.
Notes
Named such because of its Z-like shape.
1.2.2 Module: cluster
Fuzzy clustering subpackage, containing fuzzy c-means clustering algorithm. This can be either supervised or unsu-pervised, depending if U_init kwarg is used (if guesses are provided, it is supervised).
skfuzzy.cluster.cmeans(data, c, m, error, ...) Fuzzy c-means clustering algorithm [1].skfuzzy.cluster.cmeans_predict(test_data, ...) Prediction of new data in given a trained fuzzy c-means framework [1].
cmeans
skfuzzy.cluster.cmeans(data, c, m, error, maxiter, init=None, seed=None)Fuzzy c-means clustering algorithm [1].
Parametersdata : 2d array, size (S, N)
Data to be clustered. N is the number of data sets; S is the number of features withineach sample vector.
c : int
Desired number of clusters or classes.
m : float
Array exponentiation applied to the membership function u_old at each iteration, whereU_new = u_old ** m.
error : float
Stopping criterion; stop early if the norm of (u[p] - u[p-1]) < error.
maxiter : int
Maximum number of iterations allowed.
init : 2d array, size (S, N)
Initial fuzzy c-partitioned matrix. If none provided, algorithm is randomly initialized.
seed : int
If provided, sets random seed of init. No effect if init is provided. Mainly for de-bug/testing purposes.
Returnscntr : 2d array, size (S, c)
Cluster centers. Data for each center along each feature provided for every cluster (ofthe c requested clusters).
1.2. API Reference 41
-
The scikit-fuzzy Documentation, Release 0.3dev
u : 2d array, (S, N)
Final fuzzy c-partitioned matrix.
u0 : 2d array, (S, N)
Initial guess at fuzzy c-partitioned matrix (either provided init or random guess used ifinit was not provided).
d : 2d array, (S, N)
Final Euclidian distance matrix.
jm : 1d array, length P
Objective function history.
p : int
Number of iterations run.
fpc : float
Final fuzzy partition coefficient.
Notes
The algorithm implemented is from Ross et al. [R24].
Fuzzy C-Means has a known problem with high dimensionality datasets, where the majority of cluster centersare pulled into the overall center of gravity. If you are clustering data with very high dimensionality and en-counter this issue, another clustering method may be required. For more information and the theory behind this,see Winkler et al. [R25].
References
[R24], [R25]
cmeans_predict
skfuzzy.cluster.cmeans_predict(test_data, cntr_trained, m, error, maxiter, init=None,seed=None)
Prediction of new data in given a trained fuzzy c-means framework [1].
Parameterstest_data : 2d array, size (S, N)
New, independent data set to be predicted based on trained c-means from cmeans. Nis the number of data sets; S is the number of features within each sample vector.
cntr_trained : 2d array, size (S, c)
Location of trained centers from prior training c-means.
m : float
Array exponentiation applied to the membership function u_old at each iteration, whereU_new = u_old ** m.
error : float
Stopping criterion; stop early if the norm of (u[p] - u[p-1]) < error.
maxiter : int
Maximum number of iterations allowed.
42 Chapter 1. Sections
-
The scikit-fuzzy Documentation, Release 0.3dev
init : 2d array, size (S, N)
Initial fuzzy c-partitioned matrix. If none provided, algorithm is randomly initialized.
seed : int
If provided, sets random seed of init. No effect if init is provided. Mainly for de-bug/testing purposes.
Returnsu : 2d array, (S, N)
Final fuzzy c-partitioned matrix.
u0 : 2d array, (S, N)
Initial guess at fuzzy c-partitioned matrix (either provided init or random guess used ifinit was not provided).
d : 2d array, (S, N)
Final Euclidian distance matrix.
jm : 1d array, length P
Objective function history.
p : int
Number of iterations run.
fpc : float
Final fuzzy partition coefficient.
Notes
Ross et al. [R26] did not include a prediction algorithm to go along with fuzzy c-means. This predictionalgorithm works by repeating the clustering with fixed centers, then efficiently finds the fuzzy membership atall points.
References
[R26]
1.2.3 Module: control
skfuzzy.control subpackage, providing a high-level API for fuzzy system design.
skfuzzy.control.Antecedent(universe, label) Antecedent (input/sensor) variable for a fuzzy control system.skfuzzy.control.Consequent(universe, label) Consequent (output/control) variable for a fuzzy control system.skfuzzy.control.ControlSystem([rules]) Base class to contain a Fuzzy Control System.skfuzzy.control.ControlSystemSimulation(...) Calculate results from a ControlSystem.skfuzzy.control.Rule([antecedent, ...]) Rule in a fuzzy control system, connecting antecedent(s) to consequent(s).
Antecedent
class skfuzzy.control.Antecedent(universe, label)Bases: skfuzzy.control.fuzzyvariable.FuzzyVariable
Antecedent (input/sensor) variable for a fuzzy control system.
1.2. API Reference 43
-
The scikit-fuzzy Documentation, Release 0.3dev
Parametersuniverse : array-like
Universe variable. Must be 1-dimensional and convertible to a NumPy array.
label : string
Name of the universe variable.
__init__(universe, label)
graphNetworkX graph which connects this Antecedent with its Term(s).
input
Consequent
class skfuzzy.control.Consequent(universe, label)Bases: skfuzzy.control.fuzzyvariable.FuzzyVariable
Consequent (output/control) variable for a fuzzy control system.
Parametersuniverse : array-like
Universe variable. Must be 1-dimensional and convertible to a NumPy array.
label : string
Name of the universe variable.
Notes
The label string chosen must be unique among Antecedents and Consequents in the ControlSystem.
__init__(universe, label)
graphNetworkX graph which connects this Consequent with its Term(s).
output
ControlSystem
class skfuzzy.control.ControlSystem(rules=None)Bases: object
Base class to contain a Fuzzy Control System.
Parametersrules : Rule or iterable of Rules, optional
If provided, the system is initialized and populated with a set of fuzzy Rules (seeskfuzzy.control.Rule). This is optional. If omitted the ControlSystem can bebuilt interactively.
44 Chapter 1. Sections
http://docs.python.org/2.7/library/functions.html#object
-
The scikit-fuzzy Documentation, Release 0.3dev
__init__(rules=None)
addrule(rule)Add a new rule to the system.
antecedentsGenerator which yields Antecedents in the system.
consequentsGenerator which yields Consequents in the system.
fuzzy_variablesGenerator which yields fuzzy variables in the system.
This includes Antecedents, Consequents, and Intermediaries.
rulesGenerator which yields Rules in the system in calculation order.
view()View a representation of the system NetworkX graph.
ControlSystemSimulation
class skfuzzy.control.ControlSystemSimulation(control_system, clip_to_bounds=True,cache=True, flush_after_run=1000)
Bases: object
Calculate results from a ControlSystem.
Parameterscontrol_system : ControlSystem
A fuzzy ControlSystem object.
clip_to_bounds : bool, optional
Controls if input values should be clipped to the consequent universe range. Default isTrue.
cache : bool, optional
Controls if results should be stored for reference in fuzzy variable objects, allowing fastlookup for repeated runs of .compute(). Unless you are heavily memory constrainedleave this True (default).
flush_after_run : int, optional
Clears cached results after this many repeated, unique simulations. The default of 1000is appropriate for most hardware, but for small embedded systems this can be loweredas appropriate. Higher memory systems may see better performance with a higher limit.
__init__(control_system, clip_to_bounds=True, cache=True, flush_after_run=1000)
compute()Compute the fuzzy system.
compute_rule(rule)Implement rule according to Mamdani inference.
1.2. API Reference 45
http://docs.python.org/2.7/library/functions.html#object
-
The scikit-fuzzy Documentation, Release 0.3dev
The three step method consists of::
•Aggregation
•Activation
•Accumulation
inputs(input_dict)Convenience method to accept multiple inputs to antecedents.
Parametersinput_dict : dict
Contains key:value pairs where the key is the label for a connected Antecedent and thevalue is the input.
print_state()Print info about the inner workings of a ControlSystemSimulation.
Rule
class skfuzzy.control.Rule(antecedent=None, consequent=None, label=None)Bases: object
Rule in a fuzzy control system, connecting antecedent(s) to consequent(s).
Parametersantecedent : Antecedent term(s) or logical combination thereof, optional
Antecedent terms serving as inputs to this rule. Multiple terms may be combined usingoperators | (OR), & (AND), ~ (NOT), and parentheticals to group terms.
consequent : Consequent term(s) or logical combination thereof, optional
Consequent terms serving as outputs from this rule. Multiple terms may be combinedusing operators | (OR), & (AND), ~ (NOT), and parentheticals to group terms.
label : string, optional
Label to reference the meaning of this rule. Optional, but recommended. If provided,the label must be unique among rules in any particular ControlSystem.
Notes
Fuzzy Rules can be completely built on instantatiation or one can begin with an empty Rule and constructinteractively by setting .antecedent, .consequent, and .label variables.
__init__(antecedent=None, consequent=None, label=None)Rule in a fuzzy system, connecting antecedent(s) to consequent(s).
Parametersantecedent : Antecedent term(s) or combination thereof, optional
Antecedent terms serving as inputs to this rule. Multiple terms may be combined usingoperators | (OR), & (AND), ~ (NOT), and parentheticals to group terms.
consequent : Consequent term(s) or combination thereof, optional
Consequent terms serving as outputs from this rule. Multiple terms may be combinedusing operators | (OR), & (AND), ~ (NOT), and parentheticals to group terms.
label : string, optional
46 Chapter 1. Sections
http://docs.python.org/2.7/library/functions.html#object
-
The scikit-fuzzy Documentation, Release 0.3dev
Label to reference the meaning of this rule. Optional, but recommended.
aggregate_firing
antecedentAntecedent clause, consisting of multiple term(s) in this fuzzy Rule.
antecedent_termsUtility function to list all Antecedent terms present in this clause.
consequentConsequent clause, consisting of multiple term(s) in this fuzzy Rule.
graphNetworkX directed graph representing this Rule’s connectivity.
view()Show a visual representation of this Rule.
1.2.4 Module: defuzzify
skfuzzy.defuzzify subpackage, containing various defuzzification algorithms.
skfuzzy.defuzzify.arglcut(ms, lambdacut) Determines the subset of indices mi of the elements in an N-point resultant fuzzy membership sequence ms that have a grade of membership >= lambdacut.skfuzzy.defuzzify.centroid(x, mfx) Defuzzification using centroid (center of gravity) method.skfuzzy.defuzzify.dcentroid(x, mfx, x0) Defuzzification using a differential centroidal method about x0.skfuzzy.defuzzify.defuzz(x, mfx, mode) Defuzzification of a membership function, returning a defuzzified value of the function at x, using various defuzzification methods.skfuzzy.defuzzify.lambda_cut(ms, lcut) The crisp (binary) lambda-cut set of the membership sequence ms with membership >= lcut.skfuzzy.defuzzify.lambda_cut_boundaries(x, ...) Find exact boundaries where mfx crosses lambdacut using interpolation.skfuzzy.defuzzify.lambda_cut_series(x, mfx, n) Determine a series of lambda-cuts in a sweep from 0+ to 1.0 in n steps.
arglcut
skfuzzy.defuzzify.arglcut(ms, lambdacut)Determines the subset of indices mi of the elements in an N-point resultant fuzzy membership sequence ms thathave a grade of membership >= lambdacut.
Parametersms : 1d array
Fuzzy membership sequence.
lambdacut : float
Value used for lambda cutting.
Returnslidx : 1d array
Indices corresponding to the lambda-cut subset of ms.
Notes
This is a convenience function for np.nonzero(lambdacut
-
The scikit-fuzzy Documentation, Release 0.3dev
centroid
skfuzzy.defuzzify.centroid(x, mfx)Defuzzification using centroid (center of gravity) method.
Parametersx : 1d array, length M
Independent variable
mfx : 1d array, length M
Fuzzy membership function
Returnsu : 1d array, length M
Defuzzified result
See also:
skfuzzy.defuzzify.defuzz, skfuzzy.defuzzify.dcentroid
dcentroid
skfuzzy.defuzzify.dcentroid(x, mfx, x0)Defuzzification using a differential centroidal method about x0.
Parametersx : 1d array or iterable
Independent variable.
mfx : 1d array or iterable
Fuzzy membership function.
x0 : float
Central value to calculate differential centroid about.
Returnsu : 1d array
Defuzzified result.
See also:
skfuzzy.defuzzify.defuzz, skfuzzy.defuzzify.centroid
defuzz
skfuzzy.defuzzify.defuzz(x, mfx, mode)Defuzzification of a membership function, returning a defuzzified value of the function at x, using variousdefuzzification methods.
Parametersx : 1d array or iterable, length N
Independent variable.
mfx : 1d array of iterable, length N
48 Chapter 1. Sections
-
The scikit-fuzzy Documentation, Release 0.3dev
Fuzzy membership function.
mode : string
Controls which defuzzification method will be used. * ‘centroid’: Centroid of area *‘bisector’: bisector of area * ‘mom’ : mean of maximum * ‘som’ : min of maximum *‘lom’ : max of maximum
Returnsu : float or int
Defuzzified result.
See also:
skfuzzy.defuzzify.centroid, skfuzzy.defuzzify.dcentroid
lambda_cut
skfuzzy.defuzzify.lambda_cut(ms, lcut)The crisp (binary) lambda-cut set of the membership sequence ms with membership >= lcut.
Parametersms : 1d array
Fuzzy membership set.
lcut : float
Value used for lambda-cut, on range [0, 1.0].
Returnsmlambda : 1d array
Lambda-cut set of ms: ones if ms[i] >= lcut, zeros otherwise.
lambda_cut_boundaries
skfuzzy.defuzzify.lambda_cut_boundaries(x, mfx, lambdacut)Find exact boundaries where mfx crosses lambdacut using interpolation.
Parametersx : 1d array, length N
Universe variable
mfx : 1d array, length N
Fuzzy membership function
lambdacut : float
Floating point value on range [0, 1].
Returnsboundaries : 1d array
Floating point values of x where mfx crosses lambdacut. Calculated using linear inter-polation.
1.2. API Reference 49
-
The scikit-fuzzy Documentation, Release 0.3dev
Notes
The values returned by this function can be thought of as intersections between a hypothetical horizontal lineat lambdacut and the membership function mfx. This function assumes the end values of mfx continue onforever in positive and negative directions. This means there will NOT be crossings found exactly at the boundsof x unless the value of mfx at the boundary is exactly lambdacut.
lambda_cut_series
skfuzzy.defuzzify.lambda_cut_series(x, mfx, n)Determine a series of lambda-cuts in a sweep from 0+ to 1.0 in n steps.
Parametersx : 1d array
Universe function for fuzzy membership function mfx.
mfx : 1d array
Fuzzy membership function for x.
n : int
Number of steps.
Returnsz : 2d array, (n, 3)
Lambda cut intevals.
1.2.5 Module: filters
skfuzzy.filters[Subpackage for filtering data, e.g. with Fuzzy Inference by] Else-action (FIRE) filters to denoise 1d or 2d data.
skfuzzy.filters.fire1d(x[, l1, l2]) 1-D filtering using Fuzzy Inference Ruled by Else-action (FIRE) [1].skfuzzy.filters.fire2d(im[, l1, l2, ...]) 2-D filtering using Fuzzy Inference Ruled by Else-action (FIRE) [1].
fire1d
skfuzzy.filters.fire1d(x, l1=0, l2=1)1-D filtering using Fuzzy Inference Ruled by Else-action (FIRE) [1].
FIRE filtering is nonlinear, and is specifically designed to remove impulse (salt and pepper) noise.
Parametersx : 1d array or iterable
Input sequence, filtered range limited by l1 and l2.
l1 : float
Lower input range limit for x.
l2 : float
Upper input range limit for x.
Returnsy : 1d array
50 Chapter 1. Sections
-
The scikit-fuzzy Documentation, Release 0.3dev
FIRE filtered sequence.
Notes
Filtering occurs for l1 < |x| < l2; for |x| < l1 there is no effect.
References
[R29]
fire2d
skfuzzy.filters.fire2d(im, l1=0, l2=255, fuzzyresolution=1)2-D filtering using Fuzzy Inference Ruled by Else-action (FIRE) [1].
FIRE filtering is nonlinear, and is specifically designed to remove impulse (salt and pepper) noise.
ParametersI : 2d array
Input image.
l1 : float
Lower limit of filtering range.
l2 : float
Upper limit of filtering range.
fuzzyresolution : float, default = 1
Resolution of fuzzy input sequence, or spacing between [-l2+1, l2-1]. The default as-sumes an integer input; for floating point images a decimal value should be used ap-proximately equal to the bit depth.
ReturnsJ : 2d array
FIRE filtered image.
Notes
Filtering occurs for l1 < |x| < l2; outside this range the data is unaffected.
References
[R30]
1.2.6 Module: fuzzymath
Fuzzy mathematics subpackage, containing essential mathematical operations for fuzzy sets and universe variables.
skfuzzy.fuzzymath.cartadd(x, y) Cartesian addition of fuzzy membership vectors using the algebraic method.skfuzzy.fuzzymath.cartprod(x, y) Cartesian product of two fuzzy membership vectors.skfuzzy.fuzzymath.classic_relation(a, b) Determine the classic relation matrix, R, between two fuzzy sets.skfuzzy.fuzzymath.continuous_to_discrete(a, ...) Converts a continuous-time system to its equivalent discrete-time version.skfuzzy.fuzzymath.contrast(arr[, amount, ...]) General contrast booster or diffuser of normalized array-like data.skfuzzy.fuzzymath.fuzzy_add(x, a, y, b) Add fuzzy set a to fuzzy set b.
Continued on next page
1.2. API Reference 51
-
The scikit-fuzzy Documentation, Release 0.3dev
Table 1.6 – continued from previous pageskfuzzy.fuzzymath.fuzzy_and(x, mfx, y, mfy) Fuzzy AND operator, a.k.a.skfuzzy.fuzzymath.fuzzy_compare(q) Determine the comparison matrix, c, based on the fuzzy pairwise comparison matrix, q, using Shimura’s special relativity formula.skfuzzy.fuzzymath.fuzzy_div(x, a, y, b) Divide fuzzy set b into fuzzy set a.skfuzzy.fuzzymath.fuzzy_min(x, a, y, b) Find minimum between fuzzy set a fuzzy set b.skfuzzy.fuzzymath.fuzzy_mult(x, a, y, b) Multiplies fuzzy set a and fuzzy set b.skfuzzy.fuzzymath.fuzzy_not(mfx) Fuzzy NOT operator, a.k.a.skfuzzy.fuzzymath.fuzzy_or(x, mfx, y, mfy) Fuzzy OR operator, a.k.a.skfuzzy.fuzzymath.fuzzy_similarity(ai, b[, mode]) The fuzzy similarity between set ai and observation set b.skfuzzy.fuzzymath.fuzzy_sub(x, a, y, b) Subtract fuzzy set b from fuzzy set a.skfuzzy.fuzzymath.inner_product(a, b) Inner product (dot product) of two fuzzy sets.skfuzzy.fuzzymath.interp10(x) Utility function which conducts linear interpolation of any rank-1 array.skfuzzy.fuzzymath.interp_membership(x, xmf, xx) Find the degree of membership u(xx) for a given value of x = xx.skfuzzy.fuzzymath.interp_universe(x, xmf, y) Find interpolated universe value(s) for a given fuzzy membership value.skfuzzy.fuzzymath.maxmin_composition(s, r) The max-min composition t of two fuzzy relation matrices.skfuzzy.fuzzymath.maxprod_composition(s, r) The max-product composition t of two fuzzy relation matrices.skfuzzy.fuzzymath.modus_ponens(a, b, ap[, c]) Generalized modus ponens deduction to make approximate reasoning in a rules-base system.skfuzzy.fuzzymath.outer_product(a, b) Outer product of two fuzzy sets.skfuzzy.fuzzymath.partial_dmf(x, mf_name, ...) Calculate the partial derivative of a specified membership function.skfuzzy.fuzzymath.relation_min(a, b) Determine fuzzy relation matrix R using Mamdani implication for the fuzzy antecedent a and consequent b inputs.skfuzzy.fuzzymath.relation_product(a, b) Determine the fuzzy relation matrix, R, using product implication for the fuzzy antecedent a and the fuzzy consequent b.skfuzzy.fuzzymath.sigmoid(x, power[, split]) Intensify grayscale values in an array using a sigmoid function.
cartadd
skfuzzy.fuzzymath.cartadd(x, y)Cartesian addition of fuzzy membership vectors using the algebraic method.
Parametersx : 1D array or iterable
First fuzzy membership vector, of length M.
y : 1D array or iterable
Second fuzzy membership vector, of length N.
Returnsz : 2D array
Cartesian addition of x and y, of shape (M, N).
cartprod
skfuzzy.fuzzymath.cartprod(x, y)Cartesian product of two fuzzy membership vectors. Uses min().
Parametersx : 1D array or iterable
First fuzzy membership vector, of length M.
y : 1D array or iterable
Second fuzzy membership vector, of length N.
52 Chapter 1. Sections
-
The scikit-fuzzy Documentation, Release 0.3dev
Returnsz : 2D array
Cartesian product of x and y, of shape (M, N).
classic_relation
skfuzzy.fuzzymath.classic_relation(a, b)Determine the classic relation matrix, R, between two fuzzy sets.
Parametersa : 1D array or iterable
First fuzzy membership vector, of length M.
b : 1D array or iterable
Second fuzzy membership vector, of length N.
ReturnsR : 2D array
Classic relation matrix between a and b, shape (M, N)
Notes
The classic relation is defined as:
r = [a x b] U [(1 - a) x ones(1, N)],
where x represents a cartesian product and N is len(b).
continuous_to_discrete
skfuzzy.fuzzymath.continuous_to_discrete(a, b, sampling_rate)Converts a continuous-time system to its equivalent discrete-time version.
Parametersa : (N, N) array of floats
State variable coefficients describing the continuous-time system.
b : (N,) or (N, 1) array of floats
Constant coefficients describing the continuous-time system. Can be either a rank-1array or a rank-2 array of shape (N, 1).
sampling_rate : float
Rate in Hz at which the continuous-time system is to be sampled.
Returnsphi : (N, N) array of floats
Variable coefficients describing the discrete-time system.
gamma : (N,) or (N, 1) array of floats
Constant coefficients describing the discrete-time system. Shape of this output main-tains the shape passed as b.
1.2. API Reference 53
-
The scikit-fuzzy Documentation, Release 0.3dev
contrast
skfuzzy.fuzzymath.contrast(arr, amount=0.2, split=0.5, normalize=True)General contrast booster or diffuser of normalized array-like data.
Parametersarr : ndarray
Input array (of floats on range [0, 1] if normalize=False). If values exist outsidethis range, with normalize=True the image will be normalized for calculation.
amount : float or length-2 iterable of floats
Controls the exponential contrast mechanism for values above and below split in I.If positive, the curve provides added contrast; if negative, the curve provides reducedcontrast.
If provided as a lenth-2 iterable of floats, they control the regions (below, above) splitseparately.
split : float
Positive scalar, on range [0, 1], determining the midpoint of the exponential contrast.Default of 0.5 is reasonable for well-exposed images.
normalize : bool, default True
Controls normalization to the range [0, 1].
Returnsfocused : ndarray
Contrast adjusted, normalized, floating-point image on range [0, 1].
See also:
skfuzzy.fuzzymath.sigmoid
Notes
The result of this algorithm is like applying a Curves adjustment in the GIMP or Photoshop.
Algorithm for curves adjustment at a given pixel, x, is given by:
| split * (x/split)^below, 0
-
The scikit-fuzzy Documentation, Release 0.3dev
Universe variable for fuzzy set b.
b : 1d array, length M
Fuzzy set for universe y.
Returnsz : 1d array
Output variable.
mfz : 1d array
Fuzzy membership set for variable z.
Notes
Uses Zadeh’s Extension Principle as described in Ross, Fuzzy Logic with Engineering Applications (2010), pp.414, Eq. 12.17.
If these results are unexpected and your membership functions are convex, consider trying theskfuzzy.dsw_* functions for fuzzy mathematics using interval arithmetic via the restricted Dong, Shah,and Wong method.
fuzzy_and
skfuzzy.fuzzymath.fuzzy_and(x, mfx, y, mfy)Fuzzy AND operator, a.k.a. the intersection of two fuzzy sets.
Parametersx : 1d array
Universe variable for fuzzy membership function mfx.
mfx : 1d array
Fuzzy membership function for universe variable x.
y : 1d array
Universe variable for fuzzy membership function mfy.
mfy : 1d array
Fuzzy membership function for universe variable y.
Returnsz : 1d array
Universe variable for union of the two provided fuzzy sets.
mfz : 1d array
Fuzzy AND (intersection) of mfx and mfy.
fuzzy_compare
skfuzzy.fuzzymath.fuzzy_compare(q)Determine the comparison matrix, c, based on the fuzzy pairwise comparison matrix, q, using Shimura’sspecial relativity formula.
Parametersq : 2d array, (N, N)
1.2. API Reference 55
-
The scikit-fuzzy Documentation, Release 0.3dev
Fuzzy pairwise comparison matrix.
Returnsc : 2d array, (N, N)
Comparison matrix.
fuzzy_div
skfuzzy.fuzzymath.fuzzy_div(x, a, y, b)Divide fuzzy set b into fuzzy set a.
Parametersx : 1d array, length N
Universe variable for fuzzy set a.
a : 1d array, length N
Fuzzy set for universe x.
y : 1d array, length M
Universe variable for fuzzy set b.
b : 1d array, length M
Fuzzy set for universe y.
Returnsz : 1d array
Output variable.
mfz : 1d array
Fuzzy membership set for variable z.
Notes
Uses Zadeh’s Extension Principle from Ross, Fuzzy Logic w/Engineering Applications, (2010), pp.414, Eq.12.17.
If these results are unexpected and your membership functions are convex, consider trying theskfuzzy.dsw_* functions for fuzzy mathematics using interval arithmetic via the restricted Dong, Shah,and Wong method.
fuzzy_min
skfuzzy.fuzzymath.fuzzy_min(x, a, y, b)Find minimum between fuzzy set a fuzzy set b.
Parametersx : 1d array, length N
Universe variable for fuzzy set a.
a : 1d array, length N
Fuzzy set for universe x.
y : 1d array, length M
Universe variable for fuzzy set b.
56 Chapter 1. Sections
-
The scikit-fuzzy Documentation, Release 0.3dev
b : 1d array, length M
Fuzzy set for universe y.
Returnsz : 1d array
Output variable.
mfz : 1d array
Fuzzy membership set for variable z.
Notes
Uses Zadeh’s Extension Principle from Ross, Fuzzy Logic w/Engineering Applications, (2010), pp.414, Eq.12.17.
If these results are unexpected and your membership functions are convex, consider trying theskfuzzy.dsw_* functions for fuzzy mathematics using interval arithmetic via the restricted Dong, Shah,and Wong method.
fuzzy_mult
skfuzzy.fuzzymath.fuzzy_mult(x, a, y, b)Multiplies fuzzy set a and fuzzy set b.
Parametersx : 1d array, length N
Universe variable for fuzzy set a.
A : 1d array, length N
Fuzzy set for universe x.
y : 1d array, length M
Universe variable for fuzzy set b.
b : 1d array, length M
Fuzzy set for universe y.
Returnsz : 1d array
Output variable.
mfz : 1d array
Fuzzy membership set for variable z.
Notes
Uses Zadeh’s Extension Principle from Ross, Fuzzy Logic w/Engineering Applications, (2010), pp.414, Eq.12.17.
If these results are unexpected and your membership functions are convex, consider trying theskfuzzy.dsw_* functions for fuzzy mathematics using interval arithmetic via the restricted Dong, Shah,and Wong method.
1.2. API Reference 57
-
The scikit-fuzzy Documentation, Release 0.3dev
fuzzy_not
skfuzzy.fuzzymath.fuzzy_not(mfx)Fuzzy NOT operator, a.k.a. complement of a fuzzy set.
Parametersmfx : 1d array
Fuzzy membership function.
Returnsmfz : 1d array
Fuzzy NOT (complement) of mfx.
Notes
This operation does not require a universe variable, because the complement is defined for a single set. Theoutput remains defined on the same universe.
fuzzy_or
skfuzzy.fuzzymath.fuzzy_or(x, mfx, y, mfy)Fuzzy OR operator, a.k.a. union of two fuzzy sets.
Parametersx : 1d array
Universe variable for fuzzy membership function mfx.
mfx : 1d array
Fuzzy membership function for universe variable x.
y : 1d array
Universe variable for fuzzy membership function mfy.
mfy : 1d array
Fuzzy membership function for universe variable y.
Returnsz : 1d array
Universe variable for intersection of the two provided fuzzy sets.
mfz : 1d array
Fuzzy OR (union) of mfx and mfy.
fuzzy_similarity
skfuzzy.fuzzymath.fuzzy_similarity(ai, b, mode=’min’)The fuzzy similarity between set ai and observation set b.
Parametersai : 1d array
Fuzzy membership function of set ai.
b : 1d array
58 Chapter 1. Sections
-
The scikit-fuzzy Documentation, Release 0.3dev
Fuzzy membership function of set b.
mode : string
Controls the method of similarity calculation. * ’min’ : Computed by array minimumoperation. * ’avg’ : Computed by taking the array average.
Returnss : float
Fuzzy similarity.
fuzzy_sub
skfuzzy.fuzzymath.fuzzy_sub(x, a, y, b)Subtract fuzzy set b from fuzzy set a.
Parametersx : 1d array, length N
Universe variable for fuzzy set a.
A : 1d array, length N
Fuzzy set for universe x.
y : 1d array, length M
Universe variable for fuzzy set b.
b : 1d array, length M
Fuzzy set for universe y.
Returnsz : 1d array
Output variable.
mfz : 1d array
Fuzzy membership set for variable z.
Notes
Uses Zadeh’s Extension Principle from Ross, Fuzzy Logic w/Engineering Applications, (2010), pp.414, Eq.12.17.
If these results are unexpected and your membership functions are convex, consider trying theskfuzzy.dsw_* functions for fuzzy mathematics using interval arithmetic via the restricted Dong, Shah,and Wong method.
inner_product
skfuzzy.fuzzymath.inner_product(a, b)Inner product (dot product) of two fuzzy sets.
Parametersa : 1d array or iterable
Fuzzy membership function.
b : 1d array or iterable
1.2. API Reference 59
-
The scikit-fuzzy Documentation, Release 0.3dev
Fuzzy membership function.
Returnsy : float
Fuzzy inner product value, on range [0, 1]
interp10
skfuzzy.fuzzymath.interp10(x)Utility function which conducts linear interpolation of any rank-1 array. Result will have 10x resolution.
Parametersx : 1d array, length N
Input array to be interpolated.
Returnsy : 1d array, length 10 * N + 1
Linearly interpolated output.
interp_
top related