Výuka modelování v Scikit-learn

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: 

model1Načí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:

model2Tvar 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

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Š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.

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