Scikit learn - Strojno učenje s pomočjo Pythona



Blog Scikit learn vas bo seznanil s strojnim učenjem v pythonu. Vključuje primer uporabe, kjer bomo izvedli logistično regresijo z uporabo scikit learn.

V tem blogu bomo razpravljali o učenju Scikit v pythonu. Preden se pogovarjamo o Scikit učenju, moramo razumeti koncept strojnega učenjain mora znati uporabljati . Pri strojnem učenju vam ni treba ročno zbirati svojih spoznanj. Potrebujete samo algoritem in vse bo stroj naredil namesto vas! Ali ni to vznemirljivo? Scikit learn je ena od atrakcij, kjer lahko s pomočjo Pythona izvedemo strojno učenje. Toje brezplačna knjižnica strojnega učenja, ki vsebuje preprosta in učinkovita orodja za analizo podatkov in rudarske namene.Popeljal vas bom med naslednje teme, ki bodo služile kot osnova za prihajajoče bloge:

Kaj je strojno učenje?

Strojno učenje je vrsta umetne inteligence, ki omogoča programskim aplikacijam, da se učijo iz podatkov in postanejo natančnejše pri napovedovanju rezultatov brez človekovega posredovanja. Kako pa se to zgodi? Za to je treba stroj usposobiti za nekatere podatke in na podlagi tega zaznati vzorec za izdelavo modela.Ta postopek pridobivanja znanja iz podatkov in pridobivanja močnih vpogledov je v strojnem učenju. Oglejte si spodnjo sliko, da boste bolje razumeli njeno delovanje:





MachineLearning - Scikit Learn - Edureka

Z uporabo podatkov se sistem nauči algoritma in ga nato uporabi za izdelavo napovednega modela. Kasneje prilagodimo model ali z uporabo povratnih podatkov povečamo natančnost modela. S pomočjo teh povratnih podatkov prilagodimo model in napovemo delovanje novega nabora podatkov. Bomorazpravljati o primer uporabe enega od algoritemskih pristopov, kjer bomo usposobili in testirali podatke, ki vam bodo pomagali bolje razumeti, ali bodo primerni za vašo težavo ali ne.



Nato obstajajo tri vrste strojnega učenja:

    • Nadzorovano učenje : To je postopek algoritma, ki se uči iz nabora podatkov o vadbi. Nadzorovano učenje je mesto, kjer ustvarite funkcijo preslikave med vhodno spremenljivko (X) in izhodno spremenljivko (Y) in z algoritmom ustvarite funkcijo med njimi. Znano je tudi kot napovedno modeliranje, ki se nanaša na postopek napovedovanja z uporabo podatkov. Nekateri algoritmi vključujejo Linearno regresijo, Logistično regresijo, Drevo odločitev, Naključni gozd in Naive Bayesov klasifikator. Nadalje bomo razpravljali o primeru uporabe nadzorovanega učenja, kjer vadimo stroj logistična regresija .
    • Nenadzorovano učenje : To je postopek, pri katerem se model usposobi z uporabo informacij, ki niso označene. Ta postopek lahko uporabimo za združevanje vhodnih podatkov v razrede na podlagi njihovih statističnih lastnosti. Nenadzorovano učenje se imenuje tudi cluster analiza, ki pomeni združevanje predmetov na podlagi informacij, ki jih najdemo v podatkih, ki opisujejo predmete ali njihov odnos. Cilj je, da so predmeti v eni skupini med seboj podobni, vendar drugačni od predmetov v drugi skupini. Nekateri algoritmi vključujejo združevanje K-sredstev, hierarhično združevanje itd.
    • Okrepitveno učenje: Okrepitveno učenje je učenje z interakcijo s prostorom ali okoljem.Agent RL se uči iz posledic svojih dejanj in ne izrecno poučevanja. Svoje ukrepe izbira na podlagi svojih preteklih izkušenj (izkoriščanje) in tudi na podlagi novih odločitev (raziskovanje).

