Scikit learn - Strojové učenie pomocou Pythonu



Blog Scikit learn vám predstaví Machine Learning v pythone. Zahŕňa prípad použitia, keď pomocou scikit learn implementujeme logistickú regresiu.

V tomto blogu budeme diskutovať o tom, ako sa Scikit učil v pythone. Predtým, ako začnete hovoriť o Scikite učiť, musíte pochopiť koncept strojového učeniaa musí vedieť, ako používať . Vďaka strojovému učeniu nemusíte zhromažďovať svoje štatistiky ručne. Potrebujete iba algoritmus a stroj urobí zvyšok za vás! Nie je to vzrušujúce? Scikit learn je jednou z atrakcií, kde môžeme implementovať strojové učenie pomocou Pythonu. Toje bezplatná knižnica strojového učenia, ktorá obsahuje jednoduché a efektívne nástroje na analýzu údajov a na dolovanie.Prevediem vás nasledujúcimi témami, ktoré budú slúžiť ako základ pre nadchádzajúce blogy:

Čo je to strojové učenie?

Strojové učenie je druh umelej inteligencie, ktorá umožňuje softvérovým aplikáciám učiť sa z údajov a presnejšie predpovedať výsledky bez ľudského zásahu. Ako sa to však stane? Za týmto účelom musí byť stroj vyškolený v niektorých údajoch a na základe toho zistí vzor na vytvorenie modelu.Tento proces získavania vedomostí z údajov a poskytovania účinných poznatkov je o strojovom učení. Na nasledujúcom obrázku nájdete lepšie informácie o jeho fungovaní:





MachineLearning - Scikit Learn - Edureka

Pomocou týchto údajov sa systém naučí algoritmus a potom ich použije na zostavenie prediktívneho modelu. Neskôr model upravíme alebo zvýšime presnosť modelu pomocou údajov spätnej väzby. Pomocou týchto údajov spätnej väzby vyladíme model a predpovedáme akciu na novú množinu údajov. Budemediskutovať a prípad použitia jedného z algoritmického prístupu, kde budeme trénovať a testovať údaje, ktoré vám pomôžu lepšie pochopiť, či bude pre váš konkrétny problém vyhovovať alebo nie.



Ďalej existujú tri typy strojového učenia:

    • Učenie pod dohľadom : Toto je proces algoritmu, ktorý sa učí z množiny údajov o tréningu. Kontrolované učenie je miesto, kde generujete mapovaciu funkciu medzi vstupnou premennou (X) a výstupnou premennou (Y) a pomocou algoritmu na vygenerovanie funkcie medzi nimi. Je tiež známy ako prediktívne modelovanie, ktoré označuje proces vytvárania predpovedí pomocou údajov. Niektoré z algoritmov zahŕňajú lineárnu regresiu, logistickú regresiu, rozhodovací strom, náhodný les a klasifikátor Naive Bayes. Ďalej budeme diskutovať o prípade použitia učeného pod dohľadom, kde trénujeme stroj pomocou logistická regresia .
    • Učenie bez dozoru : Toto je proces, pri ktorom sa model trénuje pomocou informácií, ktoré nie sú označené. Tento proces možno použiť na zoskupenie vstupných údajov do tried na základe ich štatistických vlastností. Učenie sa bez učiteľa sa tiež nazýva clesklá analýza, čo znamená zoskupenie objektov na základe informácií nájdených v dátach popisujúcich objekty alebo ich vzťahu. Cieľom je, aby sa objekty v jednej skupine navzájom podobali, ale aby sa odlišovali od objektov v inej skupine. Niektoré z algoritmov zahŕňajú zhlukovanie K-prostriedkov, hierarchické zhlukovanie atď.
    • Výučba výstuže: Posilňovanie je učenie prostredníctvom interakcie s priestorom alebo prostredím.Agent RL sa učí skôr z dôsledkov svojich činov, ako z explicitného výučby. Svoje akcie si vyberá na základe svojich minulých skúseností (vykorisťovanie) a tiež na základe nových možností (prieskum).

