logo

Učenie Budovanie modelu v Scikit-learn

Scikit-learn je open source knižnica Python, ktorá zjednodušuje proces vytvárania modelov strojového učenia. Ponúka čisté a konzistentné rozhranie, ktoré pomáha začiatočníkom aj skúseným používateľom pracovať efektívne.

  • Podporuje úlohy ako klasifikačné regresné klastrovanie a predspracovanie
  • Umožňuje rýchle a spoľahlivé vytváranie modelov
  • Poskytuje nástroje na školenie a hodnotenie pripravené na použitie
  • Znižuje zložitosť tým, že sa vyhýba manuálnej implementácii algoritmov

Inštalácia a používanie Scikit-learn

Než začneme stavať modely, musíme ich nainštalovať Scikit-učte sa. Vyžaduje Python 3.8 alebo novší a závisí od dvoch dôležitých knižníc: NumPy a SciPy. Najprv sa uistite, že sú nainštalované.

java hojdačka

Ak chcete nainštalovať Scikit-learn, spustite nasledujúci príkaz:



pip install -U scikit-learn

Týmto sa stiahne a nainštaluje najnovšia verzia Scikit-learn spolu s jej závislosťami. Pozrime sa na rôzne kroky procesu vytvárania modelu pomocou knižnice Scikit-learn.

Krok 1: Načítanie množiny údajov

Súbor údajov pozostáva z:

  • Vlastnosti (X): Vstupné premenné, ktoré popisujú údaje
  • Cieľ (y): Hodnota, ktorú chceme predpovedať

Scikit-learn poskytuje vstavané súbory údajov, ako sú Iris Digits a Boston Housing. Použitie množiny údajov Iris:

  • load_iris() načíta dáta
  • X ukladá údaje o funkciách
  • y ukladá cieľové štítky
  • feature_names a target_names poskytujú popisné názvy

Môžeme si prezrieť niekoľko prvých riadkov, aby sme pochopili štruktúru. Pre vlastné množiny údajov sa Panda bežne používa na načítanie externých súborov, ako sú súbory CSV.

Python
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]) 

výstup: 

model1' title=Načítava sa množina údajov

Niekedy musíme pracovať na vlastných vlastných údajoch a potom načítame externý súbor údajov. Na to môžeme použiť knižnica pandy pre jednoduché načítanie a manipuláciu s datasetmi.

Za týmto účelom si môžete prečítať náš článok o Ako importovať súbor csv v pandas ?

Krok 2: Rozdelenie množiny údajov

Aby sme model spravodlivo vyhodnotili, rozdelili sme údaje na:

  • Tréningová súprava: Slúži na trénovanie modelu
  • Testovacia množina: Používa sa na vyhodnotenie toho, ako dobre sa model zovšeobecňuje

Pomocou train_test_split sme rozdelili množinu údajov Iris tak, že 60 % je na trénovanie a 40 % na testovanie (test_size=0,4). random_state=1 zaisťuje reprodukovateľnosť.

rozloženie mriežky

Po rozdelení dostaneme:

  • X_train y_train -> Údaje o tréningu
  • X_test y_test -> Testovacie dáta

Kontrola tvarov zabezpečuje správne rozdelenie údajov.

Python
from 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) 

Teraz poďme skontrolovať Tvary rozdelených údajov, aby sa zabezpečilo, že oba súbory budú mať správne proporcie údajov, aby sa predišlo akýmkoľvek potenciálnym chybám pri hodnotení modelu alebo tréningu.

Python
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) 

výstup:

je vzťah
model2' loading='lazy' title=Tvar rozdelených údajov

Krok 3: Spracovanie kategorických údajov

Algoritmy strojového učenia pracujú s numerickými vstupmi, takže kategorické (textové) údaje musia byť prevedené na čísla. Ak modely nie sú správne zakódované, môžu nesprávne interpretovať kategórie. Scikit-learn poskytuje viacero metód kódovania:

1. Kódovanie štítkov : Prevedie každú kategóriu na jedinečné celé číslo. Napríklad v stĺpci s kategóriami ako 'mačka', 'pes' a 'vták' ich prevedie na 0 1 a 2. Táto metóda funguje dobre, keď majú kategórie zmysluplné poradie, ako napríklad Nízka Stredná a Vysoká.

  • LabelEncoder(): Inicializuje sa na vytvorenie objektu kódovača, ktorý prevedie kategorické hodnoty na číselné označenia.
  • fit_transform(): Táto metóda najskôr prispôsobí kódovač kategorickým údajom a potom kategórie transformuje na zodpovedajúce číselné označenia.
Python
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) 

výstup:

Kódovaná funkcia: [1 2 2 1 0]

2. One-Hot Encoding : One-Hot Encoding vytvára samostatné binárne stĺpce pre každú kategóriu. Je to užitočné, keď kategórie nemajú prirodzené usporiadanie. Príklad: mačka pes vták -> 3 nové stĺpce (mačka/pes/vták) s 1s a 0s.

  • Vstup musí byť prerobený do 2D poľa
  • OneHotEncoder(sparse_output=False) generuje binárne stĺpce
