This function creates a set of fuzzy attributes from crisp data. Factors, numeric vectors,
matrix or data frame columns are transformed into a set of fuzzy attributes, i.e. columns with
membership degrees. Unlike
lcut, for transformation is not used the linguistic
linguistic approach, but partitioning using regular shapes of the fuzzy sets (such as triangle,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Data to be transformed: a vector, matrix, or data frame. Non-numeric data are allowed.
This argument determines the break-points of the positions of the fuzzy sets. It should be an ordered vector of numbers such that the i-th index specifies the beginning, (i+1)-th the center, and (i+2)-th the ending of the i-th fuzzy set.
I.e. the minimum number of breaks-points is 3; n-2 elementary fuzzy sets would be created for n break-points.
If considering an i-th fuzzy set
The resulting fuzzy sets would be named after the original data by adding dot (".") and a number i of fuzzy set.
For non-numeric data, this argument is ignored. For
A name to be added as a suffix to the created fuzzy attribute names. This parameter
can be used only if
The type of fuzzy sets to create Currently,
This argument determines whether to derive additional fuzzy sets by merging the elementary
fuzzy sets (whose position is determined with the
The names of the derived (merged) fuzzy sets is derived from the names of the original elementary fuzzy sets by concatenating them with the "|" (pipe) separator.
Whether the processing should be run in parallel or not. Parallelization is
implemented using the
Other parameters to some methods.
The aim of this function is to transform numeric data into a set of fuzzy attributes. The result is in the form of the object of class "fsets", i.e. a numeric matrix whose columns represent fuzzy sets (fuzzy attributes) with values being the membership degrees.
The function behaves diffently to the type of input
x is a factor or a logical vector (or other non-numeric data) then for each distinct
value of an input, a fuzzy set is created, and data would be transformed into crisp membership
degrees 0 or 1 only.
x is a numeric vector then fuzzy sets are created accordingly to break-points
specified in the
breaks argument with 1st, 2nd and 3rd break-point specifying the first
fuzzy set, 2nd, 3rd and 4th break-point specifying th second fuzzy set etc. The shape of the
fuzzy set is determined by the
type argument that may be equal either to a string
'raisedcos' or it could be a function that computes the membership
degrees for itself (see
raisedcos functions for
details). Additionally, super-sets of these elementary sets may be created by specifying the
merge argument. Values of this argument specify how many consecutive fuzzy sets should be
combined (by using the Lukasiewic's t-conorm) to produce super-sets - see the description of
If a matrix (resp. data frame) is provided to this function instead of single vector, all columns are
processed separately as described above and the result is combined with the
The function sets up properly the
specs properties of
An object of class "fsets" is returned, which is a numeric matrix with columns representing the
fuzzy attributes. Each source columm
x argument corresponds to multiple columns in the resulting matrix.
Columns have names that indicate the name of the source as well as a index i of fuzzy set(s)
– see the description of arguments
The resulting object would also have set the
properties with the former being created from original column names (if
x is a matrix or
data frame) or the
name argument (if
x is a numeric vector). The
specs incidency matrix would be created to reflect the superset-hood of the merged
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
# fcut on non-numeric data ff <- factor(substring("statistics", 1:10, 1:10), levels = letters) fcut(ff) # transform a single vector into a single fuzzy set x <- runif(10) fcut(x, breaks=c(0, 0.5, 1), name='age') # transform single vector into a partition of the interval 0-1 # (the boundary triangles are right-angled) fcut(x, breaks=c(0, 0, 0.5, 1, 1), name='age') # also create supersets fcut(x, breaks=c(0, 0, 0.5, 1, 1), name='age', merge=c(1, 2)) # transform all columns of a data frame # with different breakpoints data <- CO2[, c('conc', 'uptake')] fcut(data, breaks=list(conc=c(95, 95, 350, 1000, 1000), uptake=c(7, 7, 28.3, 46, 46)))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.