Böbrek hastalığı vaka çalışması I: Kategorik Doldurucu
Şimdi, çok daha fazla düzenleme gerektiren bir veri kümesiyle pipeline kullanımını keşfetmeye devam edeceksin. Kronik böbrek hastalığı veri kümesi, hem kategorik hem de sayısal özellikler içeriyor; ancak oldukça fazla eksik değer var. Amacımız, çeşitli kan göstergelerini özellik olarak kullanarak kimin kronik böbrek hastalığına sahip olduğunu tahmin etmek.
Sergey'in videoda belirttiği gibi, seni yeni bir kütüphane ile tanıştıracağız: sklearn_pandas. Bu kütüphane, scikit-learn'ün şu anda desteklediğinden çok daha fazla ön işleme adımını bir pipeline içinde zincirlemene olanak tanır. Özellikle, DataFrameMapper() sınıfını kullanarak DataFrame sütunlarına, çıktısı NumPy array veya DataFrame olabilen, sklearn ile uyumlu herhangi bir dönüştürücüyü uygulayabileceksin.
Ayrıca, .to_dict("records") kullanarak bir DataFrame'i dönüştürmeyi senin açıkça yapmana gerek kalmadan kapsülleyen (ve pipeline içinde çalışmasını sağlayan) Dictifier adlı bir dönüştürücü oluşturduk. Son olarak, kidney_feature_names içinde özellik adlarının listesini, kidney_target_name içinde hedef adını, X içinde özellikleri ve y içinde hedefi de sağladık.
Bu egzersizde, görevin sklearn'ün SimpleImputerını kullanarak veri kümesindeki tüm kategorik sütunları doldurmak. Şablon olarak sayısal doldurma eşleyicisinin nasıl oluşturulduğuna bakabilirsin. input_df=True ve df_out=True anahtar kelime argümanlarına dikkat ettin mi? Bu sayede diziler yerine DataFrame'lerle çalışabilirsin. Varsayılan olarak, dönüştürücülere giriş olarak seçilen sütunların numpy array'i verilir ve sonuç olarak DataFrame mapper'ın çıktısı da bir array olur. Scikit-learn dönüştürücüleri tarihsel olarak pandas DataFrame'leri değil, numpy array'leriyle çalışacak şekilde tasarlanmıştır; temel indeksleme arayüzleri benzer olsa da.
Bu egzersiz
XGBoost ile Aşırı Gradyan Artırma
kursunun bir parçasıdırEgzersiz talimatları
DataFrameMapper()veSimpleImputer()kullanarak kategorik doldurucuyu uygula.SimpleImputer()a herhangi bir argüman geçirmen gerekmez. Sütunlarcategorical_columnsiçinde.input_df=Truevedf_out=Truebelirttiğinden emin ol ve list comprehension içinde yineleyici değişken olarakcategory_featurekullan.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# 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=____
)