1. Nauka
  2. /
  3. Kursy
  4. /
  5. Extreme Gradient Boosting with XGBoost

Connected

ćwiczenie

Studium przypadku: choroba nerek I – imputacja kategoryczna

Kontynuujemy eksplorację potoków przetwarzania – tym razem na zbiorze danych wymagającym znacznie więcej przygotowania. Zbiór danych dotyczący przewlekłej choroby nerek zawiera zarówno cechy kategoryczne, jak i liczbowe, a do tego wiele brakujących wartości. Celem jest przewidzenie, u kogo występuje przewlekła choroba nerek, na podstawie różnych wskaźników krwi jako cech.

Jak wspomniał Sergey w nagraniu, poznasz nową bibliotekę – sklearn_pandas – która pozwala łączyć znacznie więcej kroków przetwarzania w potoku, niż obsługuje to scikit-learn samodzielnie. W szczególności klasa DataFrameMapper() umożliwia zastosowanie dowolnego transformatora zgodnego ze sklearn na kolumnach obiektu DataFrame, a wynik może być tablicą NumPy albo obiektem DataFrame.

Przygotowaliśmy też transformer o nazwie Dictifier, który automatycznie konwertuje obiekt DataFrame za pomocą .to_dict("records") – nie musisz robić tego ręcznie, a poza tym działa on wewnątrz potoku. Udostępniliśmy również: listę nazw cech w kidney_feature_names, nazwę zmiennej docelowej w kidney_target_name, cechy w X oraz zmienną docelową w y.

Twoim zadaniem w tym ćwiczeniu jest zastosowanie klasy SimpleImputer ze sklearn do uzupełnienia brakujących wartości we wszystkich kolumnach kategorycznych zbioru danych. Jako wzorzec możesz wykorzystać sposób, w jaki powstał mapper do imputacji wartości liczbowych. Zwróć uwagę na argumenty słów kluczowych input_df=True i df_out=True – dzięki nim możesz pracować na obiektach DataFrame zamiast na tablicach. Domyślnie transformatory otrzymują tablicę numpy z wybranych kolumn, przez co wynik mappera DataFrame również jest tablicą. Transformatory Scikit-learn były historycznie projektowane z myślą o tablicach numpy, a nie obiektach pandas DataFrame, mimo że ich podstawowe interfejsy indeksowania są podobne.

Instrukcje

100 XP
  • Zastosuj imputację kategoryczną, używając DataFrameMapper() i SimpleImputer(). Do SimpleImputer() nie trzeba przekazywać żadnych argumentów. Kolumny są przechowywane w categorical_columns. Pamiętaj, aby podać input_df=True i df_out=True, a jako zmienną iteratora w wyrażeniu listowym użyj category_feature.