Adattudomány

Gépi tanulás oktatóprogram a Scikit-tanulással

Gépi tanulás oktatóprogram a Scikit-tanulással

Ebben a leckében a gépi tanulásról a scikit-learning segítségével megismerhetjük ennek a kiváló Python-csomagnak a különböző aspektusait, amelyek lehetővé teszik számunkra, hogy egyszerű és összetett gépi tanulási képességeket alkalmazzunk sokféle adathalmazon, a funkciókkal együtt az általunk felállított hipotézis tesztelésére.

A scikit-learn csomag egyszerű és hatékony eszközöket tartalmaz az adatbányászat és az adatelemzés adatkészletekhez történő alkalmazásához, és ezek az algoritmusok különböző kontextusokban használhatók. Ez egy BSD licenc alatt elérhető nyílt forráskódú csomag, ami azt jelenti, hogy ezt a könyvtárat akár kereskedelemben is használhatjuk. A matplotlib, a NumPy és a SciPy tetejére épül, így sokoldalú jellegű. Az Anaconda és a Jupyter notebook segítségével példákat mutatunk be ebben a leckében.

Amit a scikit-learn nyújt?

A scikit-learn könyvtár teljes mértékben az adatmodellezésre összpontosít. Felhívjuk figyelmét, hogy a scikit-learn-ben nincsenek fontosabb funkciók az adatok betöltésében, manipulálásában és összegzésében. Íme néhány népszerű modell, amelyet a scikit-learn nyújt számunkra:

Telepítse a Python scikit-learn alkalmazást

Csak egy megjegyzés a telepítési folyamat megkezdése előtt, ehhez a leckéhez egy virtuális környezetet használunk, amelyet a következő paranccsal készítettünk:

python -m virtualenv scikit
forrás scikit / bin / aktiválás

Amint a virtuális környezet aktív, a pandas könyvtárat telepíthetjük a virtuális env-be, hogy a következő módon létrehozott példák végrehajthatók legyenek:

pip install scikit-learn

Vagy használhatjuk a Condát a csomag telepítéséhez a következő paranccsal:

conda telepíteni scikit-tanulni

Valami ilyesmit látunk, amikor végrehajtjuk a fenti parancsot:

Miután a telepítés befejeződött a Condával, a csomagot Python szkriptjeinkben a következőképpen használhatjuk:

import sklearn

Kezdjük el a scikit-learn használatát szkriptjeinkben félelmetes Machine Learning algoritmusok kifejlesztéséhez.

Adatkészletek importálása

A scikit-learn egyik nagyszerű tulajdonsága, hogy előre be van töltve mintadatkészlettel, amellyel könnyen el lehet kezdeni gyorsan. Az adatkészletek a írisz és számjegyeket az osztályozáshoz szükséges adatkészletek és a bostoni lakásárak adatkészlet regressziós technikákhoz. Ebben a szakaszban megvizsgáljuk, hogyan lehet betölteni és elkezdeni használni az írisz-adatkészletet.

Adatkészlet importálásához először a megfelelő modult kell importálnunk, majd meg kell kapnunk az adatkészlet tartását:

a sklearn import adatkészleteiből
írisz = adatkészletek.load_iris ()
számjegy = adatkészlet.load_digits ()
számjegyeket.adat

A fenti kódrészlet futtatása után a következő kimenetet látjuk:

Az összes kimenetet a rövidség érdekében eltávolítjuk. Ez az az adatkészlet, amelyet elsősorban ebben a leckében fogunk használni, de a fogalmak nagy része általában az összes adatkészletre alkalmazható.

Csak egy szórakoztató tény, hogy tudjuk, hogy a modulban több modul is található scikit ökoszisztéma, amelyek közül az egyik tanul gépi tanulási algoritmusokhoz használják. Lásd ezen az oldalon számos más jelen lévő modult.

Az adatkészlet feltárása

Most, hogy importáltuk a megadott számjegyű adatkészletet a szkriptünkbe, el kell kezdenünk gyűjteni az alapvető információkat az adatkészletről, és ezt itt fogjuk megtenni. Itt találhatók az alapvető dolgok, amelyeket érdemes felfedeznie, miközben információt szeretne találni egy adatkészletről:

