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.
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 ( ' n Type of X is:' type ( X )) print ( ' n First 5 rows of X: n ' X [: 5 ])
výstup:
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:
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.
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
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:
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.
from sklearn.linear_model import LogisticRegression log_reg = LogisticRegression ( max_iter = 200 ) log_reg . fit ( X_train y_train )
Š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.
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.
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ů:
- 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.
- 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í.
- Š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.
- 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.
- 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.
- 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.