Modellépítés tanulása a Scikit-learnben
A Scikit-learn egy nyílt forráskódú Python-könyvtár, amely leegyszerűsíti a gépi tanulási modellek felépítésének folyamatát. Tiszta és következetes felületet kínál, amely mind a kezdő, mind a tapasztalt felhasználók hatékony munkáját segíti.
- Támogatja az olyan feladatokat, mint az osztályozási regressziós klaszterezés és az előfeldolgozás
- Gyorssá és megbízhatóvá teszi a modellkészítést
- Használatra kész eszközöket biztosít a képzéshez és az értékeléshez
- Csökkenti a bonyolultságot azáltal, hogy elkerüli az algoritmusok kézi végrehajtását
A Scikit-learn telepítése és használata
Mielőtt elkezdené a modellek építését, telepítenünk kell Scikit-learn. Python 3.8 vagy újabb verziót igényel, és két fontos könyvtártól függ: NumPy és SciPy. Győződjön meg arról, hogy először ezeket telepítette.
A Scikit-lear telepítéséhez futtassa a következő parancsot:
pip install -U scikit-learn
Ezzel letölti és telepíti a Scikit-learn legújabb verzióját a függőségeivel együtt. Tekintsük meg a Scikit-learn könyvtár használatával a modell felépítésének különböző lépéseit.
1. lépés: Adatkészlet betöltése
Egy adatkészlet a következőkből áll:
- Jellemzők (X): Az adatokat leíró bemeneti változók
- Cél (y): Az az érték, amelyet meg akarunk jósolni
A Scikit-learn olyan beépített adatkészleteket biztosít, mint az Iris Digits és a Boston Housing. Az Iris adatkészlet használata:
- load_iris() betölti az adatokat
- X tárolja a funkciók adatait
- y célcímkéket tárol
- a jellemző_nevek és a cél_nevek leíró neveket adnak
Megvizsgálhatjuk az első néhány sort, hogy megértsük a szerkezetet. Egyéni adatkészletek esetén a Pandákat általában külső fájlok, például CSV-fájlok betöltésére használják.
Python from sklearn.datasets import load_iris iris = load_iris () X = iris . data y = iris . target feature_names = iris . feature_names target_names = iris . target_names print ( 'Feature names:' feature_names ) print ( 'Target names:' target_names ) print ( ' n Type of X is:' type ( X )) print ( ' n First 5 rows of X: n ' X [: 5 ])
Kimenet:
Adatkészlet betöltése Néha saját egyéni adatainkon kell dolgoznunk, majd betöltünk egy külső adatkészletet. Ehhez használhatjuk a panda könyvtár az adatkészletek egyszerű betöltéséhez és kezeléséhez.
Ehhez olvassa el a cikkünket Hogyan importáljunk csv fájlt pandákba ?
2. lépés: Az adatkészlet felosztása
A modell igazságos értékeléséhez az adatokat a következőkre bontjuk:
- Edzőkészlet: A modell betanítására szolgál
- Tesztkészlet: Annak értékelésére, hogy a modell mennyire általános
A train_test_split használatával felosztjuk az Iris adatkészletet úgy, hogy 60%-a edzésre, 40%-a pedig tesztelésre szolgál (test_size=0,4). A random_state=1 biztosítja a reprodukálhatóságot.
Felosztás után kapjuk:
- X_train y_train -> Képzési adatok
- X_test y_test -> Adatok tesztelése
Az alakzatok ellenőrzése biztosítja az adatok helyes felosztását.
Python from sklearn.model_selection import train_test_split X_train X_test y_train y_test = train_test_split ( X y test_size = 0.4 random_state = 1 )
Most ellenőrizzük a Alakzatok részében, hogy biztosítsa, hogy mindkét halmaz megfelelő adatarányokkal rendelkezzen, elkerülve a modellértékelés vagy a betanítás esetleges hibáit.
Python print ( 'X_train Shape:' X_train . shape ) print ( 'X_test Shape:' X_test . shape ) print ( 'Y_train Shape:' y_train . shape ) print ( 'Y_test Shape:' y_test . shape )
Kimenet:
A felosztott adatok alakja 3. lépés: Kategorikus adatok kezelése
A gépi tanulási algoritmusok numerikus bemenetekkel működnek, így a kategorikus (szöveges) adatokat számokká kell alakítani. A nem megfelelően kódolt modellek félreértelmezhetik a kategóriákat. A Scikit-learn többféle kódolási módszert kínál:
1. Címkekódolás : Minden kategóriát egyedi egész számmá alakít át. Például a „macska” „kutya” és „madár” kategóriájú oszlopban ezeket 0 1-re, illetve 2-re konvertálja. Ez a módszer akkor működik jól, ha a kategóriáknak értelmes sorrendje van, például alacsony, közepes és magas.
- LabelEncoder(): Inicializálva egy kódoló objektumot hoz létre, amely a kategorikus értékeket numerikus címkékké alakítja.
- fit_transform(): Ez a módszer először a kódolót illeszti a kategorikus adatokhoz, majd a kategóriákat megfelelő numerikus címkékké alakítja.
from sklearn.preprocessing import LabelEncoder categorical_feature = [ 'cat' 'dog' 'dog' 'cat' 'bird' ] encoder = LabelEncoder () encoded_feature = encoder . fit_transform ( categorical_feature ) print ( 'Encoded feature:' encoded_feature )
Kimenet:
Kódolt szolgáltatás: [1 2 2 1 0]
2. One-Hot kódolás : A One-Hot Encoding külön bináris oszlopokat hoz létre minden kategóriához. Ez akkor hasznos, ha a kategóriáknak nincs természetes sorrendje. Példa: macska kutya madár -> 3 új oszlop (macska/kutya/madár) 1-esekkel és 0-kkal.
- A bemenetet 2D-s tömbbé kell alakítani
- A OneHotEncoder(sparse_output=False) bináris oszlopokat állít elő
from sklearn.preprocessing import OneHotEncoder import numpy as np categorical_feature = [ 'cat' 'dog' 'dog' 'cat' 'bird' ] categorical_feature = np . array ( categorical_feature ) . reshape ( - 1 1 ) encoder = OneHotEncoder ( sparse_output = False ) encoded_feature = encoder . fit_transform ( categorical_feature ) print ( 'OneHotEncoded feature: n ' encoded_feature )
Kimenet:
A címkekódoláson és a One-Hot kódoláson kívül más technikák is léteznek, mint pl Átlagos kódolás .
4. lépés: A modell betanítása
Most, hogy adataink készen állnak, itt az ideje egy gépi tanulási modell betanításának. A Scikit-learn számos algoritmust tartalmaz konzisztens interfésszel a képzés előrejelzéséhez és értékeléséhez. Itt fogjuk használni Logisztikai regresszió példaként.
Jegyzet : Nem megyünk bele az algoritmus működésének részleteibe, mivel csak a megvalósítását szeretnénk megérteni.
- log_reg = Logisztikai regresszió(max_iter=200): Logisztikus regressziós osztályozó objektum létrehozása.
- log_reg.fit(X_train y_train): Ezt használva a logisztikus regressziós modell úgy állítja be a modell paramétereit, hogy a legjobban illeszkedjen az adatokhoz.
from sklearn.linear_model import LogisticRegression log_reg = LogisticRegression ( max_iter = 200 ) log_reg . fit ( X_train y_train )
Képzés logisztikus regresszióval. 5. lépés: Készítsen előrejelzéseket
A betanítás után a modell segítségével előrejelzéseket készítünk az X_test tesztadatokról a predikciós módszer meghívásával. Ez az y_pred előrejelzett címkéket adja vissza.
- log_reg.predict: Betanított logisztikus regressziós modellt használ az X_test tesztadatok címkéinek előrejelzésére.
y_pred = log_reg . predict ( X_test )
6. lépés: A modell pontosságának értékelése
Az y_test és az y_pred összehasonlításával ellenőrizze, mennyire teljesít a modellünk. Itt a metrikamodul accuracy_score metódusát használjuk.
Python from sklearn import metrics print ( 'Logistic Regression model accuracy:' metrics . accuracy_score ( y_test y_pred ))
Kimenet:
Logisztikai regressziós modell pontossága: 0,9666666666666667
Most azt akarjuk, hogy modellünk előrejelzéseket adjon az új mintaadatokra. Ekkor a minta bemenetet egyszerűen átadhatjuk ugyanúgy, mint bármely jellemző mátrixot. Itt mintaként használtuk = [[3 5 4 2] [2 3 5 4]]
Python sample = [[ 3 5 4 2 ] [ 2 3 5 4 ]] preds = log_reg . predict ( sample ) pred_species = [ iris . target_names [ p ] for p in preds ] print ( 'Predictions:' pred_species )
Kimenet:
Előrejelzések: [np.str_('virginica') np.str_('virginica')]
A Scikit-learn jellemzői
A Scikit-learnt azért használják, mert egyszerűvé és hatékonysá teszi a gépi tanulási modellek felépítését. Íme néhány fontos ok:
- Használatra kész eszközök : Beépített funkciókat biztosít az olyan gyakori feladatokhoz, mint az adat-előfeldolgozási képzési modellek és az előrejelzések készítése. Ez időt takarít meg, mivel elkerüli, hogy az algoritmusokat a semmiből kell kódolnia.
- Egyszerű modellértékelés : Az olyan eszközökkel, mint a keresztellenőrzés és a teljesítménymérők, segít mérni, hogy modellünk mennyire működik, és azonosítani kell a fejlesztendő területeket.
- Széles algoritmus támogatás : Számos népszerű gépi tanulási algoritmust kínál, beleértve az osztályozási regressziót és a klaszterezést, amelyek rugalmasságot biztosítanak a problémánknak megfelelő modell kiválasztásában.
- Sima integráció : A fontos Python-könyvtárak, például a NumPy és a SciPy tetejére épült, így illeszkedik a meglévő adatelemzési munkafolyamatainkba.
- Egyszerű és következetes felület : Ugyanaz az egyszerű szintaxis működik a különböző modelleken, ami megkönnyíti a tanulást és az algoritmusok közötti váltást.
- A modellhangolás egyszerűen : Az olyan eszközök, mint a rácskeresés, segítenek a modellünk beállításainak finomhangolásában, hogy extra gond nélkül javítsuk a pontosságot.
A Scikit-learn használatának előnyei
- Felhasználóbarát : A Scikit-learn következetes és egyszerű kezelőfelülete elérhetővé teszi a kezdők számára, és a legjobb a szakértők számára.
- Időt megtakarító: Az előre elkészített eszközök és algoritmusok csökkentik a fejlesztési időt, ami lehetővé teszi számunkra, hogy többet összpontosítsunk a problémák megoldására, mint a részletek kódolására.
- Jobb modellteljesítmény : A könnyen használható hangoló és kiértékelő eszközök segítenek a modell pontosságának és megbízhatóságának javításában.
- Rugalmas és méretezhető : Algoritmusok széles skáláját támogatja, és zökkenőmentesen integrálódik más Python-könyvtárakba, így bármilyen méretű projekthez alkalmassá válik.
- Erős közösségi támogatás : Egy nagy, aktív közösség biztosítja a rendszeres frissítéseket, kiterjedt dokumentációt és rengeteg erőforrást, amelyek segítenek, ha elakadunk.