Datalogi

Machine Learning Tutorial med Scikit-lær

Machine Learning Tutorial med Scikit-lær

I denne lektion om maskinlæring med scikit-læring lærer vi forskellige aspekter af denne fremragende Python-pakke, der giver os mulighed for at anvende enkle og komplekse maskinlæringsfunktioner på et forskelligt sæt data sammen med funktionaliteter til at teste den hypotese, vi opstiller.

Scikit-Learn-pakken indeholder enkle og effektive værktøjer til at anvende datamining og dataanalyse på datasæt, og disse algoritmer er tilgængelige til anvendelse i forskellige sammenhænge. Det er en open source-pakke tilgængelig under en BSD-licens, hvilket betyder, at vi kan bruge dette bibliotek endda kommercielt. Den er bygget oven på matplotlib, NumPy og SciPy, så den er alsidig i naturen. Vi bruger Anaconda med Jupyter-notesbogen til at præsentere eksempler i denne lektion.

Hvad scikit-learning giver?

Scikit-learning-biblioteket fokuserer fuldstændigt på datamodellering. Vær opmærksom på, at der ikke er nogen vigtige funktioner til stede i scikit-læringen, når det kommer til at indlæse, manipulere og opsummere data. Her er nogle af de populære modeller, som scikit-learning giver os:

Installer Python scikit-learn

Bare en note, før vi starter installationsprocessen, bruger vi et virtuelt miljø til denne lektion, som vi lavede med følgende kommando:

python -m virtualenv scikit
kilde scikit / bin / aktiver

Når det virtuelle miljø er aktivt, kan vi installere pandabiblioteket i den virtuelle env, så eksempler, vi opretter næste, kan udføres:

pip install scikit-lær

Eller vi kan bruge Conda til at installere denne pakke med følgende kommando:

conda installere scikit-lære

Vi ser noget som dette, når vi udfører ovenstående kommando:

Når installationen er gennemført med Conda, kan vi bruge pakken i vores Python-scripts som:

import sklearn

Lad os begynde at bruge scikit-learning i vores scripts til at udvikle fantastiske Machine Learning-algoritmer.

Import af datasæt

En af de seje ting med scikit-learning er, at den kommer forudindlæst med eksempeldatasæt, som det er let at komme hurtigt i gang med. Datasættene er iris og cifre datasæt til klassificering og boston huspriser datasæt til regressionsteknikker. I dette afsnit vil vi se på, hvordan man indlæser og begynder at bruge iris-datasættet.

For at importere et datasæt skal vi først importere det korrekte modul efterfulgt af at få holdet til datasættet:

fra sklearn import datasæt
iris = datasæt.load_iris ()
cifre = datasæt.load_digits ()
cifre.data

Når vi kører ovenstående kodestykke, ser vi følgende output:

Alt output fjernes for kortfattethed. Dette er det datasæt, som vi hovedsageligt bruger i denne lektion, men de fleste af begreberne kan anvendes til generelt alle datasættene.

Bare en sjov kendsgerning at vide, at der er flere moduler til stede i scikit økosystem, hvoraf den ene er lære bruges til maskinindlæringsalgoritmer. Se denne side for mange andre moduler til stede.

Udforskning af datasættet

Nu hvor vi har importeret det angivne ciferdatasæt til vores script, skal vi begynde at samle grundlæggende oplysninger om datasættet, og det er hvad vi vil gøre her. Her er de grundlæggende ting, du bør udforske, mens du søger at finde oplysninger om et datasæt:

Lad os skrive et kort kodestykke for at udtrække ovenstående tre oplysninger fra vores datasæt:

print ('Target:', cifre.mål)
udskrive ('Taster:', cifre.nøgler ())
print ('Beskrivelse:', cifre.BESKRIVELSE)

Når vi kører ovenstående kodestykke, ser vi følgende output:

Bemærk, at de variable cifre ikke er ligetil. Da vi udskrev cifretdatasættet, indeholdt det faktisk numpy arrays. Vi vil se, hvordan vi kan få adgang til disse arrays. Til dette skal du notere dig de nøgler, der er tilgængelige i cifret, som vi udskrev i det sidste kodestykke.

Vi starter med at få formen af ​​matrixdata, som er de rækker og kolonner, som array har. Til dette skal vi først hente de faktiske data og derefter få deres form:

digits_set = cifre.data
udskrive (ciffer_sæt.form)

Når vi kører ovenstående kodestykke, ser vi følgende output:

Dette betyder, at vi har 1797 prøver til stede i vores datasæt sammen med 64 datafunktioner (eller kolonner). Vi har også nogle målmærker, som vi vil visualisere her ved hjælp af matplotlib. Her er et kodestykke, der hjælper os med at gøre det:

importer matplotlib.pyplot som plt
# Flet billederne og målmærkerne som en liste
images_and_labels = liste (zip (cifre.billeder, cifre.mål))
til indeks, (billede, etiket) i enumerate (images_and_labels [: 8]):
# initialiser en delplot på 2X4 i i + 1-th position
plt.delplot (2, 4, indeks + 1)
# Ingen grund til at plotte nogen akser
plt.akse ('off')
# Vis billeder i alle underplotter
plt.imshow (billede, cmap = plt.cm.grå_r, interpolation = 'nærmeste')
# Tilføj en titel til hver delplot
plt.titel ('Træning:' + str (label))
plt.at vise()