ako písať metódu tostring v jave -

Prehľad Scikit Learn

Scikit learn je knižnica používaná na vykonávanie strojového učenia v Pythone. Scikit learn je knižnica s otvoreným zdrojom, ktorá má licenciu BSD a je opakovane použiteľná v rôznych kontextoch, čo podporuje akademické a komerčné použitie. Poskytuje celý rad učiacich sa algoritmov pod dohľadom a bez dozoru v Pythone.Scikit learn pozostáva z populárnych algoritmov a knižníc. Okrem toho obsahuje aj nasledujúce balíčky:



  • NumPy
  • Matplotlib
  • SciPy (vedecký python)

Aby sme implementovali Scikit learn, musíme najskôr importovať vyššie uvedené balíčky. Ak nie ste oboznámení s týmito knižnicami, môžete si pozrieť moje predchádzajúce blogy na a . Tieto dva balíčky si môžete stiahnuť pomocou príkazového riadku alebo ak používate PY.Kúzlo, môžete ho priamo nainštalovať tak, že prejdete na svoje nastavenie rovnakým spôsobom, ako to urobíte pre ostatné balíčky.

Ďalej podobným spôsobom, musíte importovať Sklearn.Scikit learn je postavený na SciPy (Scientific Python), ktorý musí byť nainštalovaný skôr, ako budete môcť používať Scikit-learn. Môžete sa na to odvolať webovú stránku stiahnuť to isté. Nainštalujte si tiež balíček Scipy a koleso, ak nie je k dispozícii, môžete zadať nasledujúci príkaz:

pip nainštalovať scipy

Už som si ho stiahol a nainštaloval. Nejasnosti si môžete prečítať na nasledujúcom obrázku.

Po importovaní vyššie uvedených knižníc sa pozrime podrobnejšie a pochopme, ako presne sa používa Scikit learn.

Scikit learn prichádza s ukážkovými súbormi údajov, ako napr dúhovka a číslice . Môžete importovať množiny údajov a pohrať sa s nimi. Potom musíte importovať SVM, čo je skratka pre Support Vector Machine. SVM je forma strojového učenia, ktorá sa používa na analýzu údajov.

Zoberme si príklad, kam sa vezmeme číslice datová sada a kategorizuje nám čísla, napríklad - 0 1 2 3 4 5 6 7 8 9. Prečítajte si kód uvedený nižšie:

importovať matplotlib.pyplot ako plt z sklearn importovať množiny údajov zo sklearn importovať svm digits = datasets.load_digits () print (digits.data)

Výkon -

[[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.]]

Tu sme práve importovali knižnice, SVM, súbory údajov a vytlačili údaje. Je to dlhé pole číslic, kde sú uložené údaje. Poskytuje prístup k funkciám, ktoré možno použiť na klasifikáciu súboru číslice vzorky. Ďalej môžete tiež vyskúšať niektoré ďalšie operácie, ako napríklad cieľ, obrázky atď. Zvážte príklad uvedený nižšie:

importovať matplotlib.pyplot ako plt z sklearn importovať množiny údajov zo sklearn importovať svm digits = datasets.load_digits () print (digits.target) print (digits.images [0])

Výkon -

[0 1 2 ..., 8 9 8] // cieľ dát [[0. 0. 5. 13. 9. 1. 0. 0.] // obraz dát [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.]]

Ako vidíte vyššie, cieľové číslice a obraz číslic sa vytlačia. číslice.cieľ dáva základnú pravdu pre číslica množina údajov, to je číslo zodpovedajúce každej číslici. Ďalej sú dáta vždy 2D pole, ktoré má tvar (n_samples, n_features), aj keď pôvodné údaje mohli mať iný tvar. Ale v prípade číslic je každá originálna vzorka obrazom tvaru (8,8) a je k nej prístup pomocou číslice . obrázok.

Učenie a predpovedanie

