शुरू करेंमुफ़्त में शुरू करें

किडनी रोग केस स्टडी I: Categorical Imputer

अब आप ऐसे डेटासेट के साथ पाइपलाइनों का उपयोग आगे खोजेंगे, जिसमें काफ़ी ज़्यादा डेटा व्रैंगलिंग की ज़रूरत है। chronic kidney disease dataset में categorical और numeric दोनों तरह के फीचर्स हैं, लेकिन इनमें बहुत सारे missing values हैं। यहाँ लक्ष्य यह है कि अलग-अलग blood indicators को फीचर्स के रूप में देकर यह प्रेडिक्ट करना कि किसे chronic kidney disease है.

वीडियो में Sergey ने बताया था कि आपको एक नई लाइब्रेरी, sklearn_pandas, से परिचित कराया जाएगा, जो आपको scikit-learn की तुलना में पाइपलाइन के अंदर कहीं ज़्यादा प्रोसेसिंग स्टेप्स चेन करने देती है। ख़ास तौर पर, आप DataFrameMapper() क्लास का उपयोग करके DataFrame कॉलम्स पर कोई भी sklearn-कम्पैटिबल ट्रांसफ़ॉर्मर अप्लाई कर पाएँगे, जहाँ आउटपुट NumPy array या DataFrame, दोनों में से कुछ भी हो सकता है.

हमने Dictifier नाम का एक ट्रांसफ़ॉर्मर भी बनाया है, जो .to_dict("records") का उपयोग करके DataFrame को कन्वर्ट करने को एनकैप्सुलेट करता है, ताकि आपको इसे अलग से न करना पड़े (और यह पाइपलाइन में काम कर सके)। अंत में, हमने kidney_feature_names में फीचर नामों की सूची, kidney_target_name में टारगेट का नाम, X में फीचर्स, और y में टारगेट भी उपलब्ध कराए हैं.

इस अभ्यास में, आपका कार्य sklearn के SimpleImputer को अप्लाई करके डेटासेट की सभी categorical कॉलम्स को इम्प्यूट करना है। आप numeric imputation mapper कैसे बनाया गया था, इसे एक टेम्पलेट के रूप में देख सकते हैं। आपने input_df=True और df_out=True वाले keyword arguments देखे? यह इसलिए है ताकि आप arrays की जगह DataFrames के साथ काम कर सकें। डिफ़ॉल्ट रूप से, ट्रांसफ़ॉर्मर्स को इनपुट के रूप में चुनी गई कॉलम्स का numpy array पास किया जाता है, और नतीजतन DataFrame mapper का आउटपुट भी एक array होता है। ऐतिहासिक रूप से, scikit-learn ट्रांसफ़ॉर्मर्स को numpy arrays के साथ काम करने के लिए डिज़ाइन किया गया है, न कि pandas DataFrames के साथ, हालाँकि उनकी बेसिक indexing इंटरफ़ेस मिलती-जुलती है.

यह अभ्यास पाठ्यक्रम का हिस्सा है

XGBoost के साथ Extreme Gradient Boosting

पाठ्यक्रम देखें

अभ्यास निर्देश

  • DataFrameMapper() और SimpleImputer() का उपयोग करके categorical imputer अप्लाई करें। SimpleImputer() में कोई आर्ग्युमेंट पास करने की ज़रूरत नहीं है। कॉलम्स categorical_columns में दिए गए हैं। सुनिश्चित करें कि आप input_df=True और df_out=True स्पेसिफ़ाई करें, और लिस्ट कॉम्प्रिहेंशन में अपने इटरेटर वैरिएबल के रूप में category_feature का उपयोग करें.

इंटरैक्टिव व्यावहारिक अभ्यास

इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।

# 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=____
                                               )
कोड संपादित करें और चलाएँ