Data Science

Výukový program pro strojové učení se Scikit-learn

Výukový program pro strojové učení se Scikit-learn

V této lekci o strojovém učení se scikit-learn se naučíme různé aspekty tohoto vynikajícího balíčku Pythonu, který nám umožňuje aplikovat jednoduché a komplexní schopnosti strojového učení na různorodou sadu dat spolu s funkcemi k testování hypotézy, kterou stanovíme.

Balíček scikit-learn obsahuje jednoduché a efektivní nástroje pro aplikaci dolování dat a analýzu dat na datové sady a tyto algoritmy jsou k dispozici pro použití v různých kontextech. Jedná se o balíček open-source dostupný pod licencí BSD, což znamená, že můžeme tuto knihovnu používat i komerčně. Je postaven na matplotlib, NumPy a SciPy, takže má univerzální povahu. K představení příkladů v této lekci využijeme Anaconda s notebookem Jupyter.

Co poskytuje scikit-learn?

Knihovna scikit-learn se plně zaměřuje na modelování dat. Vezměte prosím na vědomí, že v scikit-learn nejsou žádné hlavní funkce, pokud jde o načítání, manipulaci a sumarizaci dat. Zde jsou některé z populárních modelů, které nám scikit-learn poskytuje:

Nainstalujte Python scikit-learn

Jen poznámka před zahájením procesu instalace, pro tuto lekci používáme virtuální prostředí, které jsme vytvořili pomocí následujícího příkazu:

python -m virtualenv scikit
zdrojový scikit / bin / aktivovat

Jakmile je virtuální prostředí aktivní, můžeme do virtuální env nainstalovat knihovnu pand, aby bylo možné provést příklady, které vytvoříme dále:

pip install scikit-learn

Nebo můžeme použít Conda k instalaci tohoto balíčku pomocí následujícího příkazu:

conda install scikit-learn

Vidíme něco takového, když provedeme výše uvedený příkaz:

Jakmile se instalace dokončí pomocí Condy, budeme moci balíček použít v našich skriptech Pythonu jako:

importovat sklearn

Začněme v našich skriptech používat scikit-learn k vývoji úžasných algoritmů strojového učení.

Import datových sad

Jednou ze skvělých věcí s scikit-learn je, že je předinstalován se vzorovými datovými sadami, se kterými je snadné rychle začít. Datové sady jsou duhovka a číslice datové soubory pro klasifikaci a ceny bostonských domů datová sada pro regresní techniky. V této části se podíváme na to, jak načíst a začít používat datovou sadu iris.

Chcete-li importovat datovou sadu, musíme nejprve importovat správný modul a poté získat blokování datové sady:

ze sklearn importovat datové sady
iris = datové sady.load_iris ()
číslice = datové sady.load_digits ()
číslice.data

Jakmile spustíme výše uvedený fragment kódu, uvidíme následující výstup:

Veškerý výstup je z důvodu stručnosti odstraněn. Toto je datová sada, kterou budeme v této lekci hlavně používat, ale většinu konceptů lze aplikovat obecně na všechny datové sady.

Je jen zábavné vědět, že v systému je přítomno více modulů scikit ekosystém, z nichž jeden je Učit se používá se pro algoritmy strojového učení. Na této stránce najdete mnoho dalších přítomných modulů.

Zkoumání datové sady

Nyní, když jsme do našeho skriptu importovali zadanou číslici datové sady, měli bychom začít shromažďovat základní informace o datové sadě a to je to, co zde uděláme. Tady jsou základní věci, které byste měli prozkoumat při hledání informací o datové sadě:

Napišme krátký fragment kódu, abychom z naší datové sady extrahovali tři výše uvedené informace:

print ('Target:', digits.cílová)
tisk ('Klíče:', číslice.klávesy ())
print ('Description:', digits.POPIS)

Jakmile spustíme výše uvedený fragment kódu, uvidíme následující výstup:

Pamatujte, že číslice proměnných nejsou jednoduché. Když jsme vytiskli číselnou datovou sadu, ve skutečnosti obsahovala početná pole. Uvidíme, jak se k těmto polím dostaneme. K tomu si všimněte klíčů dostupných v instanci číslic, kterou jsme vytiskli v posledním fragmentu kódu.

Začneme tím, že dostaneme tvar dat pole, což jsou řádky a sloupce, které pole má. Nejprve potřebujeme získat skutečná data a poté získat jejich tvar:

digits_set = číslice.data
print (digits_set.tvar)

Jakmile spustíme výše uvedený fragment kódu, uvidíme následující výstup:

To znamená, že v naší datové sadě máme 1797 vzorků a 64 datových funkcí (nebo sloupců). Také máme také některé cílové štítky, které zde vizualizujeme pomocí matplotlib. Zde je úryvek kódu, který nám k tomu pomáhá:

import matplotlib.pyplot jako plt
# Sloučit obrázky a cílové štítky jako seznam
images_and_labels = seznam (zip (číslice.obrázky, číslice.cílová))
pro index, (obrázek, štítek) v enumerate (images_and_labels [: 8]):
# inicializuje subplot 2X4 na pozici i + 1
plt.subplot (2, 4, index + 1)
# Není třeba zakreslovat žádné osy
plt.osa (vypnuto)
# Zobrazit obrázky ve všech dílčích grafech
plt.imshow (obrázek, cmap = plt.cm.grey_r, interpolace = 'nejbližší')
# Přidejte název do každého dílčího grafu
plt.název ('Training:' + str (štítek))
plt.ukázat()

Jakmile spustíme výše uvedený fragment kódu, uvidíme následující výstup:

