Modellépítés tanulása a Scikit-learnben

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: 

modell1Adatké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:

modell2A 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

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  )   
modell4Ké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: 

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