Scikit learn - Machine Learning pomocí Pythonu



Blog Scikit learn vám představí Machine Learning v pythonu. Zahrnuje případ použití, kdy budeme implementovat logistickou regresi pomocí scikit learn.

V tomto blogu budeme diskutovat o Scikit learn v pythonu. Než začnete hovořit o Scikitovém učení, musíte pochopit koncept strojového učenía musí vědět, jak používat . Díky strojovému učení nemusíte své statistiky shromažďovat ručně. Potřebujete jen algoritmus a zbytek za vás provede stroj! Není to vzrušující? Scikit learn je jednou z atrakcí, kde můžeme implementovat strojové učení pomocí Pythonu. Toje bezplatná knihovna pro strojové učení, která obsahuje jednoduché a efektivní nástroje pro analýzu dat a těžbu.Provedu vás následujícími tématy, která budou sloužit jako základy pro nadcházející blogy:

Co je to strojové učení?

Strojové učení je druh umělé inteligence, který umožňuje softwarovým aplikacím učit se z dat a zvyšovat přesnost při předpovídání výsledků bez lidského zásahu. Ale jak se to stalo? Za tímto účelem musí být stroj vyškolen na některých datech a na základě toho zjistí vzor pro vytvoření modelu.Tento proces získávání znalostí z dat a poskytování výkonných poznatků je o strojovém učení. Chcete-li lépe porozumět jeho fungování, přečtěte si následující obrázek:





MachineLearning - Scikit Learn - Edureka

Pomocí dat se systém naučí algoritmus a poté jej použije k vytvoření prediktivního modelu. Později model upravíme nebo vylepšíme přesnost modelu pomocí dat zpětné vazby. Pomocí těchto dat zpětné vazby vyladíme model a předpovídáme akci na nové sadě dat. Budemediskutovat a případ použití jednoho z algoritmického přístupu, kde budeme trénovat a testovat data, která vám pomohou dát lepší představu o tom, zda to bude vhodné pro váš konkrétní problém, nebo ne.



Dále existují tři typy strojového učení:

    • Kontrolované učení : Toto je proces algoritmu, který se učí z datové sady tréninku. Kontrolované učení je místo, kde generujete mapovací funkci mezi vstupní proměnnou (X) a výstupní proměnnou (Y) a pomocí algoritmu vygenerujete funkci mezi nimi. To je také známé jako prediktivní modelování, které odkazuje na proces vytváření předpovědí pomocí dat. Některé z algoritmů zahrnují Lineární regrese, Logistická regrese, Rozhodovací strom, Náhodný les a Klasifikátor Naive Bayes. Budeme dále diskutovat případ použití supervizovaného učení, kde trénujeme stroj pomocí logistická regrese .
    • Učení bez dozoru : Jedná se o proces, při kterém je model trénován pomocí informací, které nejsou označeny. Tento proces lze použít ke shlukování vstupních dat do tříd na základě jejich statistických vlastností. Neřízené učení se také nazývá clesklá analýza, což znamená seskupení objektů na základě informací nalezených v datech popisujících objekty nebo jejich vztah. Cílem je, aby objekty v jedné skupině byly navzájem podobné, ale aby se lišily od objektů v jiné skupině. Některé z algoritmů zahrnují shlukování K-prostředků, hierarchické shlukování atd.
    • Učení výztuže: Posílení učení je učení interakcí s prostorem nebo prostředím.Agent RL se spíše poučí z důsledků svých činů, než aby byl výslovně vyučován. Vybírá své akce na základě svých minulých zkušeností (vykořisťování) a také podle nových možností (průzkum).

jak zjistit délku pole v JavaScriptu

Přehled Scikit Learn

Scikit learn je knihovna používaná k provádění strojového učení v Pythonu. Scikit learn je knihovna s otevřeným zdrojovým kódem, která je licencována podle BSD a je opakovaně použitelná v různých kontextech, což podporuje akademické a komerční využití. Poskytuje řadu supervizních a nekontrolovaných algoritmů učení v Pythonu.Scikit learn se skládá z populárních algoritmů a knihoven. Kromě toho obsahuje také následující balíčky:



  • NumPy
  • Matplotlib
  • SciPy (vědecký Python)