Írjunk rövid kódrészletet a fenti három információ kibontásához az adatkészletből:

print ('Cél:', számjegyek.cél)
print ('Kulcsok:', számjegyek.kulcsok())
print ('Leírás:', számjegy.DESCR)

A fenti kódrészlet futtatása után a következő kimenetet látjuk:

Felhívjuk figyelmét, hogy a változó számjegyek nem egyértelműek. Amikor kinyomtattuk a számjegyű adatkészletet, az valójában numpy tömböt tartalmazott. Meglátjuk, hogyan érhetjük el ezeket a tömböket. Ehhez vegye figyelembe az utolsó kódrészletben kinyomtatott számjegypéldányban elérhető kulcsokat.

Kezdjük azzal, hogy megkapjuk a tömbadat alakját, amely a tömb sorai és oszlopai vannak. Ehhez először meg kell szereznünk a tényleges adatokat, majd meg kell kapnunk a formáját:

számjegy_készlet = számjegy.adat
print (számjegy_készlet.alak)

A fenti kódrészlet futtatása után a következő kimenetet látjuk:

Ez azt jelenti, hogy az adatkészletünkben 1797 minta található 64 adatfunkcióval (vagy oszloppal) együtt. Van néhány célcímkénk is, amelyeket itt a matplotlib segítségével vizualizálunk. Itt van egy kódrészlet, amely segít ebben:

import matplotlib.pyplot mint plt
# Egyesítse a képeket és a célcímkéket listaként
images_and_labels = list (zip (számjegy.képek, számjegyek.cél))
indexhez, (kép, címke) a felsorolásban (images_and_labels [: 8]):
# inicializálja a 2X4 alsávot az i + 1-edik pozícióban
plt.altábla (2, 4, index + 1)
# Nem szükséges tengelyeket ábrázolni
plt.tengely ('ki')
# Képek megjelenítése az összes altáblán
plt.imshow (kép, cmap = plt.cm.szürke_r, interpoláció = 'legközelebbi')
# Adjon címet minden alsávhoz
plt.cím ('Képzés:' + str (címke))
plt.előadás()

A fenti kódrészlet futtatása után a következő kimenetet látjuk:

Ne feledje, hogyan csomagoltuk össze a két NumPy tömböt, mielőtt egy 4: 2-es rácsra ábrázoltuk őket tengelyinformációk nélkül. Most már biztosak vagyunk abban az információban, amellyel rendelkezünk az általunk használt adatkészlettel kapcsolatban.

Most, hogy tudjuk, hogy 64 adatfunkcióval rendelkezünk (amelyek egyébként sok funkciót tartalmaznak), kihívást jelent a tényleges adatok megjelenítése. Van erre megoldásunk.

Fő komponens elemzés (PCA)

Ez nem egy ismertető a PCA-ról, de adjunk egy kis ötletet arról, mi ez. Mivel tudjuk, hogy az adatkészlet funkcióinak számának csökkentése érdekében két módszerünk van:

  1. Funkció megszüntetése
  2. Feature Extraction

Míg az első technika akkor is szembesül az elveszett adatfunkciók kérdésével, ha fontosak is lehetnek, a második technika azonban nem szenved ebben a kérdésben, mivel a PCA segítségével új adatfunkciókat építünk (kevesebb számban), ahol egyesítjük bemeneti változók oly módon, hogy elhagyhatjuk a „legkevésbé fontos” változókat, miközben megtartjuk az összes változó legértékesebb részeit.

Ahogy az várható volt, A PCA segít csökkenteni az adatok nagy dimenzióit ami egy objektum sok adatfunkció felhasználásával történő leírásának közvetlen eredménye. Nem csak a számjegyeknek, hanem sok más gyakorlati adatkészletnek is számos jellemzője van, ideértve a pénzügyi intézményi adatokat, a régió időjárási és gazdasági adatait stb. Amikor PCA-t hajtunk végre a számjegyű adatkészleten, Célunk az lesz, hogy csak 2 olyan tulajdonságot találjunk meg, amelyek rendelkeznek a legtöbb jellemzővel az adatkészlet.

