Scikit õppida - masinõpe Pythoni abil



Scikiti õpiblogi tutvustab masinõpet Pythonis. See sisaldab kasutusjuhtumit, kus rakendame logistilist regressiooni scikit-õppe abil.

Selles ajaveebis arutleme Scikiti õppimise Pythonis. Enne kui räägite Scikiti õppimisest, tuleb mõista masinõppe mõistetja peab teadma, kuidas seda kasutada . Masinõppe abil ei pea te oma teadmisi käsitsi koguma. Teil on vaja lihtsalt algoritmi ja masin teeb teie jaoks kõik ülejäänud! Kas see pole põnev? Scikit-õppimine on üks atraktsioonidest, kus saame Pythoni abil masinõpet rakendada. Seeon tasuta masinõppekogu, mis sisaldab lihtsaid ja tõhusaid tööriistu andmete analüüsimiseks ja kaevandamiseks.Tutvustan teid järgmistest teemadest, mis on tulevaste ajaveebide põhialused:

Mis on masinõpe?

Masinõpe on tehisintellekti tüüp, mis võimaldab tarkvararakendustel õppida andmetest ja saada tulemuste prognoosimisel täpsem ilma inimese sekkumiseta. Aga kuidas see juhtub? Selleks tuleb masin mõningate andmete osas välja õpetada ja selle põhjal tuvastab ta mudeli loomiseks mustri.See andmetest teadmiste saamise ja võimsate teadmiste pakkumise protsess on seotud masinõppega. Selle toimimisest paremaks mõistmiseks vaadake allolevat pilti:





MachineLearning - Scikit Learn - Edureka

Andmeid kasutades õpib süsteem algoritmi ja kasutab seda siis ennustava mudeli ehitamiseks. Hiljem kohandame mudelit või suurendame tagasiside andmete abil mudeli täpsust. Nende tagasisideandmete abil häälestame mudeli ja prognoosime uue andmekogumi tegevust. Me saamearutama a kasutamise juhtum ühest algoritmide lähenemisviisist, kus me koolitame ja katsetame andmeid, mis aitavad teil paremini mõista, kas see sobib teie konkreetse probleemiga hästi või mitte.



Järgmisena on masinõppe kolme tüüpi:

    • Juhendatud õppimine : See on algoritmi protsess, mis õpib koolituse andmekogumist. Juhendatud õppimine on koht, kus genereerite sisendmuutuja (X) ja väljundmuutuja (Y) vahel kaardistamisfunktsiooni ning nende vahel funktsiooni loomiseks kasutate algoritmi. Seda tuntakse ka kui ennustavat modelleerimist, mis viitab andmete abil ennustuste tegemise protsessile. Mõned algoritmid hõlmavad lineaarset regressiooni, logistilist regressiooni, otsustuspuud, juhuslikku metsa ja Naive Bayesi klassifikaatorit. Arutame edasi juhendatava õppe kasutamise juhtumit, kus koolitame masinat kasutades logistiline regressioon .
    • Järelevalveta õppimine : See on protsess, kus mudelit koolitatakse teabe abil, mis pole sildistatud. Seda protsessi saab kasutada sisendandmete klassifitseerimiseks klassidesse nende statistiliste omaduste alusel. Järelevalveta õppimist nimetatakse ka kui cläikiv analüüs, mis tähendab objektide rühmitamist objektide või nende seoseid kirjeldavate andmete põhjal leitud teabe põhjal. Eesmärk on, et ühe rühma objektid peaksid olema üksteisega sarnased, kuid erinevad teise rühma objektidest. Mõni algoritm sisaldab K-klastreid, hierarhilisi klastreid jne.
    • Tugevdusõpe: Tugevdusõpe on õppimine ruumi või keskkonnaga suhtlemisel.RL agent õpib oma tegevuse tagajärgedest, mitte selgesõnalisest õpetamisest. Ta valib oma tegevused oma varasemate kogemuste (ekspluateerimine) ja ka uute valikute (uurimine) põhjal.

Ülevaade Scikit Learn'ist

