Package org.apache.spark.ml.feature
package org.apache.spark.ml.feature
Feature transformers
The `ml.feature` package provides common feature transformers that help convert raw data or
features into more suitable forms for model fitting.
Most feature transformers are implemented as
Transformer
s, which
transforms one Dataset
into another, e.g.,
HashingTF
.
Some feature transformers are implemented as Estimator
}s, because the
transformation requires some aggregated information of the dataset, e.g., document
frequencies in IDF
.
For those feature transformers, calling Estimator.fit(org.apache.spark.sql.Dataset<?>, org.apache.spark.ml.param.ParamPair<?>, org.apache.spark.ml.param.ParamPair<?>...)
is required to
obtain the model first, e.g., IDFModel
, in order to apply
transformation.
The transformation is usually done by appending new columns to the input
Dataset
, so all input columns are carried over.
We try to make each transformer minimal, so it becomes flexible to assemble feature
transformation pipelines.
Pipeline
can be used to chain feature transformers, and
VectorAssembler
can be used to combine multiple feature
transformations, for example:
import java.util.Arrays;
import org.apache.spark.api.java.JavaRDD;
import static org.apache.spark.sql.types.DataTypes.*;
import org.apache.spark.sql.types.StructType;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.RowFactory;
import org.apache.spark.sql.Row;
import org.apache.spark.ml.feature.*;
import org.apache.spark.ml.Pipeline;
import org.apache.spark.ml.PipelineStage;
import org.apache.spark.ml.PipelineModel;
// a DataFrame with three columns: id (integer), text (string), and rating (double).
StructType schema = createStructType(
Arrays.asList(
createStructField("id", IntegerType, false),
createStructField("text", StringType, false),
createStructField("rating", DoubleType, false)));
JavaRDD<Row> rowRDD = jsc.parallelize(
Arrays.asList(
RowFactory.create(0, "Hi I heard about Spark", 3.0),
RowFactory.create(1, "I wish Java could use case classes", 4.0),
RowFactory.create(2, "Logistic regression models are neat", 4.0)));
Dataset<Row> dataset = jsql.createDataFrame(rowRDD, schema);
// define feature transformers
RegexTokenizer tok = new RegexTokenizer()
.setInputCol("text")
.setOutputCol("words");
StopWordsRemover sw = new StopWordsRemover()
.setInputCol("words")
.setOutputCol("filtered_words");
HashingTF tf = new HashingTF()
.setInputCol("filtered_words")
.setOutputCol("tf")
.setNumFeatures(10000);
IDF idf = new IDF()
.setInputCol("tf")
.setOutputCol("tf_idf");
VectorAssembler assembler = new VectorAssembler()
.setInputCols(new String[] {"tf_idf", "rating"})
.setOutputCol("features");
// assemble and fit the feature transformation pipeline
Pipeline pipeline = new Pipeline()
.setStages(new PipelineStage[] {tok, sw, tf, idf, assembler});
PipelineModel model = pipeline.fit(dataset);
// save transformed features with raw data
model.transform(dataset)
.select("id", "text", "rating", "features")
.write().format("parquet").save("/output/path");
Some feature transformers implemented in MLlib are inspired by those implemented in scikit-learn.
The major difference is that most scikit-learn feature transformers operate eagerly on the entire
input dataset, while MLlib's feature transformers operate lazily on individual columns,
which is more efficient and flexible to handle large and complex datasets.- See Also:
-
ClassDescriptionBinarize a column of continuous features given a threshold.This
BucketedRandomProjectionLSH
implements Locality Sensitive Hashing functions for Euclidean distance metrics.Model produced byBucketedRandomProjectionLSH
, where multiple random vectors are stored.Params forBucketedRandomProjectionLSH
.Bucketizer
maps a column of continuous features to a column of feature buckets.Deprecated.use UnivariateFeatureSelector instead.Model fitted byChiSqSelector
.Utility transformer for removing temporary columns from a DataFrame.Extracts a vocabulary from document collections and generates aCountVectorizerModel
.Converts a text document to a sparse vector of token counts.Params forCountVectorizer
andCountVectorizerModel
.A feature transformer that takes the 1D discrete cosine transform of a real vector.Outputs the Hadamard product (i.e., the element-wise product) of each input vector with a provided "weight" vector.Placeholder term for the result of undefined interactions, e.g.Feature hashing projects a set of categorical or numerical features into a feature vector of specified dimension (typically substantially smaller than that of the original feature space).Maps a sequence of terms to their term frequencies using the hashing trick.Compute the Inverse Document Frequency (IDF) given a collection of documents.Model fitted byIDF
.Imputation estimator for completing missing values, using the mean, median or mode of the columns in which the missing values are located.Model fitted byImputer
.Params forImputer
andImputerModel
.ATransformer
that maps a column of indices back to a new column of corresponding string values.A term that may be part of an interaction, e.g.Implements the feature interaction transform.Class that represents the features and label of a data point.Params forLSH
.Rescale each feature individually to range [-1, 1] by dividing through the largest maximum absolute value in each feature.Model fitted byMaxAbsScaler
.Params forMaxAbsScaler
andMaxAbsScalerModel
.LSH class for Jaccard distance.Model produced byMinHashLSH
, where multiple hash functions are stored.Rescale each feature individually to a common range [min, max] linearly using column summary statistics, which is also known as min-max normalization or Rescaling.Model fitted byMinMaxScaler
.Params forMinMaxScaler
andMinMaxScalerModel
.A feature transformer that converts the input array of strings into an array of n-grams.Normalize a vector to have unit norm using the given p-norm.A one-hot encoder that maps a column of category indices to a column of binary vectors, with at most a single one-value per row that indicates the input category index.Private trait for params and common methods for OneHotEncoder and OneHotEncoderModelProvides some helper methods used byOneHotEncoder
.param: categorySizes Original number of categories for each feature being encoded.PCA trains a model to project vectors to a lower dimensional space of the topPCA!.k
principal components.Model fitted byPCA
.Perform feature expansion in a polynomial space.QuantileDiscretizer
takes a column with continuous features and outputs a column with binned categorical features.Params forQuantileDiscretizer
.A regex based tokenizer that extracts tokens either by using the provided regex pattern to split the text (default) or repeatedly matching the regex (ifgaps
is false).Implements the transforms required for fitting a dataset against an R model formula.Base trait forRFormula
andRFormulaModel
.Model fitted byRFormula
.Limited implementation of R formula parsing.Scale features using statistics that are robust to outliers.Model fitted byRobustScaler
.Params forRobustScaler
andRobustScalerModel
.Params forSelector
andSelectorModel
.Implements the transformations which are defined by SQL statement.Standardizes features by removing the mean and scaling to unit variance using column summary statistics on the samples in the training set.Model fitted byStandardScaler
.Params forStandardScaler
andStandardScalerModel
.A feature transformer that filters out stop words from input.A label indexer that maps string column(s) of labels to ML column(s) of label indices.Base trait forStringIndexer
andStringIndexerModel
.Model fitted byStringIndexer
.R formula terms.A tokenizer that converts the input string to lowercase and then splits it by white spaces.Feature selector based on univariate statistical tests against labels.Model fitted byUnivariateFeatureSelectorModel
.Params forUnivariateFeatureSelector
andUnivariateFeatureSelectorModel
.Feature selector that removes all low-variance features.Model fitted byVarianceThresholdSelector
.Params forVarianceThresholdSelector
andVarianceThresholdSelectorModel
.A feature transformer that merges multiple columns into a vector column.Utility transformer that rewrites Vector attribute names via prefix replacement.Class for indexing categorical feature columns in a dataset ofVector
.Model fitted byVectorIndexer
.Private trait for params for VectorIndexer and VectorIndexerModelA feature transformer that adds size information to the metadata of a vector column.This class takes a feature vector and outputs a new feature vector with a subarray of the original features.Word2Vec trains a model ofMap(String, Vector)
, i.e.Params forWord2Vec
andWord2VecModel
.Model fitted byWord2Vec
.