Obraz autorstwa redaktora
Scikit-learn to jedna z najczęściej używanych bibliotek uczenia maszynowego zbudowana w Pythonie. Jego popularność można przypisać łatwej i spójnej strukturze kodu, która jest przyjazna dla początkujących programistów. Dostępny jest również wysoki poziom wsparcia wraz z elastycznością integracji funkcji stron trzecich, co czyni bibliotekę solidną i odpowiednią do produkcji. Biblioteka zawiera wiele modeli uczenia maszynowego do klasyfikacji, regresji i grupowania. W tym samouczku przyjrzymy się problemowi klasyfikacji wieloklasowej za pomocą różnych algorytmów. Zanurzmy się w nim od razu i zbudujmy nasze modele nauki scikit.
pip install scikit-learn
Wykorzystamy zestaw danych „Wine” dostępny w module datasets scikit-learn. Ten zbiór danych składa się łącznie ze 178 próbek i 3 klas. Zbiór danych jest już wstępnie przetworzony i przekonwertowany na wektory cech, dzięki czemu możemy go bezpośrednio użyć do szkolenia naszych modeli.
from sklearn.datasets import load_wine X, y = load_wine(return_X_y=True)
Będziemy przechowywać 67% danych do trenowania, a pozostałe 33% do testowania.
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.33, random_state=42
)
Teraz poeksperymentujemy z 5 różnymi modelami o różnej złożoności i ocenimy ich wyniki na naszym zbiorze danych.
model_lr = LogisticRegression()
model_lr.fit(X_train, y_train)
y_pred_lr = model_lr.predict(X_test) print("Accuracy Score: ", accuracy_score(y_pred_lr, y_test))
print(classification_report(y_pred_lr, y_test))
Wydajność
Accuracy Score: 0.9830508474576272 precision recall f1-score support 0 1.00 0.95 0.98 21 1 0.96 1.00 0.98 23 2 1.00 1.00 1.00 15 accuracy 0.98 59 macro avg 0.99 0.98 0.98 59
weighted avg 0.98 0.98 0.98 59
model_knn = KNeighborsClassifier(n_neighbors=1)
model_knn.fit(X_train, y_train)
y_pred_knn = model_knn.predict(X_test) print("Accuracy Score:", accuracy_score(y_pred_knn, y_test))
print(classification_report(y_pred_knn, y_test))
Wydajność
Accuracy Score: 0.7796610169491526 precision recall f1-score support 0 0.90 0.78 0.84 23 1 0.75 0.82 0.78 22 2 0.67 0.71 0.69 14 accuracy 0.78 59 macro avg 0.77 0.77 0.77 59
weighted avg 0.79 0.78 0.78 59
Po zmianie parametru 'n_neighbors=2' obserwujemy spadek wartości dokładności. W związku z tym pokazuje, że dane są wystarczająco proste i umożliwiają lepsze uczenie się z jednym sąsiadem do rozważenia.
Wydajność
Accuracy Score: 0.6949152542372882 precision recall f1-score support 0 0.90 0.72 0.80 25 1 0.75 0.69 0.72 26 2 0.33 0.62 0.43 8 accuracy 0.69 59 macro avg 0.66 0.68 0.65 59
weighted avg 0.76 0.69 0.72 59
from sklearn.naive_bayes import GaussianNB model_nb = GaussianNB()
model_nb.fit(X_train, y_train)
y_pred_nb = model_nb.predict(X_test) print("Accuracy Score:", accuracy_score(y_pred_nb, y_test))
print(classification_report(y_pred_nb, y_test))
Wydajność
Accuracy Score: 1.0 precision recall f1-score support 0 1.00 1.00 1.00 20 1 1.00 1.00 1.00 24 2 1.00 1.00 1.00 15 accuracy 1.00 59 macro avg 1.00 1.00 1.00 59
weighted avg 1.00 1.00 1.00 59
from sklearn.tree import DecisionTreeClassifier model_dtclassifier = DecisionTreeClassifier()
model_dtclassifier.fit(X_train, y_train)
y_pred_dtclassifier = model_dtclassifier.predict(X_test) print("Accuracy Score:", accuracy_score(y_pred_dtclassifier, y_test))
print(classification_report(y_pred_dtclassifier, y_test))
Wydajność
Accuracy Score: 0.9661016949152542 precision recall f1-score support 0 0.95 0.95 0.95 20 1 1.00 0.96 0.98 25 2 0.93 1.00 0.97 14 accuracy 0.97 59 macro avg 0.96 0.97 0.97 59
weighted avg 0.97 0.97 0.97 59
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import RandomizedSearchCV def get_best_parameters(): params = { "n_estimators": [10, 50, 100], "max_features": ["auto", "sqrt", "log2"], "max_depth": [5, 10, 20, 50], "min_samples_split": [2, 4, 6], "min_samples_leaf": [2, 4, 6], "bootstrap": [True, False], } model_rfclassifier = RandomForestClassifier(random_state=42) rf_randomsearch = RandomizedSearchCV( estimator=model_rfclassifier, param_distributions=params, n_iter=5, cv=3, verbose=2, random_state=42, ) rf_randomsearch.fit(X_train, y_train) best_parameters = rf_randomsearch.best_params_ print("Best Parameters:", best_parameters) return best_parameters parameters_rfclassifier = get_best_parameters() model_rfclassifier = RandomForestClassifier( **parameters_rfclassifier, random_state=42
) model_rfclassifier.fit(X_train, y_train) y_pred_rfclassifier = model_rfclassifier.predict(X_test) print("Accuracy Score:", accuracy_score(y_pred_rfclassifier, y_test))
print(classification_report(y_pred_rfclassifier, y_test))
Wydajność
Best Parameters: {'n_estimators': 100, 'min_samples_split': 6, 'min_samples_leaf': 4, 'max_features': 'log2', 'max_depth': 5, 'bootstrap': True}
Accuracy Score: 0.9830508474576272 precision recall f1-score support 0 1.00 0.95 0.98 21 1 0.96 1.00 0.98 23 2 1.00 1.00 1.00 15 accuracy 0.98 59 macro avg 0.99 0.98 0.98 59
weighted avg 0.98 0.98 0.98 59
W tym algorytmie wykonaliśmy pewne strojenie hiperparametrów, aby osiągnąć najlepszą dokładność. Zdefiniowaliśmy siatkę parametrów składającą się z wielu wartości do wyboru dla każdego parametru. Ponadto użyliśmy algorytmu Randomized Search CV, aby wyszukać najlepszą przestrzeń parametrów dla modelu. Na koniec podajemy otrzymane parametry do klasyfikatora i trenujemy model.
modele | Dokładność | Komentarze |
Regresja logistyczna | 98.30% | Osiąga dużą dokładność. Model jest w stanie dobrze uogólnić na testowym zbiorze danych. |
K-Najbliżsi sąsiedzi | 77.96% | Algorytm nie jest w stanie dobrze nauczyć się reprezentacji danych. |
Naiwny Bayes | 100% | Model jest mniej złożony, dlatego też dopasowuje dane w celu uzyskania absolutnej dokładności. |
Klasyfikator drzewa decyzyjnego | 96.61% | Osiąga przyzwoitą celność. |
Losowy klasyfikator lasu | 98.30% | Będąc podejściem opartym na zespołach, działa lepiej niż drzewo decyzyjne. Dostrajanie hiperparametrów pozwala uzyskać dokładność zbliżoną do regresji logistycznej. |
W tym samouczku dowiedzieliśmy się, jak rozpocząć tworzenie i trenowanie modeli uczenia maszynowego w środowisku scikit-learn. Zaimplementowaliśmy i oceniliśmy kilka algorytmów, aby uzyskać podstawowe pojęcie o ich wydajności. Zawsze można przyjąć zaawansowane strategie inżynierii funkcji, dostrajania hiperparametrów lub szkolenia w celu poprawy wydajności. Aby przeczytać więcej o funkcjonalnościach oferowanych przez scikit-learn, przejdź do oficjalnej dokumentacji - Wprowadzenie do uczenia maszynowego za pomocą scikit-learn, Uczenie maszynowe w Pythonie z scikit-learn.
Jesza Szastri jest pasjonatem sztucznej inteligencji i pisarzem, który zdobywa tytuł magistra uczenia maszynowego na Université de Montréal. Yesha jest zaintrygowana badaniem odpowiedzialnych technik sztucznej inteligencji, aby rozwiązywać problemy, które przynoszą korzyści społeczeństwu, i dzielić się swoją wiedzą ze społecznością.
- Dystrybucja treści i PR oparta na SEO. Uzyskaj wzmocnienie już dziś.
- Platoblockchain. Web3 Inteligencja Metaverse. Wzmocniona wiedza. Dostęp tutaj.
- Źródło: https://www.kdnuggets.com/getting-started-with-scikit-learn-for-classification-in-machine-learning.html?utm_source=rss&utm_medium=rss&utm_campaign=getting-started-with-scikit-learn-for-classification-in-machine-learning
- 1
- 10
- 100
- 67
- 77
- 84
- 9
- 98
- a
- Zdolny
- O nas
- bezwzględny
- precyzja
- Osiągać
- przyjąć
- zaawansowany
- AI
- algorytm
- Algorytmy
- już
- zawsze
- i
- podejście
- samochód
- dostępny
- podstawowy
- korzyści
- BEST
- Ulepsz Swój
- Bootstrap
- budować
- wybudowany
- wyzwania
- wymiana pieniędzy
- Dodaj
- Klasy
- klasyfikacja
- klastrowanie
- kod
- powszechnie
- społeczność
- kompleks
- złożoności
- Rozważać
- zgodny
- Składający się
- zawiera
- przeliczone
- dane
- zbiory danych
- decyzja
- spadek
- Deweloper
- deweloperzy
- różne
- różni się
- bezpośrednio
- dokumentacja
- każdy
- Inżynieria
- dość
- Eter (ETH)
- oceniać
- oceniane
- eksperyment
- odkryj
- Cecha
- kilka
- W końcu
- Elastyczność
- las
- przyjazny
- od
- funkcjonalności
- dalej
- otrzymać
- miejsce
- wspaniały
- Krata
- głowa
- Wysoki
- W jaki sposób
- How To
- HTML
- HTTPS
- Dostrajanie hiperparametrów
- pomysł
- realizowane
- importować
- podnieść
- in
- zainstalować
- integrować
- IT
- Trzymać
- UCZYĆ SIĘ
- dowiedziałem
- nauka
- poziom
- biblioteki
- Biblioteka
- maszyna
- uczenie maszynowe
- Macro
- WYKONUJE
- mistrzowski
- model
- modele
- moduł
- jeszcze
- większość
- wielokrotność
- obserwować
- uzyskane
- Oferty
- urzędnik
- ONE
- parametr
- parametry
- namiętny
- jest gwarancją najlepszej jakości, które mogą dostarczyć Ci Twoje monitory,
- wykonywania
- wykonuje
- plato
- Analiza danych Platona
- PlatoDane
- popularność
- Detaliczność
- Problem
- Produkcja
- Python
- Randomizowane
- Czytaj
- reprezentacja
- odpowiedzialny
- REST
- Efekt
- powrót
- krzepki
- nauka-scikit
- Szukaj
- Share
- Targi
- podobny
- Prosty
- pojedynczy
- Społeczeństwo
- ROZWIĄZANIA
- kilka
- Typ przestrzeni
- rozpoczęty
- strategie
- Struktura
- odpowiedni
- wsparcie
- Techniki
- test
- Testowanie
- Połączenia
- ich
- innych firm
- Przez
- do
- Kwota produktów:
- Pociąg
- Trening
- prawdziwy
- Tutorial
- posługiwać się
- wartość
- Wartości
- różnorodny
- który
- będzie
- pisarz
- X
- zefirnet