Všimněte si, jak jsme zazipovali dvě pole NumPy dohromady, než jsme je vykreslili do mřížky 4 x 2 bez informací o osách. Nyní jsme si jisti informacemi, které máme o datové sadě, se kterou pracujeme.

Nyní, když víme, že máme 64 datových funkcí (což je mimochodem mnoho funkcí), je náročné vizualizovat skutečná data. Máme pro to řešení.

Analýza hlavních komponent (PCA)

Nejedná se o výukový program o PCA, ale pojďme si udělat malou představu o tom, co to je. Jak víme, že abychom snížili počet funkcí z datové sady, máme dvě techniky:

  1. Eliminace funkcí
  2. Extrakce funkcí

Zatímco první technika čelí problému ztracených datových funkcí, i když by mohly být důležité, druhá technika tímto problémem netrpí, protože s pomocí PCA vytváříme nové datové funkce (méně v počtu), kde kombinujeme vstupní proměnné takovým způsobem, že můžeme vynechat „nejméně důležité“ proměnné při zachování nejcennějších částí všech proměnných.

Jak se očekávalo, PCA nám pomáhá snižovat vysoce dimenzionální data což je přímým důsledkem popisu objektu pomocí mnoha datových funkcí. Nejen číslice, ale mnoho dalších praktických datových sad má vysoký počet funkcí, které zahrnují údaje o finančních institucích, údaje o počasí a ekonomice pro region atd. Když provádíme PCA na číselné datové sadě, naším cílem bude najít pouze 2 funkce, které mají většinu charakteristik datové sady.

Pojďme napsat jednoduchý fragment kódu pro použití PCA na datovou sadu číslic, abychom získali náš lineární model pouhých 2 funkcí:

od sklearn.dekompozice import PCA
feature_pca = PCA (n_components = 2)
redukovaná_údajová_data = feature_pca.fit_transform (číslice.data)
model_pca = PCA (n_components = 2)
redukovaná_data_pca = model_pca.fit_transform (číslice.data)
redukovaná_data_pca.tvar
tisk (snížená_údajová_data)
tisk (redukovaná_data_pca)

Jakmile spustíme výše uvedený fragment kódu, uvidíme následující výstup:

[[-1.2594655 21.27488324]
[7.95762224-20.76873116]
[6.99192123 -9.95598191]

[10.8012644 -6.96019661]
[-4.87210598 12.42397516]
[-0.34441647 6.36562581]]
[[-1.25946526 21.27487934]
[7.95761543-20.76870705]
[6.99191947 -9.9559785]

[10.80128422 -6.96025542]
[-4.87210144 12.42396098]
[-0.3443928 6.36555416]]

Ve výše uvedeném kódu zmiňujeme, že pro datovou sadu potřebujeme pouze 2 funkce.

Nyní, když máme dobré znalosti o naší datové sadě, se můžeme rozhodnout, jaký druh algoritmů strojového učení na ni můžeme použít. Znalost datové sady je důležitá, protože tak můžeme rozhodnout o tom, jaké informace z ní lze extrahovat a pomocí jakých algoritmů. Pomáhá nám také testovat hypotézu, kterou vytváříme, a předpovídat budoucí hodnoty.

Použití k-means klastrování

Algoritmus shlukování k-means je jedním z nejjednodušších shlukovacích algoritmů pro učení bez dozoru. V tomto klastrování máme nějaký náhodný počet klastrů a klasifikujeme naše datové body do jednoho z těchto klastrů. Algoritmus k-means najde nejbližší klastr pro každý z daného datového bodu a přiřadí tento datový bod tomuto klastru.

Jakmile je klastrování hotové, střed klastru je přepočítán, datovým bodům jsou přiřazeny nové klastry, pokud dojde ke změnám. Tento proces se opakuje, dokud se tam datové body nepřestanou měnit, aby se dosáhlo stability.

Pojďme jednoduše použít tento algoritmus bez jakéhokoli předběžného zpracování dat. Pro tuto strategii bude fragment kódu docela snadný:

z klastru sklearn import
k = 3
k_means = shluk.K Znamená (k)
# fit data
k_means.fit (číslice.data)
# výsledků tisku
print (k_means.štítky _ [:: 10])
tisk (číslice.cíl [:: 10])

Jakmile spustíme výše uvedený fragment kódu, uvidíme následující výstup:

Ve výše uvedeném výstupu vidíme různé shluky poskytované každému datovému bodu.

Závěr

V této lekci jsme se podívali na vynikající knihovnu Machine Learning, scikit-learn. Zjistili jsme, že v rodině scikitů je k dispozici mnoho dalších modulů, a na poskytnutou datovou sadu jsme použili jednoduchý algoritmus k-means. Existuje mnoho dalších algoritmů, které lze v datové sadě použít, kromě k-means shlukování, které jsme použili v této lekci, doporučujeme vám to sdílet a sdílet své výsledky.

Sdělte nám svůj názor na lekci na Twitteru s @sbmaggarwal a @LinuxHint.

Jak používat náhodnou funkci Python NumPy?
Když se hodnota čísla změní při každém spuštění skriptu, pak se toto číslo nazývá náhodné číslo. Náhodná čísla se používají hlavně pro různé typy test...
Jak používat funkci Python NumPy linspace ()?
Pomocí knihovny NumPy lze v Pythonu vytvořit různé typy polí. Před použitím funkce linspace () v Pythonu musíte znát způsoby, jak vytvořit pole NumPy....
Jak používat pole Python NumPy
V Pythonu existuje mnoho knihoven pro provádění různých typů úkolů. NumPy je jedním z nich. Plná forma NumPy je Numerical Python a používá se hlavně p...