Kép a szerkesztőtől
A Scikit-learn az egyik leggyakrabban használt, pythonba épített gépi tanulási könyvtár. Népszerűsége a könnyű és konzisztens kódszerkezetnek tudható be, amely barátságos a kezdő fejlesztők számára. Ezenkívül magas szintű támogatás áll rendelkezésre, valamint rugalmasság a harmadik féltől származó funkciók integrálásához, ami a könyvtárat robusztussá és termelésre alkalmassá teszi. A könyvtár több gépi tanulási modellt tartalmaz osztályozáshoz, regresszióhoz és klaszterezéshez. Ebben az oktatóanyagban a többosztályos osztályozás problémáját fogjuk megvizsgálni különféle algoritmusokon keresztül. Merüljünk el benne, és készítsük el a scikit-learn modelljeinket.
pip install scikit-learn
A scikit-learn adatkészletek moduljában elérhető „Wine” adatkészletet fogjuk használni. Ez az adatkészlet 178 mintából és összesen 3 osztályból áll. Az adatkészlet már előre feldolgozott és jellemzővektorokká konvertálva van, így közvetlenül felhasználhatjuk modelljeink betanításához.
from sklearn.datasets import load_wine X, y = load_wine(return_X_y=True)
Az adatok 67%-át edzésre, a többi 33%-át pedig tesztelésre tartjuk meg.
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
)
Most 5 különböző, eltérő bonyolultságú modellel fogunk kísérletezni, és kiértékeljük eredményeiket az adatkészletünkön.
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))
teljesítmény
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))
teljesítmény
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
Az 'n_neighbors=2' paraméter megváltoztatásakor a pontosság értékének csökkenését figyeljük meg. Ezért azt mutatja, hogy az adatok elég egyszerűek, és jobb tanulást érnek el egyetlen szomszéddal, amelyet figyelembe kell venni.
teljesítmény
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))
teljesítmény
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))
teljesítmény
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))
teljesítmény
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
Ebben az algoritmusban néhány hiperparaméter hangolást végeztünk a legjobb pontosság elérése érdekében. Meghatároztunk egy paraméterrácsot, amely több értékből áll, amelyek közül választhat az egyes paraméterekhez. Továbbá a Randomized Search CV algoritmust használtuk a modell legjobb paraméterterének megkeresésére. Végül a kapott paramétereket betápláljuk az osztályozóba és betanítjuk a modellt.
Modellek | Pontosság | Észrevételek |
Logisztikus regresszió | 98.30% | Nagy pontosságot ér el. A modell jól általánosítható a tesztadatkészleten. |
K-Legközelebbi szomszédok | 77.96% | Az algoritmus nem képes jól megtanulni az adatábrázolást. |
Naiv Bayes | 100% | A modell kevésbé bonyolult, ezért az abszolút pontosság elérése érdekében túlillesztette az adatokat. |
Döntési fa osztályozó | 96.61% | Megfelelő pontosságot ér el. |
Véletlenszerű erdőosztályozó | 98.30% | Együttes alapú megközelítés lévén jobban teljesít, mint a Decision Tree. A hiperparaméter-hangolás végrehajtása a logisztikus regresszióhoz hasonló pontosságot tesz lehetővé. |
In this tutorial, we learned how to get started to build and train machine learning models in scikit-learn. We implemented and evaluated a few algorithms to get a basic idea about their performance. One can always adopt advanced strategies for feature engineering, hyperparameter tuning or training to improve performance. To read more about the functionalities that scikit-learn offers, head over to the official documentation - Bevezetés a gépi tanulásba a scikit-learn segítségével, Gépi tanulás Pythonban a scikit-learn segítségével.
Yesha Shastri szenvedélyes mesterséges intelligencia-fejlesztő és író, aki a Montréal Egyetemen gépi tanulásból mesterképzést folytat. Yesha érdekli, hogy felelősségteljes mesterséges intelligencia technikákat fedezzen fel a társadalom javát szolgáló kihívások megoldására, és megossza tudását a közösséggel.
- SEO által támogatott tartalom és PR terjesztés. Erősödjön még ma.
- Platoblockchain. Web3 metaverzum intelligencia. Felerősített tudás. Hozzáférés itt.
- Forrás: 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
- Képes
- Rólunk
- Abszolút
- pontosság
- Elérése
- elfogadja
- fejlett
- AI
- algoritmus
- algoritmusok
- már
- mindig
- és a
- megközelítés
- auto
- elérhető
- alapvető
- haszon
- BEST
- Jobb
- Bootstrap
- épít
- épült
- kihívások
- változó
- A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a
- osztályok
- besorolás
- csoportosítás
- kód
- általában
- közösség
- bonyolult
- bonyodalmak
- Fontolja
- következetes
- Összeáll
- tartalmaz
- átalakított
- dátum
- adatkészletek
- döntés
- csökkenés
- Fejlesztő
- fejlesztők
- különböző
- eltérő
- közvetlenül
- dokumentáció
- minden
- Mérnöki
- elég
- Eter (ETH)
- értékelni
- értékelték
- kísérlet
- feltárása
- Funkció
- kevés
- Végül
- Rugalmasság
- erdő
- barátságos
- ból ből
- funkciós
- további
- kap
- szerzés
- nagy
- Rács
- fej
- Magas
- Hogyan
- How To
- HTML
- HTTPS
- Hiperparaméter hangolás
- ötlet
- végre
- importál
- javul
- in
- telepíteni
- integrálni
- IT
- Tart
- TANUL
- tanult
- tanulás
- szint
- könyvtárak
- könyvtár
- gép
- gépi tanulás
- Macro
- KÉSZÍT
- mester
- modell
- modellek
- modul
- több
- a legtöbb
- többszörös
- megfigyelni
- kapott
- Ajánlatok
- hivatalos
- ONE
- paraméter
- paraméterek
- szenvedélyes
- teljesítmény
- előadó
- Előadja
- Plató
- Platón adatintelligencia
- PlatoData
- népszerűség
- Pontosság
- Probléma
- Termelés
- Piton
- Véletlenszerűsített
- Olvass
- képviselet
- felelős
- REST
- Eredmények
- visszatérés
- erős
- scikit elsajátítható
- Keresés
- Megosztás
- Műsorok
- hasonló
- Egyszerű
- egyetlen
- Társadalom
- SOLVE
- néhány
- Hely
- kezdődött
- stratégiák
- struktúra
- megfelelő
- támogatás
- technikák
- teszt
- Tesztelés
- A
- azok
- harmadik fél
- Keresztül
- nak nek
- Végösszeg
- Vonat
- Képzések
- igaz
- oktatói
- használ
- érték
- Értékek
- különféle
- ami
- lesz
- író
- X
- zephyrnet