logo

Výuka modelování v Scikit-learn

Scikit-learn je open-source knihovna Pythonu, která zjednodušuje proces vytváření modelů strojového učení. Nabízí čisté a konzistentní rozhraní, které pomáhá začátečníkům i zkušeným uživatelům pracovat efektivně.

  • Podporuje úlohy, jako je klasifikační regresní shlukování a předběžné zpracování
  • Umožňuje rychlé a spolehlivé vytváření modelů
  • Poskytuje připravené nástroje pro školení a hodnocení
  • Snižuje složitost tím, že se vyhne ruční implementaci algoritmů

Instalace a používání Scikit-learn

Než začneme stavět modely, musíme je nainstalovat Scikit-učte se. Vyžaduje Python 3.8 nebo novější a závisí na dvou důležitých knihovnách: NumPy a SciPy. Ujistěte se, že jsou nainstalovány jako první.

Chcete-li nainstalovat Scikit-learn, spusťte následující příkaz:



pip install -U scikit-learn

Tím se stáhne a nainstaluje nejnovější verze Scikit-learn spolu s jejími závislostmi. Podívejme se na různé kroky procesu vytváření modelu pomocí knihovny Scikit-learn.

parciální derivační latex

Krok 1: Načtení datové sady

Datová sada se skládá z:

  • Vlastnosti (X): Vstupní proměnné, které popisují data
  • Cíl (y): Hodnota, kterou chceme předpovědět

Scikit-learn poskytuje vestavěné datové sady jako Iris Digits a Boston Housing. Použití datové sady Iris:

  • load_iris() načte data
  • X ukládá data funkcí
  • y ukládá cílové štítky
  • feature_names a target_names poskytují popisná jména

Můžeme si prohlédnout prvních několik řádků, abychom pochopili strukturu. Pro vlastní datové sady se Pandas běžně používá k načítání externích souborů, jako jsou 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čítání datové sady

Někdy potřebujeme pracovat na vlastních vlastních datech a poté načteme externí datovou sadu. K tomu můžeme použít knihovna pand pro snadné načítání a manipulaci s datovými sadami.

K tomu se můžete podívat na náš článek o Jak importovat soubor csv v pandas ?

Krok 2: Rozdělení datové sady

Abychom model spravedlivě vyhodnotili, rozdělíme data na:

  • Tréninková sada: Slouží k trénování modelu
  • Testovací sada: Používá se k vyhodnocení, jak dobře model zobecňuje

Pomocí train_test_split jsme rozdělili datovou sadu Iris tak, že 60 % je pro trénování a 40 % pro testování (test_size=0,4). random_state=1 zajišťuje reprodukovatelnost.

Po rozdělení dostaneme:

  • X_train y_train -> Tréninková data
  • X_test y_test -> Testovací data

Kontrola tvarů zajišťuje správné rozdělení dat.

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) 

Nyní pojďme zkontrolovat Tvary rozdělených dat, aby bylo zajištěno, že obě sady mají správné proporce dat, aby se předešlo případným chybám při vyhodnocování nebo trénování modelu.

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:

model2' loading='lazy' title=Tvar rozdělených dat

Krok 3: Zpracování kategorických dat

Algoritmy strojového učení pracují s numerickými vstupy, takže kategorická (textová) data musí být převedena na čísla. Pokud modely nejsou správně zakódovány, mohou špatně interpretovat kategorie. Scikit-learn poskytuje několik metod kódování:

1. Kódování štítků : Převádí každou kategorii na jedinečné celé číslo. Například ve sloupci s kategoriemi jako 'kočka', 'pes' a 'pták' by je převedl na 0 1 a 2. Tato metoda funguje dobře, když mají kategorie smysluplné pořadí, jako je nízká střední a vysoká.

  • LabelEncoder(): Je inicializován k vytvoření objektu kodéru, který převede kategorické hodnoty na číselné štítky.
  • fit_transform(): Tato metoda nejprve přizpůsobí kodér kategoriálním datům a poté převede kategorie na odpovídající číselné štítky.
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á funkce: [1 2 2 1 0]

2. One-Hot Encoding : One-Hot Encoding vytváří samostatné binární sloupce pro každou kategorii. To je užitečné, když kategorie nemají žádné přirozené řazení. Příklad: kočka pes pták -> 3 nové sloupce (kočka/pes/pták) s 1s a 0s.

  • Vstup musí být přepracován do 2D pole
  • OneHotEncoder(sparse_output=False) generuje binární sloupce
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=