Abychom implementovali Scikit learn, musíme nejprve importovat výše uvedené balíčky. Pokud tyto knihovny neznáte, můžete si prohlédnout mé předchozí blogy na a . Tyto dva balíčky si můžete stáhnout pomocí příkazového řádku nebo pokud používáte PYKouzlo, můžete jej přímo nainstalovat tak, že přejdete na své nastavení stejným způsobem jako u jiných balíčků.

Dále podobným způsobem, musíte importovat Sklearn.Scikit learn je postaven na SciPy (Scientific Python), který musí být nainstalován, než budete moci používat Scikit-learn. Můžete se na to odvolat webová stránka stáhnout stejné. Nainstalujte si také balíček Scipy a kolečko, pokud není k dispozici, můžete zadat následující příkaz:

pip install scipy

Již jsem si jej stáhl a nainstaloval, pro případ nejasností se můžete podívat na níže uvedený snímek obrazovky.

Po importu výše uvedených knihoven pojďme hlouběji a pochopíme, jak přesně se Scikit learn používá.

Scikit learn přichází s ukázkovými datovými sadami, jako např duhovka a číslice . Můžete importovat datové sady a hrát si s nimi. Poté musíte importovat SVM, což je zkratka pro Support Vector Machine. SVM je forma strojového učení, která se používá k analýze dat.

Vezměme si příklad, kam se vezmeme číslice datová sada a bude za nás kategorizovat čísla, například - 0 1 2 3 4 5 6 7 8 9. Viz níže uvedený kód:

import matplotlib.pyplot jako plt ze sklearn import datových sad ze sklearn import svm digits = datasets.load_digits () print (digits.data)

Výstup -

[[0. 0. 5. ..., 0. 0. 0.] [0. 0. 0. ..., 10. 0. 0.] [0. 0. 0. ..., 16. 9. 0.] ..., [0. 0. 1. ..., 6. 0. 0.] [0. 0. 2. ..., 12. 0. 0.] [0. 0. 10. ..., 12. 1. 0.]]

Zde jsme právě importovali knihovny, SVM, datové sady a vytiskli data. Je to dlouhá řada číslic, kde jsou data uložena. Poskytuje přístup k funkcím, které lze použít ke klasifikaci číslice Vzorky. Dále můžete také vyzkoušet některé další operace, jako je cíl, obrázky atd. Zvažte následující příklad:

import matplotlib.pyplot jako plt ze sklearn import datových sad ze sklearn import svm digits = datasets.load_digits () print (digits.target) print (digits.images [0])

Výstup -

[0 1 2 ..., 8 9 8] // cíl dat [[0. 0. 5. 13. 9. 1. 0. 0.] // obraz dat [0. 0. 13.. 15. 10. 15. 5. 0.] [0. 3. 15. 2. 0. 11. 8. 0.] [0. 4. 12. 0. 0. 8. 8. 0.] [0. 5. 8. 0. 0. 9. 8. 0.] [0. 4. 11. 0. 1. 12. 7. 0.] [0. 2. 14. 5. 10. 12. 0. 0. ] [0. 0. 6. 13. 10. 0. 0. 0.]]

Jak vidíte výše, vytisknou se cílové číslice a obraz číslic. číslice. cíl dává základní pravdu pro číslice datová sada, to je číslo odpovídající každému číslicovému obrázku. Dále jsou data vždy 2D pole, které má tvar (n_samples, n_features), i když původní data mohla mít jiný tvar. Ale v případě číslic je každý původní vzorek obrazem tvaru (8,8) a lze k němu přistupovat pomocí číslice . obraz.

Učení a předpovídání

