One Hot Encoding
在美国,您居住的地区会决定孩子可以就读的学校。因此,很多人非常关心未来房屋所在的学区。虽然学区在 SCHOOLDISTRICTNUMBER 中以编号形式出现,但它本质上是分类变量。也就是说,对这些数值求和或求平均并没有明显意义。因此,在本示例中,我们将把 SCHOOLDISTRICTNUMBER 从分类变量转换为数值向量,便于稍后在机器学习模型中使用。
本练习是课程的一部分
使用 PySpark 进行特征工程
练习说明
- 实例化一个名为
string_indexer的StringIndexer转换器,输入为SCHOOLDISTRICTNUMBER,输出为School_Index。 - 使用
fit()和transform()将转换器string_indexer应用于df。将转换后的数据框保存为indexed_df。 - 创建一个名为
encoder的OneHotEncoder转换器,输入为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)