One Hot Encoding
Tại Hoa Kỳ, nơi bạn sinh sống sẽ quyết định con bạn có thể theo học trường nào. Vì vậy, dễ hiểu khi nhiều người rất quan tâm đến việc ngôi nhà tương lai của họ thuộc khu học chính nào. Mặc dù các khu học chính được đánh số trong SCHOOLDISTRICTNUMBER, thực chất đây là biến phân loại. Nghĩa là việc cộng hay lấy trung bình các giá trị này không có ý nghĩa rõ ràng. Do đó, trong ví dụ này, chúng ta sẽ chuyển SCHOOLDISTRICTNUMBER từ biến phân loại thành một vector số để dùng cho mô hình Machine Learning sau này.
Bài tập này là một phần của khóa học
Feature Engineering với PySpark
Hướng dẫn bài tập
- Khởi tạo một
StringIndexertên làstring_indexervới đầu vào làSCHOOLDISTRICTNUMBERvà đầu ra làSchool_Index. - Áp dụng transformer
string_indexerlêndfbằngfit()vàtransform(). Lưu DataFrame đã biến đổi vàoindexed_df. - Tạo một
OneHotEncodertên làencodervới đầu vào làSchool_Indexvà đầu ra làSchool_Vec. - Áp dụng phép biến đổi lên
indexed_dfbằngtransform(). Quan sát từng bước biến đổi với đoạn mã đã cung cấp.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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)