Python
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) 

výstup:

model3' loading='lazy' title=

Okrem Label Encoding a One-Hot Encoding existujú aj iné techniky ako napr Stredné kódovanie .

Krok 4: Školenie modelu

Teraz, keď sú naše údaje pripravené, je čas na trénovanie modelu strojového učenia. Scikit-learn má mnoho algoritmov s konzistentným rozhraním na predpovedanie a vyhodnocovanie tréningov. Tu použijeme Logistická regresia ako príklad.

Poznámka : Nebudeme zachádzať do podrobností o tom, ako algoritmus funguje, pretože nás zaujíma iba pochopenie jeho implementácie. 

  • log_reg = LogisticRegression(max_iter=200): Vytvorenie objektu klasifikátora logistickej regresie.
  • log_reg.fit(X_vlak y_vlak): Pomocou tohto model logistickej regresie upravuje parametre modelu tak, aby čo najlepšie zodpovedali údajom.
Python
from sklearn.linear_model import LogisticRegression log_reg = LogisticRegression(max_iter=200) log_reg.fit(X_train y_train) 
model4' loading='lazy' title=Školenie pomocou logistickej regresie.

Krok 5: Vytvorte predpovede

Po trénovaní používame model na predpovedanie testovacích údajov X_test volaním metódy predikcie. Toto vráti predpokladané štítky y_pred.

  • log_reg.predict: Používa trénovaný logistický regresný model na predpovedanie označení pre testovacie dáta X_test.
Python
y_pred = log_reg.predict(X_test) 

Krok 6: Hodnotenie presnosti modelu

Skontrolujte výkonnosť nášho modelu porovnaním y_test a y_pred. Tu používame metódu presnosti_skóre modulu metrík.

Python
from sklearn import metrics print('Logistic Regression model accuracy:' metrics.accuracy_score(y_test y_pred)) 

výstup:

bstrom a b strom

Presnosť modelu logistickej regresie: 0,9666666666666667

Teraz chceme, aby náš model predpovedal nové vzorové údaje. Potom sa vzorový vstup môže jednoducho odovzdať rovnakým spôsobom, akým odovzdávame akúkoľvek maticu vlastností. Tu sme to použili ako vzorku = [[3 5 4 2] [2 3 5 4]]

Python
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) 

výstup: 

Predpovede: [np.str_('virginica') np.str_('virginica')]

Vlastnosti Scikit-learn

Scikit-learn sa používa, pretože robí vytváranie modelov strojového učenia jednoduchým a efektívnym. Tu je niekoľko dôležitých dôvodov:

  1. Nástroje pripravené na použitie : Poskytuje vstavané funkcie pre bežné úlohy, ako sú tréningové modely predbežného spracovania údajov a vytváranie predpovedí. To šetrí čas, pretože nie je potrebné kódovať algoritmy od začiatku.
  2. Jednoduché hodnotenie modelu : Pomocou nástrojov, ako je krížová validácia a metriky výkonnosti, pomáha merať, ako dobre funguje náš model, a identifikovať oblasti na zlepšenie.
  3. Široká podpora algoritmov : Ponúka mnoho populárnych algoritmov strojového učenia vrátane klasifikačnej regresie a klastrovania, čo nám dáva flexibilitu pri výbere správneho modelu pre náš problém.
  4. Hladká integrácia : Postavený na vrchole dôležitých knižníc Pythonu, ako sú NumPy a SciPy, takže zapadá do nášho existujúceho pracovného postupu analýzy údajov.
  5. Jednoduché a konzistentné rozhranie : Rovnaká priama syntax funguje naprieč rôznymi modelmi a pomáha zjednodušiť učenie a prepínanie medzi algoritmami.
  6. Ľahké ladenie modelu : Nástroje ako vyhľadávanie v mriežke nám pomáhajú doladiť nastavenia nášho modelu na zvýšenie presnosti bez ďalších problémov.

Výhody používania Scikit-learn

  • Užívateľsky prívetivý : Konzistentné a jednoduché rozhranie Scikit-learn ho robí dostupným pre začiatočníkov a najlepšie pre expertov.
  • Úspora času: Vopred zostavené nástroje a algoritmy skracujú čas vývoja, čo nám umožňuje sústrediť sa viac na riešenie problémov ako na kódovanie detailov.
  • Lepší výkon modelu : Ľahko použiteľné nástroje ladenia a hodnotenia pomáhajú zlepšovať presnosť a spoľahlivosť modelu.
  • Flexibilné a škálovateľné : Podporuje širokú škálu algoritmov a hladko sa integruje s inými knižnicami Pythonu, čo pomáha pri jeho vhodnosti pre projekty akejkoľvek veľkosti.
  • Silná podpora komunity : Veľká aktívna komunita zabezpečuje pravidelné aktualizácie rozsiahlej dokumentácie a množstvo zdrojov, ktoré vám pomôžu, keď sa zasekneme.
Vytvoriť kvíz