Nauka budowania modelu w Scikit-learn

Nauka budowania modelu w Scikit-learn

Scikit-learn to biblioteka języka Python typu open source, która upraszcza proces tworzenia modeli uczenia maszynowego. Oferuje przejrzysty i spójny interfejs, który pomaga zarówno początkującym, jak i doświadczonym użytkownikom wydajnie pracować.

  • Obsługuje zadania takie jak grupowanie regresji klasyfikacji i przetwarzanie wstępne
  • Sprawia, że ​​budowanie modelu jest szybkie i niezawodne
  • Zapewnia gotowe do użycia narzędzia do szkoleń i ewaluacji
  • Zmniejsza złożoność, unikając ręcznego wdrażania algorytmów

Instalowanie i używanie Scikit-learn

Zanim zaczniemy budować modele, musimy je zainstalować Scikit-ucz się. Wymaga Pythona 3.8 lub nowszego i zależy od dwóch ważnych bibliotek: NumPy I SciPy. Upewnij się, że zostały one zainstalowane jako pierwsze.

Aby zainstalować Scikit-learn, uruchom następującą komendę:

pip install -U scikit-learn

Spowoduje to pobranie i zainstalowanie najnowszej wersji Scikit-learn wraz z jej zależnościami. Przyjrzyjmy się różnym etapom procesu budowania modelu przy użyciu biblioteki Scikit-learn.

Krok 1: Ładowanie zestawu danych

Zbiór danych składa się z:

  • Funkcje (X): Zmienne wejściowe opisujące dane
  • Cel (y): Wartość, którą chcemy przewidzieć

Scikit-learn udostępnia wbudowane zestawy danych, takie jak Iris Digits i Boston Housing. Korzystanie ze zbioru danych Iris:

  • Load_iris() ładuje dane
  • X przechowuje dane funkcji
  • y przechowuje etykiety docelowe
  • nazwy_funkcji i nazwy_celu podają nazwy opisowe

Możemy sprawdzić kilka pierwszych wierszy, aby zrozumieć strukturę. W przypadku niestandardowych zestawów danych Panda jest powszechnie używana do ładowania plików zewnętrznych, takich jak pliki CSV.

Python
   from   sklearn.datasets   import   load_iris   iris   =   load_iris  ()   X   =   iris  .  data   y   =   iris  .  target   feature_names   =   iris  .  feature_names   target_names   =   iris  .  target_names   print  (  'Feature names:'     feature_names  )   print  (  'Target names:'     target_names  )   print  (  '  n  Type of X is:'     type  (  X  ))   print  (  '  n  First 5 rows of X:  n  '     X  [:  5  ])   

Wyjście: 

model1Ładowanie zestawu danych

Czasami musimy popracować na własnych, niestandardowych danych, a następnie załadować zewnętrzny zbiór danych. W tym celu możemy skorzystać z biblioteka pand dla łatwego ładowania i manipulowania zbiorami danych.

W tym celu możesz zapoznać się z naszym artykułem na temat Jak zaimportować plik CSV do pand ?

Krok 2: Dzielenie zbioru danych

Aby rzetelnie ocenić model, dzielimy dane na:

  • Zbiór uczący: używany do uczenia modelu
  • Zbiór testowy: używany do oceny, jak dobrze model generalizuje

Używając train_test_split podzieliliśmy zbiór danych Iris tak, że 60% przeznaczone jest na szkolenie, a 40% na testowanie (test_size=0,4). random_state=1 zapewnia powtarzalność.

Po podzieleniu otrzymujemy:

  • X_train y_train -> Dane treningowe
  • X_test y_test -> Dane testowe

Sprawdzenie kształtów gwarantuje, że dane zostaną poprawnie podzielone.

Python
   from   sklearn.model_selection   import   train_test_split   X_train     X_test     y_train     y_test   =   train_test_split  (  X     y     test_size  =  0.4     random_state  =  1  )   

Teraz sprawdźmy Kształty podzielonych danych, aby zapewnić, że oba zbiory mają prawidłowe proporcje danych, co pozwala uniknąć potencjalnych błędów w ocenie lub szkoleniu modelu.