Scikit õppida on raamatukogu, mida kasutatakse Pythonis masinõppe teostamiseks. Scikit learn on avatud lähtekoodiga raamatukogu, millel on BSD litsents ja mis on erinevates kontekstides korduvkasutatav, julgustades akadeemilist ja ärilist kasutamist. See pakub Pythonis paljusid juhendatud ja järelevalveta õpialgoritme.Scikit õppida koosneb populaarsetest algoritmidest ja raamatukogudest. Peale selle sisaldab see ka järgmisi pakette:



kuidas koostada Java koode
  • NumPy
  • Matplotlib
  • SciPy (teaduslik Python)

Scikiti õppe rakendamiseks peame kõigepealt importima ülaltoodud paketid. Kui te pole nende raamatukogudega tuttav, võite vaadata minu eelmisi ajaveebe ja . Need kaks paketti saate alla laadida käsurealt või kui kasutate P-dYCharm, saate selle otse installida, minnes oma seadistusse samamoodi nagu teiste pakettide puhul.

Edasi sarnasel viisil, peate importima Sklearni.Scikit-õppimine põhineb SciPy-l (Scientific Python), mis tuleb enne Scikit-learn'i kasutamist installida. Sellele saate viidata veebisaidil sama alla laadida. Samuti installige Scipy ja ratta pakett, kui seda pole, võite sisestada järgmise käsu:

pip install scipy

Olen selle juba alla laadinud ja installinud. Segaduste korral võite viidata allolevale ekraanipildile.

Pärast ülaltoodud teekide importimist uurigem põhjalikumalt ja mõistkem, kuidas täpselt Scikit õpitakse.

Scikit-õppega kaasnevad näidisandmekogumid, näiteks iiris ja numbrit . Saate importida andmekogumeid ja nendega ringi mängida. Pärast seda peate importima SVM-i, mis tähistab tugivektorimasinat. SVM on masinõppe vorm, mida kasutatakse andmete analüüsimiseks.

Võtame näite, kuhu võtame numbrit andmekogum ja see kategoriseerib meie jaoks näiteks numbrid - 0 1 2 3 4 5 6 7 8 9. Vaadake allolevat koodi:

impordi matplotlib.pyplot plt-na sklearnist impordi andmekogumid sklearn-ist import svm digits = datasets.load_digits () print (digits.data)

Väljund -

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

Siin oleme just importinud raamatukogud, SVM-i, andmekogumid ja printinud andmed. See on pikk numbrite arv, kuhu andmed salvestatakse. See annab juurdepääsu funktsioonidele, mida saab kasutada numbrit proovid. Järgmisena võite proovida ka mõnda muud toimingut, näiteks sihtmärk, pildid jne. Mõelge allpool toodud näitele:

import matplotlib.pyplot sklearnist plt-failina importige andmekogumid sklearn'ist import svm digits = datasets.load_digits () print (digits.target) print (digits.images [0])

Väljund -

[0 1 2 ..., 8 9 8] // andmete sihtmärk [[0. 0. 5. 13. 9. 1. 0. 0.] // andmete pilt [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.]]

Nagu ülal näete, trükitakse sihtnumbrid ja numbrite pilt. numbrit.sihtmärk annab aluse tõe number andmekogum, see on number, mis vastab igale numbrikohasele pildile. Järgmisena on andmed alati 2D-massiivid, millel on kuju (n_proovid, n_funktsioonid), kuigi algandmetel võib olla teistsugune kuju. Numbrite puhul on iga algne proov kuju (8,8) kujutis ja sellele pääseb juurde kasutades numbrit . pilt.

kuidas deklareerida Java eksemplari muutuja

Õppimine ja ennustamine

Järgmisena oleme Scikit learnis kasutanud andmekogumit (10 võimaliku klassi valim, numbrit nullist üheksani) ja pildi andmisel peame numbreid ennustama. Klassi ennustamiseks vajame hindaja mis aitab ennustada klasse, kuhu kuuluvad nägemata proovid. Rakenduses Scikit learn on meil klassifitseerimise hindaja, mis on Pythoni objekt, mis rakendab meetodeid sobivus (x, y) ja ennustada (T). Vaatleme järgmist näidet:

