Bird
Raised Fist0
Apache Sparkdata~5 mins

Feature transformers (VectorAssembler, StandardScaler) in Apache Spark - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of VectorAssembler in Apache Spark?
VectorAssembler combines multiple columns of features into a single vector column. This helps prepare data for machine learning models that expect a single vector input.
Click to reveal answer
beginner
How does StandardScaler transform features?
StandardScaler scales features to have zero mean and unit variance. This makes features comparable and helps many machine learning algorithms perform better.
Click to reveal answer
intermediate
Why do we need to use VectorAssembler before StandardScaler?
StandardScaler expects a single vector column as input. VectorAssembler creates this vector by combining multiple feature columns, so StandardScaler can then scale them together.
Click to reveal answer
beginner
What is the output type of VectorAssembler?
The output is a new column of type Vector, which contains all the input features combined into one vector per row.
Click to reveal answer
intermediate
What happens if you skip scaling features with StandardScaler before training some models?
Models like logistic regression or k-means may perform poorly or converge slowly because features with different scales can bias the model. Scaling helps avoid this problem.
Click to reveal answer
What does VectorAssembler do in Spark?
ACombines multiple feature columns into one vector column
BScales features to zero mean and unit variance
CRemoves missing values from data
DSplits data into training and test sets
Which transformer scales features to have zero mean and unit variance?
AVectorAssembler
BOneHotEncoder
CStringIndexer
DStandardScaler
Why is VectorAssembler needed before StandardScaler?
ABecause StandardScaler only accepts a single vector column as input
BBecause VectorAssembler scales the features
CBecause StandardScaler removes null values
DBecause VectorAssembler splits data
What type of data does VectorAssembler output?
AInteger column
BString column
CVector column
DBoolean column
What is a common effect of not scaling features before training some ML models?
AModels train faster
BModels may perform poorly or converge slowly
CFeatures become categorical
DData size increases
Explain how VectorAssembler and StandardScaler work together in a Spark ML pipeline.
Think about the input and output of each transformer and why scaling is important.
You got /4 concepts.
    Describe why feature scaling is important before training machine learning models.
    Consider how different feature ranges affect model training.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the VectorAssembler in Apache Spark's feature transformers?
      easy
      A. To remove missing values from the dataset
      B. To scale features to have zero mean and unit variance
      C. To combine multiple columns into a single vector column
      D. To split a vector column into multiple columns

      Solution

      1. Step 1: Understand VectorAssembler's role

        VectorAssembler is used to combine several feature columns into one vector column, which is needed for ML algorithms.
      2. Step 2: Differentiate from other transformers

        StandardScaler scales features, but VectorAssembler only combines columns into a vector.
      3. Final Answer:

        To combine multiple columns into a single vector column -> Option C
      4. Quick Check:

        VectorAssembler = combine columns [OK]
      Hint: VectorAssembler joins columns into one vector column [OK]
      Common Mistakes:
      • Confusing VectorAssembler with StandardScaler
      • Thinking it splits vectors instead of combining
      • Assuming it handles missing values
      2. Which of the following is the correct way to create a VectorAssembler in PySpark to combine columns 'age' and 'income' into 'features'?
      easy
      A. VectorAssembler(inputCols=['age', 'income'], outputCol='features')
      B. VectorAssembler(outputCols=['age', 'income'], inputCol='features')
      C. VectorAssembler(inputCol=['age', 'income'], outputCols='features')
      D. VectorAssembler(columns=['age', 'income'], output='features')

      Solution

      1. Step 1: Recall VectorAssembler syntax

        The correct parameters are inputCols (list of input columns) and outputCol (name of output vector column).
      2. Step 2: Match parameters with options

        VectorAssembler(inputCols=['age', 'income'], outputCol='features') uses inputCols and outputCol correctly; others misuse parameter names or types.
      3. Final Answer:

        VectorAssembler(inputCols=['age', 'income'], outputCol='features') -> Option A
      4. Quick Check:

        inputCols and outputCol are correct parameters [OK]
      Hint: Use inputCols and outputCol parameters exactly [OK]
      Common Mistakes:
      • Swapping inputCols and outputCol names
      • Using singular inputCol instead of inputCols
      • Using wrong parameter names like columns or output
      3. Given the following PySpark code, what will be the output of scaled_features.show()?
      from pyspark.ml.feature import VectorAssembler, StandardScaler
      from pyspark.sql import SparkSession
      
      spark = SparkSession.builder.getOrCreate()
      data = [(1, 10.0, 100.0), (2, 20.0, 200.0), (3, 30.0, 300.0)]
      df = spark.createDataFrame(data, ['id', 'feature1', 'feature2'])
      
      assembler = VectorAssembler(inputCols=['feature1', 'feature2'], outputCol='features')
      assembled = assembler.transform(df)
      
      scaler = StandardScaler(inputCol='features', outputCol='scaledFeatures', withMean=True, withStd=True)
      scalerModel = scaler.fit(assembled)
      scaled_features = scalerModel.transform(assembled).select('id', 'scaledFeatures')
      medium
      A. A DataFrame with 'id' and 'scaledFeatures' columns where features are scaled to zero mean and unit variance
      B. A DataFrame with 'id' and 'features' columns unchanged
      C. An error because StandardScaler cannot be applied after VectorAssembler
      D. A DataFrame with only 'scaledFeatures' column without 'id'

      Solution

      1. Step 1: Understand VectorAssembler output

        VectorAssembler creates a 'features' vector column combining 'feature1' and 'feature2'.
      2. Step 2: Apply StandardScaler

        StandardScaler scales 'features' to zero mean and unit variance, outputting 'scaledFeatures'.
      3. Final Answer:

        A DataFrame with 'id' and 'scaledFeatures' columns where features are scaled to zero mean and unit variance -> Option A
      4. Quick Check:

        VectorAssembler + StandardScaler = scaled features [OK]
      Hint: StandardScaler scales VectorAssembler output vector [OK]
      Common Mistakes:
      • Expecting original columns unchanged after scaling
      • Thinking StandardScaler causes error after VectorAssembler
      • Missing 'id' column in output
      4. Identify the error in the following PySpark code snippet using StandardScaler:
      assembler = VectorAssembler(inputCols=['f1', 'f2'], outputCol='features')
      df2 = assembler.transform(df)
      scaler = StandardScaler(inputCol='features', outputCol='scaled', withMean=False, withStd=True)
      scaled_df = scaler.transform(df2)
      medium
      A. Wrong inputCol name in StandardScaler
      B. Missing call to fit() before transform() on StandardScaler
      C. VectorAssembler outputCol should be 'scaled' not 'features'
      D. withMean must be True for StandardScaler to work

      Solution

      1. Step 1: Check StandardScaler usage

        StandardScaler requires calling fit() on data before transform().
      2. Step 2: Identify missing fit() call

        The code calls transform() directly on scaler without fit(), causing error.
      3. Final Answer:

        Missing call to fit() before transform() on StandardScaler -> Option B
      4. Quick Check:

        StandardScaler needs fit() before transform() [OK]
      Hint: Always fit StandardScaler before transform [OK]
      Common Mistakes:
      • Calling transform() without fit() on StandardScaler
      • Confusing inputCol and outputCol names
      • Assuming withMean must be True
      5. You have a dataset with columns 'height', 'weight', and 'age'. You want to prepare features for a machine learning model by combining these columns into a single vector and scaling them to zero mean and unit variance. Which sequence of steps correctly achieves this in PySpark?
      hard
      A. Use StandardScaler first on raw columns, then combine with VectorAssembler
      B. Apply StandardScaler separately on each column, then combine with VectorAssembler
      C. Combine columns with VectorAssembler and use StandardScaler without fitting
      D. Use VectorAssembler to combine columns, then fit and transform with StandardScaler on the assembled vector

      Solution

      1. Step 1: Combine columns using VectorAssembler

        VectorAssembler merges 'height', 'weight', and 'age' into one vector column for ML models.
      2. Step 2: Fit and transform the assembled vector with StandardScaler

        StandardScaler requires fitting on the vector column to scale features properly.
      3. Final Answer:

        Use VectorAssembler to combine columns, then fit and transform with StandardScaler on the assembled vector -> Option D
      4. Quick Check:

        Combine first, then scale with fit() [OK]
      Hint: Combine columns first, then fit StandardScaler [OK]
      Common Mistakes:
      • Scaling columns before combining
      • Skipping fit() on StandardScaler
      • Combining after scaling
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard