開始使用免費開始

One Hot Encoding

在美國,居住地會決定你的孩子能就讀哪些學校。因此,許多人會特別在意未來房子所在的學區。雖然學區在 SCHOOLDISTRICTNUMBER 欄位中以數字編號,但它其實是類別型變數。也就是說,把這些值相加或取平均沒有意義。因此,在這個例子中,我們會把 SCHOOLDISTRICTNUMBER 從類別型變數轉換為數值向量,之後可用在機器學習模型中。

本練習屬於課程

使用 PySpark 進行特徵工程

檢視課程

練習說明

  • 建立一個名為 string_indexerStringIndexer 轉換器,輸入欄位為 SCHOOLDISTRICTNUMBER,輸出欄位為 School_Index
  • df 套用轉換器 string_indexer,依序呼叫 fit()transform()。將轉換後的 DataFrame 儲存為 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)
編輯並執行程式碼