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.
Pythonfrom 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:
Adatkészlet betöltéseNé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.
Pythonfrom 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.
Pythonprint('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 alakja3. 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.
Pythonfrom 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]]
Pythonsample = [[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:
- 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.