logo

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.

metody łańcuchowe Java

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('nType of X is:' type(X)) print('nFirst 5 rows of X:n' X[:5]) 

Wyjście: 

model1' title=Ł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ść.

posortuj tablicę Java

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:

jak przekonwertować str na int
model2' loading='lazy' title=Kształ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' loading='lazy' title=

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) 
model4' loading='lazy' title=Szkolenie 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:

maszynopis pętli foreach

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