Pregled Scikit Learn

Scikit learn je knjižnica, ki se uporablja za strojno učenje v Pythonu. Scikit learn je odprtokodna knjižnica, ki je licencirana pod BSD in jo je mogoče ponovno uporabiti v različnih kontekstih, kar spodbuja akademsko in komercialno uporabo. Ponuja vrsto nadzorovanih in nenadzorovanih učnih algoritmov v Pythonu.Scikit learn sestavljajo priljubljeni algoritmi in knjižnice. Poleg tega vsebuje tudi naslednje pakete:



  • NumPy
  • Matplotlib
  • SciPy (znanstveni Python)

Za izvedbo Scikit learn moramo najprej uvoziti zgornje pakete. Če teh knjižnic ne poznate, si lahko ogledate moje prejšnje bloge na in . Ta dva paketa lahko prenesete z ukazno vrstico ali če uporabljate PY.Očarljivo, lahko ga namestite neposredno tako, da greste do nastavitve na enak način kot za druge pakete.

Nato na podoben način, morate uvoziti Sklearn.Scikit learn temelji na SciPy (Scientific Python), ki ga morate namestiti, preden lahko uporabite Scikit-learn. Lahko se sklicujete na to Spletna stran za prenos istega. Namestite tudi paket Scipy in wheel, če ga ni, lahko vnesete spodnji ukaz:

pip namestite

Sem ga že prenesel in namestil, za kakršno koli zmedo si lahko ogledate spodnji posnetek zaslona.

Po uvozu zgornjih knjižnic se poglobimo in razumemo, kako natančno se Scicit uči.

Scikit learn prihaja z vzorčnimi nabori podatkov, kot je iris in števke . Podatkovne nize lahko uvozite in se z njimi poigrate. Po tem morate uvoziti SVM, kar pomeni Support Vector Machine. SVM je oblika strojnega učenja, ki se uporablja za analizo podatkov.

Vzemimo primer, kam bomo vzeli števke nabor podatkov in nam bo kategoriziral številke, na primer - 0 1 2 3 4 5 6 7 8 9. Glejte spodnjo kodo:

kopica in sklad v javi
uvozi matplotlib.pyplot kot plt iz sklearn uvozi nabore podatkov iz sklearn uvozi svm digits = datasets.load_digits () print (digits.data)

Izhod -

