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.
Pythonfrom 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:
Ładowanie zestawu danychCzasami 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.
Pythonfrom 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.
Pythonprint('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
Kształt podzielonych danychKrok 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.
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
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:
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.
from sklearn.linear_model import LogisticRegression log_reg = LogisticRegression(max_iter=200) log_reg.fit(X_train y_train)
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.
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.
Pythonfrom 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]]
Pythonsample = [[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:
- 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.
- Ł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.
- 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.
- 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.
- 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.
- Ł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.