Kromě Label Encoding a One-Hot Encoding existují další techniky jako Střední kódování .

Krok 4: Školení modelu

Nyní, když jsou naše data připravena, je čas trénovat model strojového učení. Scikit-learn má mnoho algoritmů s konzistentním rozhraním pro předvídání a vyhodnocování tréninku. Zde použijeme Logistická regrese jako příklad.

Poznámka : Nebudeme zacházet do podrobností o tom, jak algoritmus funguje, protože nás zajímá pouze pochopení jeho implementace. 

  • log_reg = LogisticRegression(max_iter=200): Vytvoření objektu klasifikátoru logistické regrese.
  • log_reg.fit(X_vlak y_vlak): Pomocí tohoto logistický regresní model upravuje parametry modelu tak, aby co nejlépe odpovídaly datům.
Python
from sklearn.linear_model import LogisticRegression log_reg = LogisticRegression(max_iter=200) log_reg.fit(X_train y_train) 
model4' loading='lazy' title=Školení s využitím logistické regrese.

Krok 5: Proveďte předpovědi

Po trénování používáme model k předpovědi testovacích dat X_test voláním metody predikce. To vrátí předpokládané štítky y_pred.

  • log_reg.predict: Používá trénovaný model logistické regrese k predikci značek pro testovací data X_test.
Python
y_pred = log_reg.predict(X_test) 

Krok 6: Vyhodnocení přesnosti modelu

Zkontrolujte, jak dobře si náš model vede, porovnáním y_test a y_pred. Zde používáme metodu přesnosti_skóre modulu metrik.

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

výstup:

Přesnost modelu logistické regrese: 0,9666666666666667

Nyní chceme, aby náš model předpovídal nová vzorová data. Potom lze jednoduše předat vzorový vstup stejným způsobem, jako předáváme jakoukoli matici vlastností. Zde jsme to použili jako vzorek = [[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: 

Předpovědi: [np.str_('virginica') np.str_('virginica')]

Vlastnosti Scikit-learn

Scikit-learn se používá, protože umožňuje vytvářet modely strojového učení přímočaré a efektivní. Zde je několik důležitých důvodů:

  1. Nástroje připravené k použití : Poskytuje vestavěné funkce pro běžné úlohy, jako jsou tréninkové modely předběžného zpracování dat a vytváření předpovědí. To šetří čas, protože není nutné kódovat algoritmy od začátku.
  2. Snadné hodnocení modelu : Pomocí nástrojů, jako je křížová validace a metriky výkonu, pomáhá měřit, jak dobře náš model funguje, a identifikovat oblasti pro zlepšení.
  3. Široká podpora algoritmů : Nabízí mnoho oblíbených algoritmů strojového učení včetně regrese klasifikace a shlukování, což nám dává flexibilitu při výběru správného modelu pro náš problém.
  4. Hladká integrace : Postaveno na důležitých knihovnách Pythonu, jako jsou NumPy a SciPy, takže zapadá do našeho stávajícího pracovního postupu analýzy dat.
  5. Jednoduché a konzistentní rozhraní : Stejná přímočará syntaxe funguje na různých modelech a usnadňuje učení a přepínání mezi algoritmy.
  6. Snadné ladění modelu : Nástroje, jako je vyhledávání v mřížce, nám pomáhají doladit nastavení našeho modelu a zlepšit tak přesnost bez dalších potíží.

Výhody používání Scikit-learn

  • Uživatelsky přívětivý : Konzistentní a jednoduché rozhraní Scikit-learn zpřístupňuje začátečníkům a nejlépe odborníkům.
  • Úspora času: Předem vytvořené nástroje a algoritmy zkracují dobu vývoje, což nám umožňuje soustředit se více na řešení problémů než na kódování detailů.
  • Lepší výkon modelu : Snadno použitelné nástroje pro ladění a hodnocení pomáhají zlepšit přesnost a spolehlivost modelu.
  • Flexibilní a škálovatelné : Podporuje širokou škálu algoritmů a hladce se integruje s dalšími knihovnami Pythonu, což pomáhá při vytváření vhodného pro projekty jakékoli velikosti.
  • Silná podpora komunity : Velká aktivní komunita zajišťuje pravidelné aktualizace rozsáhlé dokumentace a spoustu zdrojů, které vám pomohou, když uvízneme.
Vytvořit kvíz