Írjunk egy egyszerű kódrészletet a PCA alkalmazására a számjegyek adatkészletén, hogy megkapjuk a csak két tulajdonság lineáris modelljét:

a sklearn-től.bomlás import PCA
feature_pca = PCA (n_komponensek = 2)
csökkentett_adat_véletlen = feature_pca.fit_transform (számjegy.adat)
model_pca = PCA (n_komponensek = 2)
csökkentett_adat_pca = modell_pca.fit_transform (számjegyek.adat)
csökkentett_adat_pca.alak
nyomtatás (csökkentett_adat_véletlen)
nyomtatás (csökkentett_adat_pca)

A fenti kódrészlet futtatása után a következő kimenetet látjuk:

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

A fenti kódban megemlítjük, hogy az adatkészlethez csak 2 szolgáltatásra van szükségünk.

Most, hogy jól ismerjük az adatkészletünket, eldönthetjük, hogy milyen gépi tanulási algoritmusokat alkalmazhatunk rajta. Az adatkészlet ismerete azért fontos, mert így dönthetünk arról, hogy milyen információkat lehet kinyerni belőle és mely algoritmusokkal. Ez segít abban is, hogy teszteljük az általunk felállított hipotézist, miközben megjósoljuk a jövőbeli értékeket.

A k-csoport alkalmazása klaszterezést jelent

A k-jelentésű fürtözési algoritmus az egyik legkönnyebb fürtözési algoritmus a felügyelet nélküli tanuláshoz. Ebben a klaszterben van néhány véletlenszámú fürtünk, és ezekbe a klaszterekbe soroljuk az adatpontjainkat. A k-mean algoritmus megtalálja a legközelebbi fürtöt az egyes adatpontokhoz, és hozzárendeli azt az adatpontot ahhoz a fürthöz.

Miután a fürtözés megtörtént, a fürt középpontját újraszámolják, az adatpontoknak új fürtöket rendelnek, ha bármilyen változás történik. Ezt a folyamatot addig ismételjük, amíg az adatpontok a fürtökben leállnak a stabilitás elérése érdekében.

Alkalmazzuk egyszerűen ezt az algoritmust az adatok előzetes feldolgozása nélkül. Ehhez a stratégiához a kódrészlet meglehetősen egyszerű lesz:

a sklearn import fürtből
k = 3
k_means = klaszter.KMeans (k)
# fit adatok
k_eszköz.fit (számjegyek.adat)
# nyomtatási eredmény
print (k_ jelentése.címkék _ [:: 10])
nyomtatás (számjegy.cél [:: 10])

A fenti kódrészlet futtatása után a következő kimenetet látjuk:

A fenti kimenetben különböző fürtöket láthatunk az egyes adatpontokhoz.

Következtetés

Ebben a leckében egy kiváló Machine Learning könyvtárat néztünk meg, scikit-learn. Megtudtuk, hogy a scikit családban sok más modul is elérhető, és egyszerű k-mean algoritmust alkalmaztunk a megadott adatkészleten. Sokkal több algoritmus alkalmazható az adatkészleten, kivéve a k-mean fürtöket, amelyeket ebben a leckében alkalmaztunk, javasoljuk, hogy tegye meg, és ossza meg eredményeit.

Kérjük, ossza meg visszajelzését a leckéről a Twitteren a @sbmaggarwal és a @LinuxHint oldalakon.

Sid Meier Civilization VI letöltése és lejátszása Linuxon
Bevezetés a játékba A Civilization 6 egy modern felvétel a Age of Empires játékok sorozatában bevezetett klasszikus koncepcióra. Az ötlet meglehetősen...
A Doom telepítése és lejátszása Linuxon
Bevezetés a Doom-ba A Doom sorozat a 90-es években keletkezett az eredeti Doom megjelenése után. Azonnali sláger volt, és ettől kezdve a játéksorozat ...
Vulkan Linux felhasználók számára
A grafikus kártyák minden új generációjával azt látjuk, hogy a játékfejlesztők átlépik a grafikus hűség határait, és egy lépéssel közelebb kerülnek a ...