import matplotlib.pyplot plt-st sklearnist impordi andmekogumid sklearn'ist import svm digits = datasets.load_digits () // andmekogum clf = svm.SVC (gamma = 0.001, C = 100) print (len (digits.data)) x, y = digits.data [: - 1], digits.target [: - 1] // treenige andmeid clf.fit (x, y) print ('Prediction:', clf.predict (digits.data [-1]) ) // andmete ennustamine plt.imshow (numbrid. pildid [-1], cmap = plt.cm.gray_r, interpolatsioon = 'lähim') plt.show ()

Väljund -

1796
Ennustus: [8]


Ülaltoodud näites olime kõigepealt leidnud pikkuse ja laadinud 1796 näidet. Järgmisena oleme neid andmeid õppimisandmetena kasutanud, kus peame testima viimast ja esimest negatiivset elementi. Samuti peame kontrollima, kas masin on ennustanud õigeid andmeid või mitte. Selleks olime kasutanud Matplotlibi, kus näitasime numbritega pilti.Nii et kokkuvõtteks on teil arvandmed, teil on sihtmärk, sobisite ja ennustate seda ja seega on teil hea minna! See on tõesti kiire ja lihtne, kas pole?

Sihtmärke saate visualiseerida ka pildiga, vaadake lihtsalt allolevat koodi:

import matplotlib.pyplot plt-na sklearnist impordi andmekogumeid sklearn'ist import svm digits = datasets.load_digits () # Ühendage pildid ja sihtsildid loendis images_and_labels = list (zip (digits.images, digits.target)) # iga elemendi jaoks loendi indeks, (pilt, silt) loendis (images_and_labels [: 8]): # lähtestage 2X4 alamplokk i + 1-nda positsiooni plt. subplotil (2, 4, register + 1) # Kuva pildid kõigis alapunktides plt.imshow (pilt, cmap = plt.cm.gray_r, interpolatsioon = 'lähim') # Lisage igale alamplotile pealkiri plt.title ('Koolitus:' + str (silt)) # Näidake graafikut plt. näita ()

Väljund-


Nagu ülaltoodud koodist näha, oleme piltide ja sihtmärkide loendis ühendamiseks kasutanud funktsiooni ‘zip’ ning salvestanud selle seejärel muutujasse, näiteks images_and_labels. Pärast seda oleme indekseerinud esimesed kaheksa elementi ruudustikus 2 kuni 4 igas asendis. Pärast seda oleme Matplotlibi abil pilte lihtsalt kuvanud ja pealkirja lisanud ‘koolituseks’.

Kasuta juhtumit - Ennustamine logistilise regressiooni abil

Probleemipüstituses - Autofirma lasi turule uue maasturi. Kasutades varasemaid andmeid oma maasturite müügi kohta, soovivad nad ennustada inimeste kategooriat, kes võiksid olla huvitatud selle ostmisest.

Selle jaoks vaatame andmekogumit, kus mul on Kasutaja ID, sugu, vanus, hinnanguline palk ja ostetud veergudena. See on vaid näidisandmekogum, millest saate kogu andmekogumi alla laadida siin . Kui oleme andmed pyCharmis importinud, näeb see välja umbes selline.

Nüüd mõistame neid andmeid. Nagu ülaltoodud andmekogumist näete, on meil kategooriad nagu ID, sugu, vanus jne. Nende kategooriate põhjal koolitame oma masinat ja ennustame ei. ostude arvelt. Nii et siin, meil on sõltumatud muutujad kui “vanus”, “oodatav palk” ja sõltuv muutuja kui “ostetud”. Nüüd rakendame juhendatud õppimist, s.t. logistilise regressiooni algoritm olemasolevate andmete põhjal teada saada ostude arv.

Esmalt saame ülevaate logistilisest taandarengust.

Logistiline regressioon - Logistiline regressioon annab tulemused binaarses vormingus, mida kasutatakse kategoorilise sõltuva muutuja tulemuse ennustamiseks. Seda kasutatakse kõige laiemalt, kui sõltuv muutuja on binaarne, st saadaolevate kategooriate arv on kaks, näiteks logistilise regressiooni tavalised väljundid on -

  • Jah ja ei
  • Õige ja vale
  • Kõrge ja madal
  • Pass ja Fail

