Class RFormula
- All Implemented Interfaces:
Serializable
,org.apache.spark.internal.Logging
,RFormulaBase
,Params
,HasFeaturesCol
,HasHandleInvalid
,HasLabelCol
,DefaultParamsWritable
,Identifiable
,MLWritable
The basic operators are:
- ~
separate target and terms
- +
concat terms, "+ 0" means removing intercept
- -
remove a term, "- 1" means removing intercept
- :
interaction (multiplication for numeric values, or binarized categorical values)
- .
all columns except target
- *
factor crossing, includes the terms and interactions between them
- ^
factor crossing to a specified degree
Suppose a
and b
are double columns, we use the following simple examples
to illustrate the effect of RFormula
:
- y ~ a + b
means model y ~ w0 + w1 * a + w2 * b
where w0
is the intercept and w1, w2
are coefficients.
- y ~ a + b + a:b - 1
means model y ~ w1 * a + w2 * b + w3 * a * b
where w1, w2, w3
are coefficients.
- y ~ a * b
means model y ~ w0 + w1 * a + w2 * b + w3 * a * b
where w0
is the
intercept and w1, w2, w3
are coefficients
- y ~ (a + b)^2
means model y ~ w0 + w1 * a + w2 * b + w3 * a * b
where w0
is the
intercept and w1, w2, w3
are coefficients
RFormula produces a vector column of features and a double or string column of label.
Like when formulas are used in R for linear regression, string input columns will be one-hot
encoded, and numeric columns will be cast to doubles.
If the label column is of type string, it will be first transformed to double with
StringIndexer
. If the label column does not exist in the DataFrame, the output label column
will be created from the specified response variable in the formula.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.apache.spark.internal.Logging
org.apache.spark.internal.Logging.LogStringContext, org.apache.spark.internal.Logging.SparkShellLoggingFilter
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionCreates a copy of this instance with the same UID and some extra params.Param for features column name.Fits a model to the input data.Force to index label whether it is numeric or string type.formula()
R formula parameter.Param for how to handle invalid data (unseen or NULL values) in features and label column of string type.labelCol()
Param for label column name.static RFormula
static MLReader<T>
read()
setFeaturesCol
(String value) setForceIndexLabel
(boolean value) setFormula
(String value) Sets the formula to use for this transformer.setHandleInvalid
(String value) setLabelCol
(String value) setStringIndexerOrderType
(String value) Param for how to order categories of a string FEATURE column used byStringIndexer
.toString()
transformSchema
(StructType schema) Check transform validity and derive the output schema from the input schema.uid()
An immutable unique ID for the object and its derivatives.Methods inherited from class org.apache.spark.ml.PipelineStage
params
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.apache.spark.ml.util.DefaultParamsWritable
write
Methods inherited from interface org.apache.spark.ml.param.shared.HasFeaturesCol
getFeaturesCol
Methods inherited from interface org.apache.spark.ml.param.shared.HasHandleInvalid
getHandleInvalid
Methods inherited from interface org.apache.spark.ml.param.shared.HasLabelCol
getLabelCol
Methods inherited from interface org.apache.spark.internal.Logging
initializeForcefully, initializeLogIfNecessary, initializeLogIfNecessary, initializeLogIfNecessary$default$2, isTraceEnabled, log, logDebug, logDebug, logDebug, logDebug, logError, logError, logError, logError, logInfo, logInfo, logInfo, logInfo, logName, LogStringContext, logTrace, logTrace, logTrace, logTrace, logWarning, logWarning, logWarning, logWarning, org$apache$spark$internal$Logging$$log_, org$apache$spark$internal$Logging$$log__$eq, withLogContext
Methods inherited from interface org.apache.spark.ml.util.MLWritable
save
Methods inherited from interface org.apache.spark.ml.param.Params
clear, copyValues, defaultCopy, defaultParamMap, explainParam, explainParams, extractParamMap, extractParamMap, get, getDefault, getOrDefault, getParam, hasDefault, hasParam, isDefined, isSet, onParamChange, paramMap, params, set, set, set, setDefault, setDefault, shouldOwn
Methods inherited from interface org.apache.spark.ml.feature.RFormulaBase
getForceIndexLabel, getFormula, getStringIndexerOrderType, hasLabelCol
-
Constructor Details
-
RFormula
-
RFormula
public RFormula()
-
-
Method Details
-
load
-
read
-
formula
Description copied from interface:RFormulaBase
R formula parameter. The formula is provided in string form.- Specified by:
formula
in interfaceRFormulaBase
- Returns:
- (undocumented)
-
forceIndexLabel
Description copied from interface:RFormulaBase
Force to index label whether it is numeric or string type. Usually we index label only when it is string type. If the formula was used by classification algorithms, we can force to index label even it is numeric type by setting this param with true. Default: false.- Specified by:
forceIndexLabel
in interfaceRFormulaBase
- Returns:
- (undocumented)
-
handleInvalid
Description copied from interface:RFormulaBase
Param for how to handle invalid data (unseen or NULL values) in features and label column of string type. Options are 'skip' (filter out rows with invalid data), 'error' (throw an error), or 'keep' (put invalid data in a special additional bucket, at index numLabels). Default: "error"- Specified by:
handleInvalid
in interfaceHasHandleInvalid
- Specified by:
handleInvalid
in interfaceRFormulaBase
- Returns:
- (undocumented)
-
stringIndexerOrderType
Description copied from interface:RFormulaBase
Param for how to order categories of a string FEATURE column used byStringIndexer
. The last category after ordering is dropped when encoding strings. Supported options: 'frequencyDesc', 'frequencyAsc', 'alphabetDesc', 'alphabetAsc'. The default value is 'frequencyDesc'. When the ordering is set to 'alphabetDesc',RFormula
drops the same category as R when encoding strings.The options are explained using an example
'b', 'a', 'b', 'a', 'c', 'b'
:
Note that this ordering option is NOT used for the label column. When the label column is indexed, it uses the default descending frequency ordering in+-----------------+---------------------------------------+----------------------------------+ | Option | Category mapped to 0 by StringIndexer | Category dropped by RFormula | +-----------------+---------------------------------------+----------------------------------+ | 'frequencyDesc' | most frequent category ('b') | least frequent category ('c') | | 'frequencyAsc' | least frequent category ('c') | most frequent category ('b') | | 'alphabetDesc' | last alphabetical category ('c') | first alphabetical category ('a')| | 'alphabetAsc' | first alphabetical category ('a') | last alphabetical category ('c') | +-----------------+---------------------------------------+----------------------------------+
StringIndexer
.- Specified by:
stringIndexerOrderType
in interfaceRFormulaBase
- Returns:
- (undocumented)
-
labelCol
Description copied from interface:HasLabelCol
Param for label column name.- Specified by:
labelCol
in interfaceHasLabelCol
- Returns:
- (undocumented)
-
featuresCol
Description copied from interface:HasFeaturesCol
Param for features column name.- Specified by:
featuresCol
in interfaceHasFeaturesCol
- Returns:
- (undocumented)
-
uid
Description copied from interface:Identifiable
An immutable unique ID for the object and its derivatives.- Specified by:
uid
in interfaceIdentifiable
- Returns:
- (undocumented)
-
setFormula
Sets the formula to use for this transformer. Must be called before use.- Parameters:
value
- an R formula in string form (e.g. "y ~ x + z")- Returns:
- (undocumented)
-
setHandleInvalid
-
setFeaturesCol
-
setLabelCol
-
setForceIndexLabel
-
setStringIndexerOrderType
-
fit
Description copied from class:Estimator
Fits a model to the input data.- Specified by:
fit
in classEstimator<RFormulaModel>
- Parameters:
dataset
- (undocumented)- Returns:
- (undocumented)
-
transformSchema
Description copied from class:PipelineStage
Check transform validity and derive the output schema from the input schema.We check validity for interactions between parameters during
transformSchema
and raise an exception if any parameter value is invalid. Parameter value checks which do not depend on other parameters are handled byParam.validate()
.Typical implementation should first conduct verification on schema change and parameter validity, including complex parameter interaction checks.
- Specified by:
transformSchema
in classPipelineStage
- Parameters:
schema
- (undocumented)- Returns:
- (undocumented)
-
copy
Description copied from interface:Params
Creates a copy of this instance with the same UID and some extra params. Subclasses should implement this method and set the return type properly. SeedefaultCopy()
.- Specified by:
copy
in interfaceParams
- Specified by:
copy
in classEstimator<RFormulaModel>
- Parameters:
extra
- (undocumented)- Returns:
- (undocumented)
-
toString
- Specified by:
toString
in interfaceIdentifiable
- Overrides:
toString
in classObject
-