MulaiMulai sekarang secara gratis

Studi kasus penyakit ginjal I: Categorical Imputer

Sekarang Anda akan melanjutkan eksplorasi penggunaan pipeline dengan himpunan data yang memerlukan penanganan jauh lebih kompleks. Himpunan data penyakit ginjal kronis berisi fitur kategorikal dan numerik, tetapi memiliki banyak nilai hilang. Tujuannya di sini adalah memprediksi siapa yang memiliki penyakit ginjal kronis berdasarkan berbagai indikator darah sebagai fitur.

Seperti yang disebutkan Sergey dalam video, Anda akan diperkenalkan dengan pustaka baru, sklearn_pandas, yang memungkinkan Anda merangkai lebih banyak langkah pemrosesan di dalam sebuah pipeline dibandingkan yang saat ini didukung oleh scikit-learn. Secara khusus, Anda dapat menggunakan kelas DataFrameMapper() untuk menerapkan transformer apa pun yang kompatibel dengan sklearn pada kolom DataFrame, dengan keluaran yang dapat berupa array NumPy atau DataFrame.

Kami juga membuat sebuah transformer bernama Dictifier yang membungkus proses mengonversi DataFrame menggunakan .to_dict("records") tanpa perlu Anda lakukan secara eksplisit (dan agar dapat bekerja di dalam pipeline). Terakhir, kami juga menyediakan daftar nama fitur dalam kidney_feature_names, nama target dalam kidney_target_name, fitur pada X, dan target pada y.

Dalam latihan ini, tugas Anda adalah menerapkan SimpleImputer dari sklearn untuk melakukan imputasi pada semua kolom kategorikal dalam himpunan data. Anda dapat merujuk pada cara pembuatan numeric imputation mapper sebagai templat. Perhatikan argumen kata kunci input_df=True dan df_out=True. Ini agar Anda dapat bekerja dengan DataFrame alih-alih array. Secara bawaan, transformer menerima array numpy dari kolom yang dipilih sebagai masukan, dan sebagai akibatnya, keluaran DataFrame mapper juga berupa array. Transformer scikit-learn secara historis dirancang untuk bekerja dengan array numpy, bukan DataFrame pandas, meskipun antarmuka pengindeksan dasarnya serupa.

Latihan ini adalah bagian dari kursus

Extreme Gradient Boosting dengan XGBoost

Lihat Kursus

Petunjuk latihan

  • Terapkan categorical imputer menggunakan DataFrameMapper() dan SimpleImputer(). SimpleImputer() tidak memerlukan argumen apa pun. Kolom-kolomnya terdapat pada categorical_columns. Pastikan untuk menyetel input_df=True dan df_out=True, serta gunakan category_feature sebagai variabel iterator Anda dalam list comprehension.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

# Import necessary modules
from sklearn_pandas import DataFrameMapper
from sklearn.impute import SimpleImputer

# Check number of nulls in each feature column
nulls_per_column = X.isnull().sum()
print(nulls_per_column)

# Create a boolean mask for categorical columns
categorical_feature_mask = X.dtypes == object

# Get list of categorical column names
categorical_columns = X.columns[categorical_feature_mask].tolist()

# Get list of non-categorical column names
non_categorical_columns = X.columns[~categorical_feature_mask].tolist()

# Apply numeric imputer
numeric_imputation_mapper = DataFrameMapper(
                                            [([numeric_feature], SimpleImputer(strategy="median")) for numeric_feature in non_categorical_columns],
                                            input_df=True,
                                            df_out=True
                                           )

# Apply categorical imputer
categorical_imputation_mapper = ____(
                                                [(category_feature, ____) for ____ in ____],
                                                input_df=____,
                                                df_out=____
                                               )
Edit dan Jalankan Kode