Nüüd, koodiga alustades, impordime kõigepealt need teegid - Numpy, Matplotlib ja Pandas. Pycharmisse on pandade importimine üsna lihtne, järgides alltoodud samme:

Seaded -> Lisa pakett -> Pandad -> Install

Pärast seda impordime andmekogumi ja eraldi sõltuva muutuja (ostetud) ja sõltumatu muutuja (vanus, palk) järgmiselt:

duubli valamine int java
andmekogum = pd.read_csv ('Social_Network_Ads.csv') X = andmekogum.iloc [:, [2, 3]]. väärtused y = andmekogum.iloc [:, 4] .väärtused print (X) print (y)

Järgmine samm oleks andmete koolitamine ja testimine. Levinud strateegia on võtta kõik sildistatud andmed ja jagada koolituse ja testimise alamhulkadeks, mida tavaliselt võetakse koolituse alamhulga suhtes 70–80% ja testimise alamhulga puhul 20–30%. Seega oleme loonud treening- ja testimiskomplektid cross_validationi abil.

lehelt sklearn.cross_validation impordi rongitesti_split X_treen, X_test, y_train, y_test = train_test_split (X, y, test_size = 0,25, random_state = 0)

StandarScaleri abil saame parema jõudluse jaoks ka sisendväärtusi skaleerida, nagu allpool näidatud:

failist sklearn.preprocessing importimine StandardScaler sc = StandardScaler () X_train = sc.fit_transform (X_train) X_test = sc.transform (X_test)

Nüüd loome oma logistilise regressiooni mudeli.

from sklearn.linear_model import LogisticRegression klassifikaator = LogisticRegression (random_state = 0) clasier.fit (X_train, y_train)

Saame seda kasutada ja oma testikomplekti tulemusi ennustada.

y_pred = klassifikaator.prognoos (X_test)

Nüüd saame kontrollida, kui palju ennustusi olid täpsed ja kui paljud ei kasutanud segiajamise maatriks . Määratleme Y positiivsete ja N negatiivsete juhtudena. Neli tulemust on formuleeritud 2 * 2 segiajamise maatriksina, nagu on kujutatud allpool:

lehelt sklearn.metrics impordi segaduse_maatriks cm = segaduse_maatriksi (y_test, y_pred) print (cm)

Väljund-

[[65 3] [8 24]]

Järgmisena saame meie segiajamise maatriksi põhjal arvutada täpsuse. Nii et meie ülaltoodud näites oleks täpsus järgmine:

= TP + TN / FN + FP

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

= 89%

Oleme seda käsitsi teinud! Vaatame nüüd, kuidas masin arvutab meie jaoks sama, selleks on meil sisseehitatud funktsioon ‘täpsuse_score’, mis arvutab täpsuse ja prindib selle, nagu allpool näidatud:

lehelt sklearn.metrics impordi täpsuse_skoor // impordi funktsiooni täpsuse_sprindi printimine (täpsuse_hind (y_test, y_pred) * 100) // prindib täpsuse

Väljund -

89,0

Hurraa! Oleme seega edukalt rakendanud logistilise regressiooni, kasutades Scikiti õppimist 89% täpsusega.

Kliki siia saada ülaltoodud ennustuse täielik täielik allikas kasutades Python Scikiti õppekogu.

Sellega oleme käsitlenud ainult ühte Pythoni pakutavatest paljudest populaarsetest algoritmidest.Oleme käsitlenud kõiki põhitõdesid, kuidas Scikit õpib raamatukogu,nii et saate hakata nüüd harjutama. Mida rohkem harjutate, seda rohkem õpite. Püsige uute pythoni õpetusblogidega kursis!

Kas teil on meile küsimus? Palun mainige seda selle ajaveebi “Scikit õppida” kommentaaride jaotises ja võtame teiega ühendust niipea kui võimalik. Pythoni ja selle erinevate rakenduste põhjalike teadmiste saamiseks saate seda teha reaalajas veebikoolituse jaoks, millel on 24/7 tugi ja juurdepääs kogu elule.