Scikit-learn je odprtokodna knjižnica Python, ki poenostavlja proces gradnje modelov strojnega učenja. Ponuja čist in dosleden vmesnik, ki tako začetnikom kot izkušenim uporabnikom pomaga pri učinkovitem delu.
- Podpira naloge, kot je združevanje v gruče klasifikacijske regresije in predprocesiranje
- Omogoča hitro in zanesljivo izdelavo modela
- Zagotavlja orodja, pripravljena za uporabo, za usposabljanje in vrednotenje
- Zmanjša kompleksnost z izogibanjem ročnemu izvajanju algoritmov
Namestitev in uporaba Scikit-learn
Preden začnemo graditi modele, jih moramo namestiti Scikit-lear. Zahteva Python 3.8 ali novejši in je odvisen od dveh pomembnih knjižnic: NumPy in SciPy. Prepričajte se, da so ti najprej nameščeni.
Če želite namestiti Scikit-learn, zaženite naslednji ukaz:
pip namestitev -U scikit-learn
S tem boste prenesli in namestili najnovejšo različico Scikit-learn skupaj z njenimi odvisnostmi. Oglejmo si različne korake, vključene v proces gradnje modela z uporabo knjižnice Scikit-learn.
1. korak: nalaganje nabora podatkov
Nabor podatkov je sestavljen iz:
- Lastnosti (X): Vhodne spremenljivke, ki opisujejo podatke
- Cilj (y): Vrednost, ki jo želimo napovedati
Scikit-learn ponuja vgrajene nabore podatkov, kot sta Iris Digits in Boston Housing. Uporaba nabora podatkov Iris:
- load_iris() naloži podatke
- X shranjuje podatke o funkcijah
- y shrani ciljne oznake
- feature_names in target_names dajejo opisna imena
Pregledamo lahko prvih nekaj vrstic, da razumemo strukturo. Za nabore podatkov po meri se Panda običajno uporablja za nalaganje zunanjih datotek, kot so CSV.
abeceda s številkamiPython
from 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])
Izhod:
Nalaganje nabora podatkovVčasih moramo delati na lastnih podatkih po meri, nato pa naložimo zunanji nabor podatkov. Za to lahko uporabimo knjižnica pand za enostavno nalaganje in upravljanje naborov podatkov.
Za to se lahko obrnete na naš članek o Kako uvoziti datoteko csv v pandas ?
2. korak: razdelitev nabora podatkov
Za pošteno oceno modela podatke razdelimo na:
- Komplet za usposabljanje: uporablja se za usposabljanje modela
- Testni niz: uporablja se za oceno, kako dobro model posplošuje
Z uporabo train_test_split razdelimo nabor podatkov Iris tako, da je 60 % za usposabljanje in 40 % za testiranje (test_size=0,4). random_state=1 zagotavlja ponovljivost.
Po razdelitvi dobimo:
- X_train y_train -> Podatki o vadbi
- X_test y_test -> Podatki testiranja
Preverjanje oblik zagotavlja, da so podatki pravilno razdeljeni.
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)
Zdaj pa preverimo Oblike razdeljenih podatkov, da zagotovite, da imata oba niza pravilna razmerja podatkov, s čimer se izognete morebitnim napakam pri vrednotenju ali usposabljanju modela.
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)
Izhod:
Oblika razdeljenih podatkov3. korak: Ravnanje s kategoričnimi podatki
Algoritmi strojnega učenja delujejo s številskimi vhodi, zato je treba kategorične (besedilne) podatke pretvoriti v številke. Če modeli niso pravilno kodirani, si lahko kategorije napačno razlagajo. Scikit-learn ponuja več načinov kodiranja:
1. Kodiranje oznak : vsako kategorijo pretvori v edinstveno celo število. Na primer v stolpcu s kategorijami, kot so 'mačka', 'pes' in 'ptica', bi jih pretvoril v 0 1 oziroma 2. Ta metoda deluje dobro, če imajo kategorije smiseln vrstni red, kot sta Nizko Srednje in Visoko.
- LabelEncoder(): Inicializiran je za ustvarjanje predmeta kodirnika, ki bo pretvoril kategorične vrednosti v številske oznake.
- fit_transform(): Ta metoda najprej prilagodi kodirnik kategoričnim podatkom in nato pretvori kategorije v ustrezne numerične oznake.
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)
Izhod:
sonu nigam
Kodirana funkcija: [1 2 2 1 0]
2. One-Hot Encoding : One-Hot Encoding ustvari ločene binarne stolpce za vsako kategorijo. To je uporabno, kadar kategorije nimajo naravnega vrstnega reda. Primer: mačka pes ptica -> 3 novi stolpci (mačka/pes/ptica) z 1 in 0.
- Vnos je treba preoblikovati v 2D polje
- OneHotEncoder(sparse_output=False) ustvari binarne stolpce
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)
Izhod:
Poleg Label Encoding in One-Hot Encoding obstajajo tudi druge tehnike, npr Srednje kodiranje .
4. korak: Usposabljanje modela
Zdaj, ko so naši podatki pripravljeni, je čas za usposabljanje modela strojnega učenja. Scikit-learn ima veliko algoritmov z doslednim vmesnikom za napovedovanje in vrednotenje usposabljanja. Tukaj bomo uporabili Logistična regresija kot primer.
Opomba : Ne bomo se spuščali v podrobnosti delovanja algoritma, saj nas zanima le razumevanje njegove izvedbe.
- log_reg = LogisticRegression(max_iter=200): Ustvarjanje objekta klasifikatorja logistične regresije.
- log_reg.fit(X_train y_train): Uporaba tega logistični regresijski model prilagodi parametre modela, da kar najbolje ustrezajo podatkom.
from sklearn.linear_model import LogisticRegression log_reg = LogisticRegression(max_iter=200) log_reg.fit(X_train y_train)
Usposabljanje z uporabo logistične regresije.5. korak: Naredite napovedi
Ko smo enkrat usposobljeni, uporabimo model za napovedovanje testnih podatkov X_test s klicem metode napovedovanja. To vrne predvidene oznake y_pred.
- log_reg.predict: Za predvidevanje oznak za testne podatke X_test uporablja model naučene logistične regresije.
y_pred = log_reg.predict(X_test)
6. korak: Ocenjevanje točnosti modela
Preverite, kako uspešen je naš model, tako da primerjate y_test in y_pred. Tukaj uporabljamo metodo accuracy_score metričnega modula.
Pythonfrom sklearn import metrics print('Logistic Regression model accuracy:' metrics.accuracy_score(y_test y_pred))
Izhod:
Natančnost modela logistične regresije: 0,9666666666666667
Zdaj želimo, da naš model naredi napovedi na novih vzorčnih podatkih. Nato lahko vzorčni vnos preprosto posredujemo na enak način, kot posredujemo katero koli matriko lastnosti. Tukaj smo ga uporabili kot vzorec = [[3 5 4 2] [2 3 5 4]]
kaj je oddaja imenikaPython
sample = [[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)
Izhod:
Napovedi: [np.str_('virginica') np.str_('virginica')]
Značilnosti Scikit-learn
Scikit-learn se uporablja, ker omogoča preprosto in učinkovito izdelavo modelov strojnega učenja. Tukaj je nekaj pomembnih razlogov:
- Orodja, pripravljena za uporabo : Zagotavlja vgrajene funkcije za običajna opravila, kot so modeli za usposabljanje za predprocesiranje podatkov in napovedi. To prihrani čas, saj se izognete potrebi po kodiranju algoritmov od začetka.
- Enostavno ocenjevanje modela : Z orodji, kot sta navzkrižno preverjanje in meritve uspešnosti, pomaga izmeriti, kako dobro deluje naš model, in prepoznati področja za izboljšave.
- Široka podpora za algoritem : ponuja številne priljubljene algoritme strojnega učenja, vključno s klasifikacijsko regresijo in združevanjem v gruče, kar nam daje prilagodljivost pri izbiri pravega modela za naš problem.
- Gladka integracija : Zgrajen na podlagi pomembnih knjižnic Python, kot sta NumPy in SciPy, tako da se ujema z našim obstoječim potekom dela za analizo podatkov.
- Preprost in dosleden vmesnik : ista enostavna sintaksa deluje v različnih modelih, kar pomaga pri lažjem učenju in preklapljanju med algoritmi.
- Enostavno prilagajanje modela : Orodja, kot je iskanje po mreži, nam pomagajo natančno prilagoditi nastavitve našega modela, da izboljšamo natančnost brez dodatnih težav.
Prednosti uporabe Scikit-learn
- Uporabniku prijazen : Zaradi doslednega in preprostega vmesnika Scikit-learn je dostopen za začetnike in najboljši za strokovnjake.
- Prihranek časa: Vnaprej zgrajena orodja in algoritmi skrajšajo čas razvoja, kar nam omogoča, da se bolj osredotočimo na reševanje problemov kot na podrobnosti kodiranja.
- Boljša zmogljivost modela : Enostavna orodja za nastavitev in vrednotenje pomagajo izboljšati točnost in zanesljivost modela.
- Prilagodljiv in razširljiv : Podpira široko paleto algoritmov in se gladko integrira z drugimi knjižnicami Python, zaradi česar je primeren za projekte vseh velikosti.
- Močna podpora skupnosti : Velika aktivna skupnost zagotavlja redne posodobitve obsežne dokumentacije in veliko virov za pomoč, ko se zataknemo.