Når vi kører ovenstående kodestykke, ser vi følgende output:

Læg mærke til, hvordan vi zippede de to NumPy-arrays sammen, inden vi plottede dem på et 4 efter 2-gitter uden nogen akseinformation. Nu er vi sikre på de oplysninger, vi har om datasættet, vi arbejder med.

Nu hvor vi ved, at vi har 64 datafunktioner (som forresten er mange funktioner), er det udfordrende at visualisere de faktiske data. Vi har dog en løsning på dette.

Principal Component Analysis (PCA)

Dette er ikke en tutorial om PCA, men lad os give en lille idé om, hvad det er. Da vi ved, at vi har to teknikker for at reducere antallet af funktioner fra et datasæt:

  1. Eliminering af funktion
  2. Ekstraktion af funktioner

Mens den første teknik står over for problemet med mistede datafunktioner, selv når de måske har været vigtige, lider den anden teknik ikke af problemet, da vi ved hjælp af PCA konstruerer nye datafunktioner (mindre i antal), hvor vi kombinerer input variabler på en sådan måde, at vi kan udelade de "mindst vigtige" variabler, mens vi stadig bevarer de mest værdifulde dele af alle variablerne.

Som forventet, PCA hjælper os med at reducere den høje dimensionalitet af data hvilket er et direkte resultat af beskrivelsen af ​​et objekt ved hjælp af mange datafunktioner. Ikke kun cifre, men mange andre praktiske datasæt har et stort antal funktioner, der inkluderer finansielle institutionelle data, vejr- og økonomidata for en region osv. Når vi udfører PCA på cifret datasættet, vores mål vil være at finde kun 2 funktioner, så de har de fleste egenskaber af datasættet.

Lad os skrive et simpelt kodestykke for at anvende PCA på cifretdatasættet for at få vores lineære model med kun 2 funktioner:

fra sklearn.nedbrydning import PCA
feature_pca = PCA (n_components = 2)
reduced_data_random = feature_pca.fit_transform (cifre.data)
model_pca = PCA (n_komponenter = 2)
reduceret_data_pca = model_pca.fit_transform (cifre.data)
reduceret_data_pca.form
udskriv (reduceret_data_ tilfældigt)
udskriv (reduceret_data_pca)

Når vi kører ovenstående kodestykke, ser vi følgende output:

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

I ovenstående kode nævner vi, at vi kun har brug for 2 funktioner til datasættet.

Nu hvor vi har god viden om vores datasæt, kan vi beslutte, hvilken type maskinlæringsalgoritmer vi kan anvende på det. At kende et datasæt er vigtigt, fordi det er sådan, vi kan beslutte, hvilke oplysninger der kan udvindes ud af det, og med hvilke algoritmer. Det hjælper os også med at teste den hypotese, vi opstiller, mens vi forudsiger fremtidige værdier.

Anvendelse af k-betyder klyngedannelse

K-betyder klyngealgoritme er en af ​​de nemmeste klyngealgoritmer til ikke-overvåget læring. I denne klyngning har vi et tilfældigt antal klynger, og vi klassificerer vores datapunkter i disse klynger. K-middelalgoritmen finder den nærmeste klynge for hvert af det givne datapunkt og tildeler datapunktet til den klynge.

Når klyngen er færdig, beregnes klyngens centrum igen, datapunkterne tildeles nye klynger, hvis der er ændringer. Denne proces gentages, indtil datapunkterne holder op med at ændre sig i klynger for at opnå stabilitet.

Lad os blot anvende denne algoritme uden nogen forbehandling af dataene. For denne strategi vil kodestykket være ret let:

fra sklearn import klynge
k = 3
k_means = klynge.KMeans (k)
# fit data
k_ betyder.fit (cifre.data)
# udskrivningsresultater
udskrive (k_ betyder.etiketter _ [:: 10])
udskrive (cifre.mål [:: 10])

Når vi kører ovenstående kodestykke, ser vi følgende output:

I ovenstående output kan vi se forskellige klynger leveres til hvert af datapunktet.

Konklusion

I denne lektion kiggede vi på et fremragende Machine Learning-bibliotek, scikit-learning. Vi lærte, at der er mange andre moduler tilgængelige i scikit-familien, og vi anvendte simpel k-middelalgoritme på det angivne datasæt. Der er mange flere algoritmer, der kan anvendes på datasættet bortset fra k-betyder klynger, som vi anvendte i denne lektion, vi opfordrer dig til at gøre det og dele dine resultater.

Del din feedback på lektionen på Twitter med @sbmaggarwal og @LinuxHint.

SuperTuxKart til Linux
SuperTuxKart er en fantastisk titel designet til at give dig Mario Kart-oplevelsen gratis på dit Linux-system. Det er ret udfordrende og sjovt at spil...
Kæmp om Wesnoth-vejledning
Slaget om Wesnoth er et af de mest populære open source-strategispil, som du kan spille på dette tidspunkt. Ikke kun har dette spil været under udvikl...
0 A.D. Vejledning
Ud af de mange strategispil derude, 0 A.D. formår at skille sig ud som en omfattende titel og et meget dybt, taktisk spil på trods af at det er open s...