Python
   print  (  'X_train Shape:'     X_train  .  shape  )   print  (  'X_test Shape:'     X_test  .  shape  )   print  (  'Y_train Shape:'     y_train  .  shape  )   print  (  'Y_test Shape:'     y_test  .  shape  )   

Wyjście:

model2Kształt podzielonych danych

Krok 3: Obsługa danych kategorycznych

Algorytmy uczenia maszynowego działają z danymi liczbowymi, dlatego dane kategoryczne (tekstowe) muszą zostać przekonwertowane na liczby. Jeśli modele nie są odpowiednio zakodowane, mogą błędnie interpretować kategorie. Scikit-learn udostępnia wiele metod kodowania:

1. Kodowanie etykiet : Konwertuje każdą kategorię na unikalną liczbę całkowitą. Na przykład w kolumnie z kategoriami takimi jak „kot”, „pies” i „ptak” skonwertuje je odpowiednio na 0 1 i 2. Ta metoda działa dobrze, gdy kategorie mają znaczącą kolejność, np. Niska Średnia i Wysoka.

  • LabelEncoder(): Jest inicjowany w celu utworzenia obiektu kodera, który konwertuje wartości kategoryczne na etykiety numeryczne.
  • dopasowanie_transformacja(): Ta metoda najpierw dopasowuje koder do danych kategorycznych, a następnie przekształca kategorie w odpowiednie etykiety numeryczne.
Python
   from   sklearn.preprocessing   import   LabelEncoder   categorical_feature   =   [  'cat'     'dog'     'dog'     'cat'     'bird'  ]   encoder   =   LabelEncoder  ()   encoded_feature   =   encoder  .  fit_transform  (  categorical_feature  )   print  (  'Encoded feature:'     encoded_feature  )   

Wyjście:

Zakodowana funkcja: [1 2 2 1 0]

2. Jedno-gorące kodowanie : Kodowanie One-Hot tworzy osobne kolumny binarne dla każdej kategorii. Jest to przydatne, gdy kategorie nie mają naturalnego porządku. Przykład: kot pies ptak -> 3 nowe kolumny (kot/pies/ptak) z 1 i 0.

  • Dane wejściowe muszą zostać przekształcone w tablicę 2D
  • OneHotEncoder(sparse_output=False) generuje kolumny binarne
Python
   from   sklearn.preprocessing   import   OneHotEncoder   import   numpy   as   np   categorical_feature   =   [  'cat'     'dog'     'dog'     'cat'     'bird'  ]   categorical_feature   =   np  .  array  (  categorical_feature  )  .  reshape  (  -  1     1  )   encoder   =   OneHotEncoder  (  sparse_output  =  False  )   encoded_feature   =   encoder  .  fit_transform  (  categorical_feature  )   print  (  'OneHotEncoded feature:  n  '     encoded_feature  )   

Wyjście:

model3

Oprócz kodowania etykiet i kodowania One-Hot istnieją inne techniki, takie jak Średnie kodowanie .

Krok 4: Trenowanie modelu

Teraz, gdy nasze dane są już gotowe, czas na wytrenowanie modelu uczenia maszynowego. Scikit-learn ma wiele algorytmów ze spójnym interfejsem do przewidywania i oceny treningu. Tutaj użyjemy Regresja logistyczna jako przykład.

Notatka : Nie będziemy wdawać się w szczegóły działania algorytmu, ponieważ interesuje nas jedynie zrozumienie jego implementacji. 

  • log_reg = Regresja logistyczna (max_iter=200): Tworzenie obiektu klasyfikatora regresji logistycznej.
  • log_reg.fit(X_train y_train): Używając tego model regresji logistycznej dostosowuje parametry modelu, aby jak najlepiej dopasować je do danych.
Python
   from   sklearn.linear_model   import   LogisticRegression   log_reg   =   LogisticRegression  (  max_iter  =  200  )   log_reg  .  fit  (  X_train     y_train  )   
model4Szkolenie z wykorzystaniem regresji logistycznej.

Krok 5: Przewiduj

