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.
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])
výstup:
Načítání datové sadyNě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.
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)
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.
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)
výstup:
Tvar rozdělených datKrok 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.
porovnat s javouPython
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]]
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)
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.