Dále v Scikit learn jsme použili datovou sadu (ukázka 10 možných tříd, číslice od nuly do devíti) a musíme předpovědět číslice, když je uveden obrázek. K předvídání třídy potřebujeme odhadce což pomáhá předvídat třídy, do kterých patří neviditelné vzorky. V Scikit learn máme odhad pro klasifikaci, což je objekt pythonu, který implementuje metody fit (x, y) a předpovědět (T). Zvažme následující příklad:

import matplotlib.pyplot jako plt ze sklearn import datových sad ze sklearn import svm digits = datasets.load_digits () // datová sada clf = svm.SVC (gamma = 0,001, C = 100) tisk (len (digits.data)) x, y = digits.data [: - 1], digits.target [: - 1] // trénovat data clf.fit (x, y) print ('Predikce:', clf.predict (digits.data [-1]) ) // předpovídat data plt.imshow (digits.images [-1], cmap = plt.cm.gray_r, interpolace = 'nejbližší') plt.show ()

Výstup -

1796
Předpověď: [8]


Ve výše uvedeném příkladu jsme nejprve našli délku a načetli 1796 příkladů. Dále jsme tato data použili jako data učení, kde musíme otestovat poslední prvek a první záporný prvek. Musíme také zkontrolovat, zda stroj předpověděl správná data, či nikoli. K tomu jsme použili Matplotlib, kde jsme zobrazili obrázek číslic.Takže na závěr, máte data číslic, máte cíl, zapadáte a předpovídáte ho, a proto je dobré jít! Je to opravdu rychlé a snadné, že?

Můžete také vizualizovat cílové štítky s obrázkem, stačí se podívat na následující kód:

import matplotlib.pyplot jako plt ze sklearn import datových sad ze sklearn import svm digits = datasets.load_digits () # Připojte obrázky a cílové štítky do seznamu images_and_labels = list (zip (digits.images, digits.target)) # pro každý prvek v seznamu pro index, (obrázek, štítek) ve výčtu (images_and_labels [: 8]): # inicializovat subplot 2X4 na i + 1. pozici plt.subplot (2, 4, index + 1) # zobrazit obrázky ve všech dílčích grafech plt.imshow (obrázek, cmap = plt.cm.gray_r, interpolace = 'nejbližší') # Přidejte název do každého dílčího grafu plt.title ('Training:' + str (label)) # Zobrazit graf plt. ukázat()

Výstup-


Jak vidíte ve výše uvedeném kódu, použili jsme funkci „zip“, abychom spojili obrázky a cílové štítky v seznamu a poté je uložili do proměnné, řekněme images_and_labels. Poté jsme indexovali prvních osm prvků v mřížce 2 x 4 na každé pozici. Poté jsme pouze zobrazili obrázky pomocí Matplotlib a přidali jsme název jako „trénink“.

Pouzdro - Predikce pomocí logistické regrese

Problémové prohlášení - Automobilka uvedla na trh nové SUV. Na základě předchozích údajů o prodeji svých SUV chtějí předpovědět kategorii lidí, kteří by mohli mít zájem o koupi tohoto SUV.

Podívejme se na to, kde mám datovou sadu UserId, pohlaví, věk, odhadovaný plat a zakoupené jako sloupce. Toto je pouze ukázková datová sada, ze které si můžete stáhnout celou datovou sadu tady . Jakmile importujeme data do pyCharm, vypadá to nějak takto.

jak proměnit double na int java

Nyní pochopme tato data. Jak můžete vidět ve výše uvedené datové sadě, máme kategorie jako id, pohlaví, věk atd. Nyní na základě těchto kategorií budeme trénovat náš stroj a předpovídat ne. nákupů. Takže tady máme nezávislé proměnné jako „věk“, „očekávaný plat“ a závislá proměnná jako „zakoupené“. Nyní použijeme supervizované učení, tj algoritmus logistické regrese zjistit počet nákupů pomocí existujících údajů.

Nejprve se podívejme na přehled logistické regrese.

