开始使用免费开始使用

One Hot Encoding

在美国,您居住的地区会决定孩子可以就读的学校。因此,很多人非常关心未来房屋所在的学区。虽然学区在 SCHOOLDISTRICTNUMBER 中以编号形式出现,但它本质上是分类变量。也就是说,对这些数值求和或求平均并没有明显意义。因此,在本示例中,我们将把 SCHOOLDISTRICTNUMBER 从分类变量转换为数值向量,便于稍后在机器学习模型中使用。

本练习是课程的一部分

使用 PySpark 进行特征工程

查看课程

练习说明

  • 实例化一个名为 string_indexerStringIndexer 转换器,输入为 SCHOOLDISTRICTNUMBER,输出为 School_Index
  • 使用 fit()transform() 将转换器 string_indexer 应用于 df。将转换后的数据框保存为 indexed_df
  • 创建一个名为 encoderOneHotEncoder 转换器,输入为 School_Index,输出为 School_Vec
  • indexed_df 调用 transform() 完成转换。使用提供的代码查看每一步转换的结果。

交互式实操练习

通过完成这段示例代码来试试这个练习。

from pyspark.ml.feature import OneHotEncoder, StringIndexer

# Map strings to numbers with string indexer
string_indexer = ____(inputCol=____, outputCol=____)
indexed_df = ____.____(df).____(df)

# Onehot encode indexed values
encoder = ____(inputCol=____, outputCol=____)
encoded_df = ____.____(indexed_df)

# Inspect the transformation steps
encoded_df[['SCHOOLDISTRICTNUMBER', 'School_Index', 'School_Vec']].show(truncate=100)
编辑并运行代码