Po przeszkoleniu używamy modelu do przewidywania danych testowych X_test, wywołując metodę przewidywania. Zwraca przewidywane etykiety y_pred.

  • log_reg.predict: Wykorzystuje wyszkolony model regresji logistycznej do przewidywania etykiet dla danych testowych X_test.
Python
   y_pred   =   log_reg  .  predict  (  X_test  )   

Krok 6: Ocena dokładności modelu

Sprawdź, jak dobrze radzi sobie nasz model, porównując y_test i y_pred. Tutaj używamy metody modułu metryki dokładność_score.

Python
   from   sklearn   import   metrics   print  (  'Logistic Regression model accuracy:'     metrics  .  accuracy_score  (  y_test     y_pred  ))   

Wyjście:

Dokładność modelu regresji logistycznej: 0,9666666666666667

Teraz chcemy, aby nasz model przewidywał nowe przykładowe dane. Następnie przykładowe dane wejściowe można po prostu przekazać w taki sam sposób, w jaki przekazujemy dowolną macierz cech. Tutaj użyliśmy go jako próbki = [[3 5 4 2] [2 3 5 4]]

Python
   sample   =   [[  3     5     4     2  ]   [  2     3     5     4  ]]   preds   =   log_reg  .  predict  (  sample  )   pred_species   =   [  iris  .  target_names  [  p  ]   for   p   in   preds  ]   print  (  'Predictions:'     pred_species  )   

Wyjście: 

Prognozy: [np.str_('virginica') np.str_('virginica')]

Funkcje nauki Scikit

Scikit-learn jest używany, ponieważ sprawia, że ​​budowanie modeli uczenia maszynowego jest proste i wydajne. Oto kilka ważnych powodów:

  1. Gotowe do użycia narzędzia : Zapewnia wbudowane funkcje do typowych zadań, takich jak modele szkoleniowe z wstępnym przetwarzaniem danych i tworzenie prognoz. Oszczędza to czas, unikając konieczności kodowania algorytmów od zera.
  2. Łatwa ocena modelu : Dzięki narzędziom takim jak weryfikacja krzyżowa i wskaźniki wydajności pomagają mierzyć skuteczność naszego modelu i identyfikować obszary wymagające poprawy.
  3. Szerokie wsparcie algorytmów : Oferuje wiele popularnych algorytmów uczenia maszynowego, w tym regresję klasyfikacji i grupowanie, co daje nam elastyczność w wyborze odpowiedniego modelu dla naszego problemu.
  4. Płynna integracja : Zbudowany na bazie ważnych bibliotek Pythona, takich jak NumPy i SciPy, dzięki czemu pasuje do naszego istniejącego przepływu pracy analizy danych.
  5. Prosty i spójny interfejs : Ta sama prosta składnia, która działa w różnych modelach, ułatwia naukę algorytmów i przełączanie się między nimi.
  6. Łatwe strojenie modelu : Narzędzia takie jak wyszukiwanie siatki pomagają nam dostroić ustawienia naszego modelu, aby poprawić dokładność bez dodatkowych kłopotów.

Korzyści z używania Scikit-learn

  • Przyjazny dla użytkownika : Spójny i prosty interfejs Scikit-learn sprawia, że ​​jest on dostępny dla początkujących, a najlepszy dla ekspertów.
  • Oszczędność czasu: Gotowe narzędzia i algorytmy skracają czas programowania, co pozwala nam skupić się bardziej na rozwiązywaniu problemów niż na kodowaniu szczegółów.
  • Lepsza wydajność modelu : Łatwe w użyciu narzędzia do dostrajania i oceny pomagają poprawić dokładność i niezawodność modelu.
  • Elastyczny i skalowalny : Obsługuje szeroką gamę algorytmów i płynnie integruje się z innymi bibliotekami Pythona, dzięki czemu jest odpowiedni dla projektów dowolnej wielkości.
  • Silne wsparcie społeczności : Duża aktywna społeczność zapewnia regularne aktualizacje obszernej dokumentacji i mnóstwo zasobów, które pomogą nam, gdy utkniemy.
Utwórz quiz