[[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 smo pravkar uvozili knjižnice, SVM, nabore podatkov in podatke natisnili. To je dolga vrsta števk podatkov, kjer so podatki shranjeni. Omogoča dostop do lastnosti, ki jih je mogoče uporabiti za razvrščanje števke vzorcev. Nato lahko poskusite tudi z drugimi operacijami, kot so tarča, slike itd. Oglejte si spodnji primer:

uvozi matplotlib.pyplot kot plt iz sklearn uvozi nabore podatkov iz sklearn uvozi svm digits = datasets.load_digits () print (digits.target) print (digits.images [0])

Izhod -

[0 1 2 ..., 8 9 8] // cilj podatkov [[0. 0. 5. 13. 9. 1. 0. 0.] // slika podatkov [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.]]

Kot lahko vidite zgoraj, se natisnejo ciljne številke in njihova slika. številke.cilj daje temeljno resnico za številka nabor podatkov, to je številka, ki ustreza vsaki števki slike. Nato so podatki vedno 2D matrika, ki ima obliko (n_amples, n_features), čeprav so bili izvirni podatki lahko drugačne oblike. V primeru številk pa je vsak izvirni vzorec podoba oblike (8,8) in do njega je mogoče dostopati z uporabo števke . slike.

Učenje in napovedovanje

Nato smo pri učenju Scikit uporabili nabor podatkov (vzorec 10 možnih razredov, števke od nič do devet) in moramo predvideti številke, ko dobimo sliko. Za napoved razreda potrebujemo ocenjevalnik kar pomaga predvideti razrede, ki jim pripadajo nevidni vzorci. V programu Scikit learn imamo ocenjevalnik za razvrstitev, ki je objekt python, ki izvaja metode fit (x, y) in napovedi (T). Oglejmo si spodnji primer:

uvoz matplotlib.pyplot kot plt iz sklearn uvoz naborov podatkov iz sklearn uvoz svm digits = datasets.load_digits () // nabor podatkov clf = svm.SVC (gama = 0,001, C = 100) print (len (digits.data)) x, y = digits.data [: - 1], digits.target [: - 1] // usposobimo podatke clf.fit (x, y) print ('Prediction:', clf.predict (digits.data [-1]) ) // predvideti podatke plt.imshow (digits.images [-1], cmap = plt.cm.gray_r, interpolation = 'najbližji') plt.show ()

Izhod -

1796
Napoved: [8]

kako klonirati predmet v javi -


V zgornjem primeru smo najprej našli dolžino in naložili 1796 primerov. Nato smo te podatke uporabili kot učne podatke, kjer moramo preizkusiti zadnji in prvi negativni element. Prav tako moramo preveriti, ali je naprava predvidela prave podatke ali ne. Za to smo uporabili Matplotlib, kjer smo prikazali sliko številk.Za konec sklepamo, da imate podatke o števkah, dobili ste tarčo, jo prilagodili in napovedali, zato ste pripravljeni! Je res hitro in enostavno, kajne?

Ciljne nalepke si lahko tudi predstavite s sliko, samo glejte spodnjo kodo:

import matplotlib.pyplot as plt from sklearn import nabori podatkov iz sklearn import svm digits = datasets.load_digits () # Pridružite se slikam in ciljnim oznakam na seznamu images_and_labels = list (zip (digits.images, digits.target)) # za vsak element na seznamu za indeks, (slika, nalepka) v enumerate (images_and_labels [: 8]): # inicializirajte podplos 2X4 na i + 1-em položaju plt.subplot (2, 4, index + 1) # Prikaži slike v vseh podploskvah plt.imshow (slika, cmap = plt.cm.gray_r, interpolation = 'najbližje') # Dodajte naslov vsakemu podplosu plt.title ('Izobraževanje:' + str (nalepka)) # Pokaži plot plt. pokaži ()

Izhod-


Kot lahko vidite v zgornji kodi, smo s funkcijo 'zip' združili slike in ciljne nalepke na seznamu ter jo nato shranili v spremenljivko, recimo images_and_labels. Po tem smo prvih osem elementov indeksirali v mrežo 2 krat 4 na vsakem položaju. Po tem smo slike šele prikazali s pomočjo Matplotliba in dodali naslov kot 'trening'.

Primer uporabe - Napovedovanje z uporabo logistične regresije

Izjava o težavi - Avtomobilsko podjetje je na trg izdalo novega športnega terenca. Na podlagi prejšnjih podatkov o prodaji njihovih športnih terencev želijo napovedati kategorijo ljudi, ki bi jih to morda zanimalo.

Za to si oglejmo nabor podatkov, kjer imam ID uporabnika, spol, starost, predvidena plača in kupljeni kot stolpci. To je le vzorec nabora podatkov, iz katerega lahko prenesete celoten nabor podatkov tukaj . Ko podatke uvozimo v pyCharm, je videti nekako tako.

Zdaj pa razumimo te podatke. Kot lahko vidite v zgornjem naboru podatkov, imamo kategorije, kot so id, spol, starost itd. Zdaj bomo na podlagi teh kategorij usposobili naš stroj in predvideli št. nakupov. Torej, imamo neodvisne spremenljivke kot 'starost', 'pričakovana plača' in odvisna spremenljivka kot 'kupljeno'. Zdaj bomo uporabili nadzorovano učenje, tj logistični regresijski algoritem da ugotovite število nakupov z uporabo obstoječih podatkov.

Najprej si oglejmo logistično regresijo.

Logistična regresija - Logistična regresija daje rezultate v binarni obliki, ki se uporablja za napovedovanje izida kategorično odvisne spremenljivke. Najpogosteje se uporablja, kadar je odvisna spremenljivka binarna, tj. Število razpoložljivih kategorij je dve, na primer običajni izhodi logistične regresije so -

  • Da in ne
  • Resnično in neresnično
  • Visoko in nizko
  • Pass in Fail

Zdaj, da začnemo s kodo, bomo najprej uvozili te knjižnice - Numpy, Matplotlib in Pande. Precej enostavno je uvoziti pande v Pycharm, tako da sledite spodnjim korakom:

Nastavitve -> Dodaj paket -> Pande -> Namesti

Po tem bomo uvozili nabor podatkov in ločili odvisno spremenljivko (kupljeno) in neodvisno spremenljivko (starost, plača) po:

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

Naslednji korak bi bilo usposabljanje in testiranje podatkov. Skupna strategija je, da se vsi označeni podatki razdelijo na podmnožice usposabljanja in testiranja, ki se običajno vzamejo z razmerjem 70-80% za podskupino usposabljanja in 20-30% za podskupino testiranja. Zato smo z uporabo navzkrižne validacije ustvarili nabore za usposabljanje in testiranje.

iz 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)

Vhodne vrednosti za boljše delovanje lahko tudi prilagodimo z uporabo StandarScalerja, kot je prikazano spodaj:

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

Zdaj bomo ustvarili svoj model logistične regresije.

iz sklearn.linear_model import LogisticRegression Classifier = LogisticRegression (random_state = 0) Classifier.fit (X_train, y_train)

To lahko uporabimo in predvidimo rezultate našega testnega niza.

y_pred = klasifikator.predict (X_test)

Zdaj lahko preverimo, koliko napovedi je bilo natančnih in koliko jih ni uporabljalo matrica zmede . Določimo Y kot pozitivne in N kot negativne primere. Štirje rezultati so oblikovani v matriki zmede 2 * 2, kot je predstavljeno spodaj:

from sklearn.metrics import confusion_matrix cm = confusion_matrix (y_test, y_pred) print (cm)

Izhod-

[[65 3] [8 24]]

Nato lahko na podlagi naše matrice zmede izračunamo natančnost. Torej v našem zgornjem primeru bi bila natančnost:

= TP + TN / FN + FP

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

= 89%

To smo storili ročno! Zdaj pa poglejmo, kako stroj za nas izračuna enako, saj imamo vgrajeno funkcijo ‘score_score’, ki izračuna natančnost in jo natisne, kot je prikazano spodaj:

iz sklearn.metrics uvoz natančnost_rezultata // uvozi funkcijo natančnost_score tisk (natančnost_rezultata (y_test, y_pred) * 100) // natisne natančnost

Izhod -

kako uporabljati spyder python -
89,0

Hura! Tako smo uspešno izvedli logistično regresijo z uporabo Scikit učenja z 89-odstotno natančnostjo.

Klikni tukaj da dobite popoln popoln vir zgornje napovedi z uporabo Python Scikit learn knjižnice.

S tem smo pokrili le enega izmed mnogih priljubljenih algoritmov, ki jih ponuja python.Zajeli smo vse osnove Scikitovega učenja knjižnice,tako da lahko začnete vaditi zdaj. Bolj ko vadite, več se boste naučili. Ostanite z nami za nadaljnje bloge z vadnicami za python!

Imate vprašanje za nas? Prosimo, omenite to v oddelku za komentarje tega spletnega dnevnika »Scikit learn« in v najkrajšem možnem času se vam bomo oglasili. Če želite poglobljeno znanje Pythona skupaj z različnimi aplikacijami, lahko za spletno usposabljanje v živo s podporo 24 ur na dan in 7 dni v tednu.