logo

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('nType of X is:' type(X)) print('nFirst 5 rows of X:n' X[:5]) 

Kimenet: 

modell1' title=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:

modell2' loading='lazy' title=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.
Python
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ő
Python
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:

modell 3' loading='lazy' title=

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.
Python
from sklearn.linear_model import LogisticRegression log_reg = LogisticRegression(max_iter=200) log_reg.fit(X_train y_train) 
modell4' loading='lazy' title=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.
Python
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: 

java tostring

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
Kvíz létrehozása