Imagine de editor
Scikit-learn este una dintre cele mai frecvent utilizate biblioteci de învățare automată construite în python. Popularitatea sa poate fi atribuită structurii sale de cod ușoare și consistente, care este prietenoasă pentru dezvoltatorii începători. De asemenea, există un nivel ridicat de asistență disponibil, împreună cu flexibilitatea de a integra funcționalități terțe, ceea ce face biblioteca robustă și potrivită pentru producție. Biblioteca conține mai multe modele de învățare automată pentru clasificare, regresie și grupare. În acest tutorial, vom explora problema clasificării multiclase prin diverși algoritmi. Să ne aruncăm direct în ea și să construim modelele noastre scikit-learn.
pip install scikit-learn
Vom folosi setul de date „Wine” disponibil în modulul de seturi de date al scikit-learn. Acest set de date este format din 178 de eșantioane și 3 clase în total. Setul de date este deja preprocesat și convertit în vectori de caracteristici, prin urmare, îl putem folosi direct pentru a ne antrena modelele.
from sklearn.datasets import load_wine X, y = load_wine(return_X_y=True)
Vom păstra 67% din date pentru antrenament și restul 33% pentru testare.
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
)
Acum, vom experimenta cu 5 modele diferite de complexități diferite și vom evalua rezultatele lor pe setul nostru de date.
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))
producție
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))
producție
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
La modificarea parametrului 'n_neighbors=2' observăm o scădere a valorii preciziei. Prin urmare, arată că datele sunt suficient de simple și realizează o învățare mai bună cu un singur vecin de luat în considerare.
producție
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))
producție
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))
producție
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))
producție
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
În acest algoritm, am efectuat o reglare hiperparametrică pentru a obține cea mai bună acuratețe. Am definit o grilă de parametri formată din mai multe valori din care să alegeți pentru fiecare parametru. În plus, am folosit algoritmul de căutare aleatorie CV pentru a căuta cel mai bun spațiu de parametri pentru model. În cele din urmă, alimentăm parametrii obținuți către clasificator și antrenăm modelul.
modele | Acuratete | Observatii |
Regresie logistică | 98.30% | Obține o mare precizie. Modelul este capabil să se generalizeze bine pe setul de date de testare. |
K-Cei mai apropiati vecini | 77.96% | Algoritmul nu este capabil să învețe bine reprezentarea datelor. |
Bayes naiv | 100% | Modelul este mai puțin complex, prin urmare, supraajustează datele pentru a obține o acuratețe absolută. |
Clasificator de arbore de decizie | 96.61% | Obține o precizie decentă. |
Clasificator de pădure aleatoriu | 98.30% | Fiind o abordare bazată pe ansamblu, are performanțe mai bune decât Decision Tree. Efectuarea reglajului hiperparametrilor face ca acesta să atingă o precizie similară regresiei logistice. |
În acest tutorial, am învățat cum să începem să construim și să antrenăm modele de învățare automată în scikit-learn. Am implementat și evaluat câțiva algoritmi pentru a ne face o idee de bază despre performanța lor. Se pot adopta oricând strategii avansate pentru ingineria caracteristicilor, reglarea hiperparametrilor sau antrenament pentru a îmbunătăți performanța. Pentru a citi mai multe despre funcționalitățile oferite de scikit-learn, accesați documentația oficială - Introducere în învățarea automată cu scikit-learn, Învățare automată în Python cu scikit-learn.
Yesha Shastri este un dezvoltator și scriitor pasionat de inteligență artificială, care urmează un master în învățare automată de la Université de Montréal. Yesha este intrigata să exploreze tehnici responsabile de inteligență artificială pentru a rezolva provocările de care beneficiază societatea și pentru a împărtăși comunitatea cunoștințele sale.
- Distribuție de conținut bazat pe SEO și PR. Amplifică-te astăzi.
- Platoblockchain. Web3 Metaverse Intelligence. Cunoștințe amplificate. Accesați Aici.
- Sursa: 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
- Capabil
- Despre Noi
- Absolut
- precizie
- Obține
- adopta
- avansat
- AI
- Algoritmul
- algoritmi
- deja
- mereu
- și
- abordare
- Auto
- disponibil
- de bază
- beneficia
- CEL MAI BUN
- Mai bine
- Bootstrap
- construi
- construit
- provocări
- schimbarea
- Alege
- clase
- clasificare
- clustering
- cod
- în mod obișnuit
- comunitate
- complex
- complexități
- Lua în considerare
- consistent
- Constând
- conține
- convertit
- de date
- seturi de date
- decizie
- scădea
- Dezvoltator
- Dezvoltatorii
- diferit
- diferite
- direct
- documentaţie
- fiecare
- Inginerie
- suficient de
- Eter (ETH)
- evalua
- evaluat
- experiment
- explora
- Caracteristică
- puțini
- În cele din urmă
- Flexibilitate
- pădure
- prietenos
- din
- funcționalități
- mai mult
- obține
- obtinerea
- mare
- Grilă
- cap
- Înalt
- Cum
- Cum Pentru a
- HTML
- HTTPS
- Reglarea hiperparametrului
- idee
- implementat
- import
- îmbunătăţi
- in
- instala
- integra
- IT
- A pastra
- AFLAȚI
- învățat
- învăţare
- Nivel
- biblioteci
- Bibliotecă
- maşină
- masina de învățare
- Macro
- FACE
- studii de masterat
- model
- Modele
- modul
- mai mult
- cele mai multe
- multiplu
- observa
- obținut
- promoții
- oficial
- ONE
- parametru
- parametrii
- pasionat
- performanță
- efectuarea
- efectuează
- Plato
- Informații despre date Platon
- PlatoData
- popularitate
- Precizie
- Problemă
- producere
- Piton
- randomized
- Citeste
- reprezentare
- responsabil
- REST
- REZULTATE
- reveni
- robust
- scikit-learn
- Caută
- Distribuie
- Emisiuni
- asemănător
- simplu
- singur
- Societate
- REZOLVAREA
- unele
- Spaţiu
- început
- strategii
- structura
- potrivit
- a sustine
- tehnici de
- test
- Testarea
- lor
- terț
- Prin
- la
- Total
- Tren
- Pregătire
- adevărat
- tutorial
- utilizare
- valoare
- Valori
- diverse
- care
- voi
- scriitor
- X
- zephyrnet