Ďalej sme v Scikit learn použili dátovú množinu (vzorka 10 možných tried, číslice od nuly do deväť) a potrebujeme predpovedať číslice, keď bude daný obrázok. Na predpovedanie triedy potrebujeme odhadca čo pomáha predvídať triedy, do ktorých patria neviditeľné vzorky. V Scikit learn máme odhad pre klasifikáciu, ktorý je objektom pythonu, ktorý implementuje metódy fit (x, y) a predpovedať (T). Pozrime sa na nasledujúci príklad:

importovať matplotlib.pyplot ako plt z sklearn importovať datové sady zo sklearn import svm digits = datasets.load_digits () // dataset clf = svm.SVC (gamma = 0,001, C = 100) print (len (digits.data)) x, y = digits.data [: - 1], digits.target [: - 1] // trénovať dáta clf.fit (x, y) print ('Predikcia:', clf.predict (digits.data [-1]) ) // predpovedanie údajov plt.imshow (digits.images [-1], cmap = plt.cm.gray_r, interpolácia = 'najbližší') plt.show ()

Výkon -

1796
Predpoveď: [8]


Vo vyššie uvedenom príklade sme najskôr našli dĺžku a načítali 1796 príkladov. Ďalej sme tieto údaje použili ako učiace sa údaje, kde je potrebné otestovať posledný a prvý negatívny prvok. Musíme tiež skontrolovať, či stroj predpovedal správne údaje alebo nie. Na to sme použili Matplotlib, kde sme zobrazili obrázok číslic.Takže na záver, máte číslicové údaje, dostali ste cieľ, zapadnete a predpovedáte ho, a preto je dobré ísť! Je to naozaj rýchle a ľahké, nie?

Cieľové štítky môžete tiež vizualizovať pomocou obrázka, stačí použiť nasledujúci kód:

import matplotlib.pyplot ako plt z sklearn import súborov dát zo sklearn import svm digits = datasets.load_digits () # Pripojte obrázky a cieľové štítky do zoznamu images_and_labels = list (zip (digits.images, digits.target)) # pre každý prvok v zozname pre index (obrázok, menovka) v zozname (obrázky_a_štítky [: 8]): # inicializuje subplot 2X4 na i + 1. pozícii plt.subplot (2, 4, index + 1) # zobraziť obrázky vo všetkých subplotoch plt.imshow (image, cmap = plt.cm.gray_r, interpolation = 'nearest') # Pridajte názov do každého subplotu plt.title ('Training:' + str (label)) # Zobraziť graf plt. šou()

Výkon-


Ako vidíte vo vyššie uvedenom kóde, pomocou funkcie „zip“ sme spojili obrázky a cieľové štítky v zozname a potom ich uložili do premennej, napríklad images_and_labels. Potom sme indexovali prvých osem prvkov do mriežky 2 krát 4 na každej pozícii. Potom sme iba zobrazili obrázky pomocou Matplotlibu a pridali sme názov ako „školenie“.

Prípad použitia - Predikcia pomocou logistickej regresie

Vyhlásenie o probléme - Automobilka uviedla na trh nové SUV. Na základe predchádzajúcich údajov o predaji svojich vozidiel SUV chcú predpovedať kategóriu ľudí, ktorí by mohli mať záujem o kúpu tohto SUV.

Pozrime sa preto na súbor údajov, ktorý mám UserId, pohlavie, vek, odhadovaný plat a zakúpené ako stĺpce. Toto je iba vzorová množina údajov, z ktorej si môžete stiahnuť celú množinu údajov tu . Akonáhle importujeme údaje do pyCharm, vyzerá to nejako takto.

fibonacci c ++ rekurzívny

Teraz porozumieme týmto údajom. Ako vidíte vo vyššie uvedenom súbore údajov, máme kategórie ako id, pohlavie, vek atď. Na základe týchto kategórií teraz trénujeme náš stroj a predpovedáme nie. nákupov. Takže tu máme nezávislé premenné ako „vek“, „očakávaný plat“ a závislá premenná ako „zakúpené“. Teraz použijeme učenie pod dohľadom, t.j. algoritmus logistickej regresie zistiť počet nákupov pomocou existujúcich údajov.

