Scikit-learn je Python biblioteka otvorenog koda koja pojednostavljuje proces izgradnje modela strojnog učenja. Nudi čisto i dosljedno sučelje koje pomaže početnicima i iskusnim korisnicima da rade učinkovito.
- Podržava zadatke kao što su klasteriranje klasifikacijske regresije i pretprocesiranje
- Omogućuje brzu i pouzdanu izradu modela
- Pruža alate spremne za korištenje za obuku i evaluaciju
- Smanjuje složenost izbjegavanjem ručne implementacije algoritama
Instaliranje i korištenje Scikit-learn-a
Prije nego počnemo graditi modele moramo instalirati Scikit-nauči. Zahtijeva Python 3.8 ili noviji i ovisi o dvije važne biblioteke: NumPy i SciPy. Prvo provjerite jesu li instalirani.
Da biste instalirali Scikit-learn, pokrenite sljedeću naredbu:
pip instalirati -U scikit-learn
Ovo će preuzeti i instalirati najnoviju verziju Scikit-learn-a zajedno s njegovim ovisnostima. Pogledajmo različite korake uključene u proces izgradnje modela pomoću Scikit-learn knjižnice.
do while petlja java
Korak 1: Učitavanje skupa podataka
Skup podataka sastoji se od:
- Značajke (X): Ulazne varijable koje opisuju podatke
- Cilj (y): Vrijednost koju želimo predvidjeti
Scikit-learn pruža ugrađene skupove podataka kao što su Iris Digits i Boston Housing. Korištenje skupa podataka Iris:
- load_iris() učitava podatke
- X pohranjuje podatke o značajkama
- y pohranjuje ciljne oznake
- feature_names i target_names daju opisna imena
Možemo pregledati prvih nekoliko redaka da bismo razumjeli strukturu. Za prilagođene skupove podataka Panda se obično koristi za učitavanje vanjskih datoteka kao što su CSV.
Pythonfrom 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])
Izlaz:
Učitavanje skupa podatakaPonekad moramo raditi na vlastitim prilagođenim podacima, a zatim učitavamo vanjski skup podataka. Za ovo možemo koristiti knjižnica pandi za jednostavno učitavanje i rukovanje skupovima podataka.
Za to možete pogledati naš članak o Kako uvesti csv datoteku u pandas ?
Korak 2: Dijeljenje skupa podataka
Kako bismo pravedno ocijenili model, podatke dijelimo na:
- Set za obuku: Koristi se za obuku modela
- Skup za testiranje: Koristi se za procjenu koliko dobro model generalizira
Pomoću train_test_split dijelimo skup podataka šarenice tako da je 60% za obuku, a 40% za testiranje (test_size=0,4). random_state=1 osigurava ponovljivost.
Nakon cijepanja dobivamo:
- X_train y_train -> Podaci o treningu
- X_test y_test -> Podaci o testiranju
Provjera oblika osigurava da su podaci ispravno podijeljeni.
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)
Sada provjerimo Oblici podijeljenih podataka kako bi se osiguralo da oba skupa imaju točne omjere podataka izbjegavajući potencijalne pogreške u evaluaciji ili obuci 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)
Izlaz:
Oblik podijeljenih podatakaKorak 3: Rukovanje kategoričkim podacima
Algoritmi strojnog učenja rade s numeričkim unosima pa se kategorički (tekstualni) podaci moraju pretvoriti u brojeve. Ako nisu ispravno kodirani, modeli mogu pogrešno protumačiti kategorije. Scikit-learn pruža više metoda kodiranja:
1. Kodiranje oznake : Pretvara svaku kategoriju u jedinstveni cijeli broj. Na primjer, u stupcu s kategorijama poput 'mačka', 'pas' i 'ptica' pretvorit će ih u 0 1 odnosno 2. Ova metoda dobro funkcionira kada kategorije imaju smislen redoslijed kao što su Nisko Srednje i Visoko.
- LabelEncoder(): Inicijaliziran je za stvaranje objekta kodera koji će pretvoriti kategoričke vrijednosti u numeričke oznake.
- fit_transform(): Ova metoda najprije prilagođava koder kategoričkim podacima, a zatim transformira kategorije u odgovarajuće numeričke 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)
Izlaz:
primjer java karte
Kodirana značajka: [1 2 2 1 0]
2. One-Hot kodiranje : One-Hot Encoding stvara zasebne binarne stupce za svaku kategoriju. Ovo je korisno kada kategorije nemaju prirodni poredak. Primjer: mačka pas ptica -> 3 nova stupca (mačka/pas/ptica) s 1 i 0.
- Unos se mora preoblikovati u 2D niz
- OneHotEncoder(sparse_output=False) generira binarne stupce
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)
Izlaz:
Osim Label Encoding i One-Hot Encoding postoje i druge tehnike poput Srednje kodiranje .
Korak 4: Obuka modela
Sada kada su naši podaci spremni, vrijeme je za obuku modela strojnog učenja. Scikit-learn ima mnogo algoritama s dosljednim sučeljem za predviđanje i procjenu obuke. Ovdje ćemo koristiti Logistička regresija kao primjer.
Bilješka : Nećemo ulaziti u detalje kako algoritam radi jer nas zanima samo razumijevanje njegove implementacije.
- log_reg = LogisticRegression(max_iter=200): Stvaranje objekta klasifikatora logističke regresije.
- log_reg.fit(X_train y_train): Koristeći ovo logistički regresijski model prilagođava parametre modela kako bi najbolje odgovarali podacima.
from sklearn.linear_model import LogisticRegression log_reg = LogisticRegression(max_iter=200) log_reg.fit(X_train y_train)
Obuka korištenjem logističke regresije.Korak 5: Izradite predviđanja
Jednom obučeni koristimo model za izradu predviđanja na testnim podacima X_test pozivanjem metode predviđanja. Ovo vraća predviđene oznake y_pred.
- log_reg.predikt: Koristi obučeni logistički regresijski model za predviđanje oznaka za testne podatke X_test.
y_pred = log_reg.predict(X_test)
Korak 6: Procjena točnosti modela
Provjerite koliko dobro funkcionira naš model usporedbom y_test i y_pred. Ovdje koristimo metodu accuracy_score modula metrike.
Windows naredba arpPython
from sklearn import metrics print('Logistic Regression model accuracy:' metrics.accuracy_score(y_test y_pred))
Izlaz:
Točnost modela logističke regresije: 0,9666666666666667
Sada želimo da naš model daje predviđanja na novim uzorcima podataka. Tada se ulaz uzorka može jednostavno proslijediti na isti način kao što prosljeđujemo bilo koju matricu značajki. Ovdje smo ga upotrijebili kao uzorak = [[3 5 4 2] [2 3 5 4]]
Pythonsample = [[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)
Izlaz:
Predviđanja: [np.str_('virginica') np.str_('virginica')]
Značajke Scikit-learn-a
Scikit-learn se koristi jer izradu modela strojnog učenja čini jednostavnom i učinkovitom. Evo nekoliko važnih razloga:
- Alati spremni za korištenje : Pruža ugrađene funkcije za uobičajene zadatke kao što su modeli obuke za pretprocesiranje podataka i predviđanja. Ovo štedi vrijeme izbjegavajući potrebu za kodiranjem algoritama od nule.
- Jednostavna evaluacija modela : S alatima kao što su unakrsna provjera valjanosti i metrika izvedbe pomaže u mjerenju koliko dobro naš model funkcionira i identificira područja za poboljšanje.
- Široka podrška za algoritam : nudi mnogo popularnih algoritama strojnog učenja uključujući klasifikacijsku regresiju i klasteriranje što nam daje fleksibilnost u odabiru pravog modela za naš problem.
- Glatka integracija : Izgrađen na temelju važnih Python biblioteka kao što su NumPy i SciPy tako da se uklapa u naš postojeći tijek rada analize podataka.
- Jednostavno i dosljedno sučelje : Ista jednostavna sintaksa funkcionira na različitim modelima i pomaže u lakšem učenju i prebacivanju između algoritama.
- Lako podešavanje modela : Alati poput pretraživanja mreže pomažu nam u finom podešavanju postavki našeg modela kako bismo poboljšali točnost bez dodatnih problema.
Prednosti korištenja Scikit-learn-a
- Prilagođen korisniku : Dosljedno i jednostavno sučelje Scikit-learn-a čini ga pristupačnim za početnike i najboljim za stručnjake.
- Ušteda vremena: Unaprijed izrađeni alati i algoritmi skraćuju vrijeme razvoja što nam omogućuje da se više usredotočimo na rješavanje problema nego na detalje kodiranja.
- Bolja izvedba modela : Alati za podešavanje i procjenu jednostavni za korištenje pomažu u poboljšanju točnosti i pouzdanosti modela.
- Fleksibilan i skalabilan : Podržava širok raspon algoritama i glatko se integrira s drugim Python bibliotekama što ga čini prikladnim za projekte bilo koje veličine.
- Snažna podrška zajednice : Velika aktivna zajednica osigurava redovita ažuriranja opsežne dokumentacije i obilje resursa za pomoć kada zapnemo.