Logistická regrese - Logistická regrese vytváří výsledky v binárním formátu, který se používá k předpovědi výsledku kategoricky závislé proměnné. Nejčastěji se používá, když je závislá proměnná binární, tj. Počet dostupných kategorií je dva, například obvyklé výstupy logistické regrese jsou -

  • Ano i ne
  • Pravda a lež
  • Vysoko a nízko
  • Úspěšné a neúspěšné

Začneme s kódem, nejprve importujeme tyto knihovny - Numpy, Matplotlib a Pandas. Import pand do Pycharmu je docela snadný podle následujících kroků:

java deep copy vs mělká kopie
Nastavení -> Přidat balíček -> Pandy -> Instalovat

Poté importujeme datovou sadu a oddělíme závislou proměnnou (zakoupenou) a nezávislou proměnnou (věk, plat) podle:

dataset = pd.read_csv ('Social_Network_Ads.csv') X = dataset.iloc [:, [2, 3]]. hodnoty y = dataset.iloc [:, 4] .hodnoty print (X) print (y)

Dalším krokem by bylo školení a testování dat. Běžnou strategií je převzít všechna označená data a rozdělit je na podmnožiny tréninku a testování, což se obvykle bere v poměru 70–80% pro podmnožinu tréninku a 20-30% pro podmnožinu testování. Proto jsme vytvořili vytvoření tréninkových a testovacích sad pomocí cross_validation.

ze sklearn.cross_validation import train_test_split X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0,25, random_state = 0)

Můžeme také škálovat vstupní hodnoty pro lepší výkon pomocí StandarScaler, jak je znázorněno níže:

ze sklearn.preprocessing import StandardScaler sc = StandardScaler () X_train = sc.fit_transform (X_train) X_test = sc.transform (X_test)

Nyní vytvoříme náš model logistické regrese.

ze sklearn.linear_model import LogisticRegression classifier = LogisticRegression (random_state = 0) classifier.fit (X_train, y_train)

Můžeme to použít a předpovědět výsledky naší testovací sady.

y_pred = classifier.predict (X_test)

Nyní můžeme zkontrolovat, kolik předpovědí bylo přesných a kolik nepoužívalo zmatená matice . Definujme Y jako pozitivní instance a N jako negativní instance. Čtyři výsledky jsou formulovány v matici zmatenosti 2 * 2, jak je znázorněno níže:

ze sklearn.metrics import confusion_matrix cm = confusion_matrix (y_test, y_pred) tisk (cm)

Výstup-

[[65 3] [8 24]]

Dále můžeme na základě naší matice zmatku vypočítat přesnost. V našem výše uvedeném příkladu by tedy přesnost byla:

= TP + TN / FN + FP

= 65 + 24/65 +3+ 8 + 24

= 89%

Udělali jsme to ručně! Nyní se podívejme, jak pro nás stroj vypočítá totéž, protože pro to máme vestavěnou funkci „přesnost_skóre“, která vypočítá přesnost a vytiskne ji, jak je znázorněno níže:

ze sklearn.metrics import přesnost_skóre // import funkce přesnost_skóre tisk (přesnost_skóre (y_test, y_pred) * 100) // vytiskne přesnost

Výstup -

89,0

Hurá! Takto jsme úspěšně implementovali logistickou regresi pomocí Scikit learn s přesností 89%.

Klikněte zde získat úplný úplný zdroj výše uvedené predikce pomocí Python Scikit naučit knihovnu.

Tím jsme pokryli pouze jeden z mnoha populárních algoritmů, které python nabízí.Pokryli jsme všechny základy Scikitu naučit se knihovnu,takže teď můžete začít cvičit. Čím více procvičujete, tím více se naučíte. Zůstaňte naladěni na další výukové blogy pro python!

Máte na nás dotaz? Uveďte to prosím v sekci komentářů tohoto blogu „Scikit learn“ a my se vám ozveme co nejdříve. Chcete-li získat podrobné znalosti o Pythonu a jeho různých aplikacích, můžete pro živé online školení s 24/7 podporou a celoživotním přístupem.