Bilde av redaktør
Scikit-learn er et av de mest brukte maskinlæringsbibliotekene bygget i python. Dens popularitet kan tilskrives den enkle og konsistente kodestrukturen som er vennlig for nybegynnere. Det er også et høyt nivå av støtte tilgjengelig sammen med fleksibilitet til å integrere tredjepartsfunksjonalitet som gjør biblioteket robust og egnet for produksjon. Biblioteket inneholder flere maskinlæringsmodeller for klassifisering, regresjon og klynging. I denne opplæringen vil vi utforske problemet med flerklasseklassifisering gjennom ulike algoritmer. La oss dykke rett inn i det og bygge våre scikit-learn-modeller.
pip install scikit-learn
Vi vil bruke «Wine»-datasettet som er tilgjengelig i datasettmodulen til scikit-learn. Dette datasettet består av totalt 178 prøver og 3 klasser. Datasettet er allerede forhåndsbehandlet og konvertert til funksjonsvektorer, så vi kan bruke det direkte til å trene modellene våre.
from sklearn.datasets import load_wine X, y = load_wine(return_X_y=True)
Vi vil beholde 67 % av dataene for trening og resten 33 % for testing.
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
)
Nå skal vi eksperimentere med 5 forskjellige modeller med ulik kompleksitet og evaluere resultatene deres på datasettet vårt.
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))
Produksjon
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))
Produksjon
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
Ved å endre parameteren 'n_neighbors=2' observerer vi en reduksjon i verdien av nøyaktighet. Derfor viser det at dataene er enkle nok og oppnår bedre læring med en enkelt nabo å vurdere.
Produksjon
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))
Produksjon
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))
Produksjon
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))
Produksjon
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
I denne algoritmen utførte vi litt hyperparameterinnstilling for å oppnå best mulig nøyaktighet. Vi definerte et parameterrutenett bestående av flere verdier å velge mellom for hver parameter. Videre brukte vi Randomized Search CV-algoritmen for å søke etter den beste parameterplassen for modellen. Til slutt mater vi de oppnådde parameterne til klassifisereren og trener modellen.
Modeller | Nøyaktighet | Observasjoner |
Logistisk regresjon | 98.30% | Oppnår stor nøyaktighet. Modellen er i stand til å generalisere godt på testdatasettet. |
K-nærmeste naboer | 77.96% | Algoritmen er ikke i stand til å lære datarepresentasjonen godt. |
Naiv Bayes | 100% | Modellen er mindre kompleks, og derfor overpasser den dataene for å oppnå absolutt nøyaktighet. |
Decision Tree Classifier | 96.61% | Oppnår anstendig nøyaktighet. |
Tilfeldig skogklassifisering | 98.30% | Som en ensemblebasert tilnærming gir den bedre resultater enn Decision Tree. Ved å utføre hyperparameterinnstilling oppnår den samme nøyaktighet som logistisk regresjon. |
I denne opplæringen lærte vi hvordan du kommer i gang med å bygge og trene maskinlæringsmodeller i scikit-learn. Vi implementerte og evaluerte noen få algoritmer for å få en grunnleggende idé om ytelsen deres. Man kan alltid ta i bruk avanserte strategier for funksjonsutvikling, hyperparameterinnstilling eller trening for å forbedre ytelsen. For å lese mer om funksjonene som scikit-learn tilbyr, gå til den offisielle dokumentasjonen - Introduksjon til maskinlæring med scikit-learn, Maskinlæring i Python med scikit-learn.
Yesha Shastri er en lidenskapelig AI-utvikler og forfatter som studerer mastergrad i maskinlæring fra Université de Montréal. Yesha er fascinert av å utforske ansvarlige AI-teknikker for å løse utfordringer som gagner samfunnet og dele hennes lærdom med samfunnet.
- SEO-drevet innhold og PR-distribusjon. Bli forsterket i dag.
- Platoblokkkjede. Web3 Metaverse Intelligence. Kunnskap forsterket. Tilgang her.
- kilde: 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
- I stand
- Om oss
- Absolute
- nøyaktighet
- Oppnå
- adoptere
- avansert
- AI
- algoritme
- algoritmer
- allerede
- alltid
- og
- tilnærming
- auto
- tilgjengelig
- grunnleggende
- nytte
- BEST
- Bedre
- Bootstrap
- bygge
- bygget
- utfordringer
- endring
- Velg
- klasser
- klassifisering
- gruppering
- kode
- vanligvis
- samfunnet
- komplekse
- kompleksiteten
- Vurder
- konsistent
- Består
- inneholder
- konvertert
- dato
- datasett
- avgjørelse
- redusere
- Utvikler
- utviklere
- forskjellig
- ulik
- direkte
- dokumentasjon
- hver enkelt
- Ingeniørarbeid
- nok
- Eter (ETH)
- evaluere
- evaluert
- eksperiment
- utforske
- Trekk
- Noen få
- Endelig
- fleksibilitet
- skog
- vennlig
- fra
- funksjonalitet
- videre
- få
- få
- flott
- Grid
- hode
- Høy
- Hvordan
- Hvordan
- HTML
- HTTPS
- Innstilling av hyperparameter
- Tanken
- implementert
- importere
- forbedre
- in
- installere
- integrere
- IT
- Hold
- LÆRE
- lært
- læring
- Nivå
- bibliotekene
- Bibliotek
- maskin
- maskinlæring
- Makro
- GJØR AT
- mestere
- modell
- modeller
- moduler
- mer
- mest
- flere
- observere
- innhentet
- Tilbud
- offisiell
- ONE
- parameter
- parametere
- lidenskapelig
- ytelse
- utfører
- utfører
- plato
- Platon Data Intelligence
- PlatonData
- popularitet
- Precision
- Problem
- Produksjon
- Python
- randomisert
- Lese
- representasjon
- ansvarlig
- REST
- Resultater
- retur
- robust
- scikit lære
- Søk
- Del
- Viser
- lignende
- Enkelt
- enkelt
- Samfunnet
- LØSE
- noen
- Rom
- startet
- strategier
- struktur
- egnet
- støtte
- teknikker
- test
- Testing
- De
- deres
- tredjeparts
- Gjennom
- til
- Totalt
- Tog
- Kurs
- sant
- tutorial
- bruke
- verdi
- Verdier
- ulike
- hvilken
- vil
- forfatter
- X
- zephyrnet