Scikit-learn yra atvirojo kodo Python biblioteka, kuri supaprastina mašininio mokymosi modelių kūrimo procesą. Ji siūlo švarią ir nuoseklią sąsają, kuri padeda efektyviai dirbti tiek pradedantiesiems, tiek patyrusiems vartotojams.
- Palaiko tokias užduotis kaip klasifikavimo regresijos grupavimas ir išankstinis apdorojimas
- Modelių kūrimas tampa greitas ir patikimas
- Suteikia naudojimui paruoštas mokymo ir vertinimo priemones
- Sumažina sudėtingumą, nes vengiama rankinio algoritmų įgyvendinimo
„Scikit-learn“ diegimas ir naudojimas
Prieš pradėdami kurti modelius, turime įdiegti Scikit-mokykis. Tam reikia Python 3.8 ar naujesnės versijos ir priklauso nuo dviejų svarbių bibliotekų: NumPy ir SciPy. Pirmiausia įsitikinkite, kad jie yra įdiegti.
Norėdami įdiegti „Scikit-lear“, paleiskite šią komandą:
pip install -U scikit-learn
Bus atsisiųsta ir įdiegta naujausia „Scikit-learn“ versija kartu su jos priklausomybėmis. Leiskite pamatyti įvairius žingsnius, susijusius su modelio kūrimo procesu naudojant Scikit-learn biblioteką.
1 veiksmas: įkelkite duomenų rinkinį
Duomenų rinkinį sudaro:
- Savybės (X): Įvesties kintamieji, apibūdinantys duomenis
- Tikslas (y): Vertė, kurią norime numatyti
„Scikit-learn“ teikia integruotus duomenų rinkinius, tokius kaip „Iris Digits“ ir „Boston Housing“. Naudojant Iris duomenų rinkinį:
- load_iris() įkelia duomenis
- X saugo funkcijų duomenis
- y parduotuvės tikslinės etiketės
- funkcijų_pavadinimai ir paskirties_pavadinimai suteikia aprašomuosius pavadinimus
Galime apžiūrėti kelias pirmąsias eilutes, kad suprastume struktūrą. Pasirinktiniams duomenų rinkiniams Pandas dažniausiai naudojamas išoriniams failams, pvz., CSV, įkelti.
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])
Išvestis:
Įkeliamas duomenų rinkinysKartais mums reikia dirbti su savo pasirinktiniais duomenimis, tada įkeliame išorinį duomenų rinkinį. Tam galime naudoti pandų biblioteka kad būtų lengva įkelti ir valdyti duomenų rinkinius.
Norėdami tai padaryti, galite peržiūrėti mūsų straipsnį Kaip importuoti csv failą į pandas ?
2 veiksmas: duomenų rinkinio padalijimas
Norėdami teisingai įvertinti modelį, suskirstome duomenis į:
- Treniruočių rinkinys: Naudojamas modeliui treniruoti
- Testavimo rinkinys: naudojamas įvertinti, kaip gerai modelis apibendrina
Naudodami train_test_split suskirstome Iris duomenų rinkinį taip, kad 60% būtų skirta treniruotėms ir 40% testavimui (test_size=0,4). random_state=1 užtikrina atkuriamumą.
Po padalijimo gauname:
- X_train y_train -> Treniruočių duomenys
- X_test y_test -> Testavimo duomenys
Tikrindami figūras įsitikinsite, kad duomenys yra tinkamai padalyti.
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)
Dabar patikrinkime Formos išskaidytus duomenis, kad užtikrintų, jog abiejuose rinkiniuose būtų teisingos duomenų proporcijos, kad būtų išvengta bet kokių galimų modelio vertinimo ar mokymo klaidų.
romėniški skaitmenys nuo 1 iki 100Python
print('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)
Išvestis:
Išskaidytų duomenų forma3 veiksmas. Kategorinių duomenų tvarkymas
Mašininio mokymosi algoritmai veikia su skaitmeninėmis įvestimis, todėl kategoriški (teksto) duomenys turi būti konvertuojami į skaičius. Neužkoduoti modeliai gali klaidingai interpretuoti kategorijas. Scikit-learn siūlo kelis kodavimo metodus:
1. Etikečių kodavimas : kiekvieną kategoriją paverčia unikaliu sveikuoju skaičiumi. Pavyzdžiui, stulpelyje su tokiomis kategorijomis kaip „katė“ „šuo“ ir „paukštis“ jas atitinkamai konvertuotų į 0 1 ir 2. Šis metodas gerai veikia, kai kategorijų tvarka yra prasminga, pvz., Žema Vidutinė ir Aukšta.
- LabelEncoder(): Jis inicijuojamas, kad būtų sukurtas kodavimo objektas, kuris konvertuos kategorines reikšmes į skaitines etiketes.
- fit_transform(): Šis metodas pirmiausia pritaiko koduotuvą prie kategorinių duomenų, o tada paverčia kategorijas į atitinkamas skaitines etiketes.
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)
Išvestis:
Užkoduota funkcija: [1 2 2 1 0]
2. Vienkartinis kodavimas : „One-Hot Encoding“ kiekvienai kategorijai sukuria atskirus dvejetainius stulpelius. Tai naudinga, kai kategorijos neturi natūralios tvarkos. Pavyzdys: kačių šuo paukštis -> 3 nauji stulpeliai (katė / šuo / paukštis) su 1 ir 0.
- Įvestis turi būti pakeista į 2D masyvą
- OneHotEncoder(sparse_output=False) generuoja dvejetainius stulpelius
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)
Išvestis:
Be etikečių kodavimo ir vieno karšto kodavimo, yra ir kitų metodų, pvz Vidutinis kodavimas .
4 veiksmas: modelio mokymas
Dabar, kai mūsų duomenys yra paruošti, laikas parengti mašininio mokymosi modelį. Scikit-learn turi daug algoritmų su nuoseklia sąsaja, skirta treniruočių numatymui ir įvertinimui. Čia mes naudosime Logistinė regresija kaip pavyzdį.
Pastaba : Mes nesigilinsime į algoritmo veikimo detales, nes norime suprasti tik jo įgyvendinimą.
- log_reg = Logistinė regresija (maks._iter = 200): Logistinės regresijos klasifikatoriaus objekto kūrimas.
- log_reg.fit(X_train y_train): Naudojant šį logistinės regresijos modelis koreguoja modelio parametrus, kad geriausiai atitiktų duomenis.
from sklearn.linear_model import LogisticRegression log_reg = LogisticRegression(max_iter=200) log_reg.fit(X_train y_train)
Mokymai naudojant logistinę regresiją.5 veiksmas: numatykite
Išmokę modelį naudojame prognozuoti bandymo duomenis X_test, iškviesdami prognozavimo metodą. Tai grąžina numatomas etiketes y_pred.
- log_reg.predict: Jis naudoja parengtą logistinės regresijos modelį, kad prognozuotų testo duomenų X_test etiketes.
y_pred = log_reg.predict(X_test)
6 veiksmas: modelio tikslumo įvertinimas
Patikrinkite, kaip gerai veikia mūsų modelis, palygindami y_test ir y_pred. Čia mes naudojame metrikos modulio metodą accuracy_score.
sql sąlygosPython
from sklearn import metrics print('Logistic Regression model accuracy:' metrics.accuracy_score(y_test y_pred))
Išvestis:
Logistinės regresijos modelio tikslumas: 0,9666666666666667
Dabar norime, kad mūsų modelis prognozuotų naujus imties duomenis. Tada imties įvestis gali būti tiesiog perduodama taip pat, kaip perduodame bet kurią savybių matricą. Čia mes jį naudojome kaip pavyzdį = [[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)
Išvestis:
Numatymai: [np.str_('virginica') np.str_('virginica')]
„Scikit-learn“ ypatybės
Scikit-learn naudojamas, nes dėl jo mašininio mokymosi modelių kūrimas tampa nesudėtingas ir efektyvus. Štai keletas svarbių priežasčių:
- Paruošti naudoti įrankiai : Jame yra įmontuotų funkcijų, skirtų atlikti įprastas užduotis, pvz., išankstinio duomenų apdorojimo mokymo modelius ir prognozes. Taip sutaupoma laiko, nes nereikia koduoti algoritmų nuo nulio.
- Lengvas modelio įvertinimas : naudojant tokius įrankius kaip kryžminis patvirtinimas ir našumo metrika, tai padeda įvertinti, kaip gerai veikia mūsų modelis, ir nustatyti tobulintinas sritis.
- Platus algoritmų palaikymas : Jis siūlo daugybę populiarių mašininio mokymosi algoritmų, įskaitant klasifikavimo regresiją ir klasterizavimą, o tai suteikia mums galimybę lanksčiai pasirinkti tinkamą mūsų problemos modelį.
- Sklandi integracija : Sukurta ant svarbių Python bibliotekų, tokių kaip „NumPy“ ir „SciPy“, kad tilptų į esamą duomenų analizės darbo eigą.
- Paprasta ir nuosekli sąsaja : Ta pati paprasta sintaksė veikia skirtinguose modeliuose padeda lengviau mokytis ir perjungti algoritmus.
- Lengvas modelių derinimas : įrankiai, pvz., tinklelio paieška, padeda mums tiksliai sureguliuoti modelio nustatymus, kad pagerintume tikslumą be papildomų rūpesčių.
Scikit-learn naudojimo pranašumai
- Patogus vartotojui : nuosekli ir paprasta „Scikit-learn“ sąsaja leidžia ją pasiekti pradedantiesiems, o geriausia – ekspertams.
- Laiko taupymas: Iš anksto sukurti įrankiai ir algoritmai sumažina kūrimo laiką, todėl galime daugiau dėmesio skirti problemų sprendimui, o ne detalių kodavimui.
- Geresnis modelio našumas : Lengvai naudojami derinimo ir vertinimo įrankiai padeda pagerinti modelio tikslumą ir patikimumą.
- Lankstus ir keičiamo dydžio : palaiko platų algoritmų spektrą ir sklandžiai integruojasi su kitomis Python bibliotekomis, todėl jis tinka bet kokio dydžio projektams.
- Stiprus bendruomenės palaikymas : didelė aktyvi bendruomenė užtikrina reguliarius išsamios dokumentacijos atnaujinimus ir daug išteklių, kurie padės, kai užstrigtume.