Najskôr si urobme prehľad o logistickej regresii.

Logistická regresia - Logistická regresia vytvára výsledky v binárnom formáte, ktorý sa používa na predikciu výsledku kategoricky závislej premennej. Najčastejšie sa používa, keď je závislá premenná binárna, tj. Počet dostupných kategórií je dva, napríklad zvyčajné výstupy logistickej regresie sú -

  • Áno a nie
  • Pravdivé a nepravdivé
  • Vysoko a nízko
  • Úspešne a úspešne

Teraz, keď začneme kódom, najskôr importujeme tieto knižnice - Numpy, Matplotlib a Pandas. Importovať pandy do Pycharmu je celkom ľahké podľa nasledujúcich krokov:

ako vytvoriť sadu
Nastavenia -> Pridať balík -> Pandy -> Inštalovať

Potom importujeme množinu údajov a samostatnú závislú premennú (zakúpenú) a samostatnú premennú (vek, plat) podľa:

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

Ďalším krokom by bolo školenie a testovanie údajov. Spoločnou stratégiou je zobrať všetky označené údaje a rozdeliť ich na podmnožiny tréningu a testovania, ktoré sa zvyčajne berú s pomerom 70 - 80% pre podmnožinu tréningu a 20 - 30% pre podmnožinu testovania. Preto sme vytvorili vytvorenie tréningových a testovacích sád pomocou cross_validation.

z 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 tiež škálovať vstupné hodnoty pre lepší výkon pomocou programu StandarScaler, ako je uvedené nižšie:

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

Teraz vytvoríme náš model logistickej regresie.

z sklearn.linear_model import LogisticRegression klasifikátor = LogisticRegression (random_state = 0) classifier.fit (X_train, y_train)

Môžeme to použiť a predpovedať výsledky našej testovacej sady.

y_pred = classifier.predict (X_test)

Teraz môžeme skontrolovať, koľko predpovedí bolo presných a koľko nepoužívali zmätková matica . Definujme Y ako pozitívne inštancie a N ako negatívne inštancie. Štyri výsledky sú formulované v matici zmätenosti 2 * 2, ako je uvedené nižšie:

z sklearn.metrics import confusion_matrix cm = confusion_matrix (y_test, y_pred) tlač (cm)

Výkon-

[[65 3] [8 24]]

Ďalej môžeme na základe našej matice zmätku vypočítať presnosť. V našom vyššie uvedenom príklade by teda presnosť bola:

= TP + TN / FN + FP

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

= 89%

Urobili sme to ručne! Teraz sa pozrime, ako stroj počíta to isté pre nás, pretože máme vstavanú funkciu „presnosť_skóre“, ktorá počíta presnosť a tlačí ju, ako je uvedené nižšie:

z sklearn.metrics import presnosť_score // import funkcie presnosť_score tlač (presnosť_score (y_test, y_pred) * 100) // vypíše presnosť

Výkon -

89,0

Hurá! Takto sme úspešne implementovali logistickú regresiu pomocou Scikit learn s presnosťou na 89%.

Kliknite tu získať úplný úplný zdroj vyššie uvedenej predikcie pomocou Python Scikit naučiť sa knižnicu.

Týmto sme sa zaoberali iba jedným z mnohých populárnych algoritmov, ktoré python ponúka.Prebrali sme všetky základné informácie o tom, ako sa Scikit učí knižnicu,takže teraz môžete začať cvičiť. Čím viac cvičíte, tým viac sa naučíte. Zostaňte naladení na ďalšie blogy s návodmi pre python!

Máte na nás otázku? Uveďte to v sekcii komentárov tohto blogu „Scikit learn“ a my sa vám ozveme čo najskôr. Ak chcete získať podrobné informácie o Pythone a jeho rôznych aplikáciách, môžete pre živé online školenie s nepretržitou podporou a doživotným prístupom.