Python gépi tanulási szkriptek végrehajtása a Machine Learning Studióban (klasszikus)

A KÖVETKEZŐKRE VONATKOZIK:Applies to. Machine Learning Studio (klasszikus) Does not apply to.Azure Machine Learning

Fontos

A (klasszikus) Machine Learning Studio támogatása 2024. augusztus 31-én megszűnik. Javasoljuk, hogy addig térjen át az Azure Machine Learning használatára.

2021. december 1-től kezdve nem fog tudni létrehozni új (klasszikus) Machine Learning Studio-erőforrásokat. 2024. augusztus 31-ig továbbra is használhatja a meglévő (klasszikus) Machine Learning Studio-erőforrásokat.

A (klasszikus) ML Studio dokumentációjának kivezetése folyamatban van, és a jövőben nem várható a frissítése.

A Python értékes eszköz számos adatelemző eszközkészletében. A tipikus gépi tanulási munkafolyamatok minden szakaszában használják, beleértve az adatfeltárást, a jellemzők kinyerását, a modellek betanítását és ellenőrzését, valamint az üzembe helyezést.

Ez a cikk azt ismerteti, hogyan használhatja a Python-szkript végrehajtása modult a Python-kód használatára a Machine Learning Studio (klasszikus) kísérleteiben és webszolgáltatásaiban.

A Python-szkript végrehajtása modul használata

A Python in Studio (klasszikus) elsődleges felülete a Python-szkript végrehajtása modulon keresztül érhető el. Legfeljebb három bemenetet fogad el, és legfeljebb két kimenetet állít elő, az R-szkript végrehajtása modulhoz hasonlóan. A Python-kód egy speciálisan elnevezett belépésipont-függvényen azureml_mainkeresztül kerül be a paramétermezőbe.

Execute Python Script module

Sample python code in module parameter box

Bemeneti paraméterek

A Python-modul bemenetei Pandas DataFrame-ként érhetők el. A azureml_main függvény legfeljebb két opcionális Pandas DataFrame-et fogad el paraméterként.

A bemeneti portok és a függvényparaméterek közötti leképezés pozíció:

  • Az első csatlakoztatott bemeneti port a függvény első paraméterére van leképezve.
  • A második bemenet (ha csatlakoztatva van) a függvény második paraméterére van leképezve.
  • A harmadik bemenet további Python-modulok importálására szolgál.

Az alábbiakban részletesebb szemantika látható arról, hogy a bemeneti portok hogyan vannak leképezve a azureml_main függvény paramétereire.

Table of input port configurations and resulting Python signature

Kimeneti visszatérési értékek

A azureml_main függvénynek egyetlen, Python-sorozatba csomagolt Pandas DataFrame-et kell visszaadnia, például rekordot, listát vagy NumPy-tömböt. A sorozat első eleme visszakerül a modul első kimeneti portjára. A modul második kimeneti portja vizualizációkhoz használatos, és nem igényel visszatérési értéket. Ez a séma alább látható.

Mapping input ports to parameters and return value to output port

Bemeneti és kimeneti adattípusok fordítása

A Studio-adathalmazok nem ugyanazok, mint a Panda DataFrame-ek. Ennek eredményeképpen a (klasszikus) Studio bemeneti adathalmazai Pandas DataFrame-ké lesznek konvertálva, a kimeneti DataFrame-ek pedig vissza lesznek konvertálva Studio (klasszikus) adatkészletekké. A konvertálási folyamat során a következő fordítások is el lesznek végezve:

Python-adattípus A Studio fordítási eljárása
Sztringek és numerikus értékek Lefordítva a következőképpen
Pandas "NA" Lefordítva a "Hiányzó érték" kifejezésre
Indexvektorok Nem támogatott*
Nem sztring típusú oszlopnevek Oszlopnevek meghívása str
Ismétlődő oszlopnevek Adjon hozzá numerikus utótagot: (1), (2), (3) és így tovább.

*A Python-függvény összes bemeneti adatkerete mindig 64 bites numerikus indexet ad 0-tól a sorok számának mínusz 1-hez

Meglévő Python-szkriptmodulok importálása

A Python végrehajtásához használt háttérrendszer az Anacondán, egy széles körben használt tudományos Python-disztribúción alapul. Az adatközpontú számítási feladatokban használt leggyakoribb Python-csomagok közel 200-ból állnak. A Studio (klasszikus) jelenleg nem támogatja olyan csomagkezelő rendszerek használatát, mint a Pip vagy a Conda külső kódtárak telepítéséhez és kezeléséhez. Ha további kódtárak beépítésére van szükség, használja az alábbi forgatókönyvet útmutatóként.

Gyakori használati eset a meglévő Python-szkriptek studioi (klasszikus) kísérletekbe való beépítése. A Python-szkript végrehajtása modul egy Python-modulokat tartalmazó zip-fájlt fogad el a harmadik bemeneti porton. A fájlt futásidőben a végrehajtási keretrendszer bontja ki, és a tartalom bekerül a Python-értelmező könyvtárelérési útvonalára. A azureml_main belépési pont függvény ezután közvetlenül importálhatja ezeket a modulokat.

Vegyük példaként azt a fájlt, Hello.py tartalmaz egy egyszerű "Hello, World" függvényt.

User-defined function in Hello.py file

Ezután létrehozunk egy Hello.py tartalmazó fájlt Hello.zip:

Zip file containing user-defined Python code

Töltse fel a zip-fájlt adatkészletként a Studióba (klasszikus). Ezután hozzon létre és futtasson egy kísérletet, amely a Python-kódot használja a Hello.zip fájlban. Ehhez csatolja azt a Python-szkript végrehajtása modul harmadik bemeneti portjához az alábbi képen látható módon.

Sample experiment with Hello.zip as an input to an Execute Python Script module

User-defined Python code uploaded as a zip file

A modul kimenete azt mutatja, hogy a zip-fájl ki van csomagolva, és a függvény print_hello le lett futtatva.

Module output showing user-defined function

Azure Storage Blobok elérése

Az Azure Blob Storage-fiókban tárolt adatokat az alábbi lépésekkel érheti el:

  1. Töltse le helyileg a Pythonhoz készült Azure Blob Storage csomagot.
  2. Töltse fel a zip-fájlt a Studio (klasszikus) munkaterületére adathalmazként.
  3. BlobService-objektum létrehozása a következővel: protocol='http'
from azure.storage.blob import BlockBlobService

# Create the BlockBlockService that is used to call the Blob service for the storage account
block_blob_service = BlockBlobService(account_name='account_name', account_key='account_key', protocol='http')
  1. Tiltsa le a biztonságos átvitelre van szükség a Storage Konfiguráció beállítása lapon

Disable Secure transfer required in the Azure portal

Python-szkriptek üzembe helyezése

A pontozási kísérletben használt Összes Python-szkript végrehajtása modult meghívja a rendszer, ha webszolgáltatásként teszi közzé. Az alábbi képen például egy pontozási kísérlet látható, amely egyetlen Python-kifejezés kiértékelésére szolgáló kódot tartalmaz.

Studio workspace for a web service

Python Pandas expression

A kísérletből létrehozott webszolgáltatás a következő műveleteket hajtaná végre:

  1. Python-kifejezés használata bemenetként (sztringként)
  2. A Python-kifejezés elküldése a Python-értelmezőnek
  3. Egy olyan táblát ad vissza, amely a kifejezést és a kiértékelt eredményt is tartalmazza.

Vizualizációk használata

A MatplotLib használatával létrehozott rajzokat a Python-szkript végrehajtása adja vissza. A diagramok azonban nem lesznek automatikusan átirányítva a képekre az R használatakor. Ezért a felhasználónak explicit módon mentenie kell a rajzokat PNG-fájlokba.

A MatplotLib rendszerképeinek létrehozásához a következő lépéseket kell végrehajtania:

  1. Állítsa a háttérrendszert "AGG" értékre az alapértelmezett Qt-alapú renderelőről.
  2. Hozzon létre egy új ábraobjektumot.
  3. Kérje le a tengelyt, és hozza létre az összes diagramot.
  4. Mentse az ábrát egy PNG-fájlba.

Ezt a folyamatot az alábbi képek szemléltetik, amelyek pontdiagram-mátrixot hoznak létre a Pandas scatter_matrix függvényével.

Code to save MatplotLib figures to images

Click visualize on an Execute Python Script module to view the figures

Visualizing plots for a sample experiment using Python code

Több adatot is visszaadhat, ha különböző képekre menti őket. A Studio (klasszikus) futtatókörnyezete felveszi az összes képet, és összefűzi őket a vizualizációhoz.

Speciális példák

A (klasszikus) Studióban telepített Anaconda-környezet olyan gyakori csomagokat tartalmaz, mint a NumPy, a SciPy és a Scikits-Learn. Ezek a csomagok hatékonyan használhatók adatfeldolgozásra egy gépi tanulási folyamatban.

Az alábbi kísérlet és szkript például azt mutatja be, hogyan használhatók az együttes tanulók az Scikits-Learn-ban az adathalmaz jellemző-fontossági pontszámainak kiszámításához. A pontszámokkal felügyelt funkciók kiválasztását végezheti el, mielőtt egy másik modellbe lenne betáplálva.

Íme a Python-függvény, amellyel kiszámíthatja a fontossági pontszámokat, és a pontszámok alapján rendezheti a funkciókat:

Function to rank features by scores

A következő kísérlet ezután kiszámítja és visszaadja a "Pima Indian Diabetes" adathalmaz funkcióinak fontossági pontszámait a Machine Learning Studióban (klasszikus):

Experiment to rank features in the Pima Indian Diabetes dataset using Python

Visualization of the output of the Execute Python Script module

Korlátozások

A Python-szkript végrehajtása modul jelenleg az alábbi korlátozásokkal rendelkezik:

Védőfalas végrehajtás

A Python-futtatókörnyezet jelenleg védőfalas, és nem engedélyezi a hálózathoz vagy a helyi fájlrendszerhez való állandó hozzáférést. A modul befejezése után a helyileg mentett összes fájl el lesz különítve és törölve. A Python-kód nem fér hozzá a legtöbb könyvtárhoz azon a gépen, amelyen fut, a kivétel az aktuális könyvtár és annak alkönyvtárai.

A kifinomult fejlesztési és hibakeresési támogatás hiánya

A Python-modul jelenleg nem támogatja az OLYAN IDE-funkciókat, mint az intellisense és a hibakeresés. Ha a modul futásidőben meghiúsul, a teljes Python-veremkövetés elérhető. Ezt azonban meg kell tekinteni a modul kimeneti naplójában. Jelenleg azt javasoljuk, hogy Python-szkripteket dolgozzon ki és hibakeresést végezzen egy olyan környezetben, mint az IPython, majd importálja a kódot a modulba.

Egyetlen adatkeret kimenete

A Python belépési pontja csak egyetlen adatkeretet ad vissza kimenetként. Jelenleg nem lehet tetszőleges Python-objektumokat, például betanított modelleket közvetlenül visszaküldeni a Studio (klasszikus) futtatókörnyezetbe. A hasonló korlátozásokkal rendelkező R-szkriptekhez hasonlóan sok esetben előfordulhat, hogy az objektumokat bájttömbbe viszi, majd visszaadja egy adatkereten belül.

Nem lehet testre szabni a Python-telepítést

Jelenleg az egyéni Python-modulok hozzáadásának egyetlen módja a korábban ismertetett zip-fájl mechanizmus. Bár ez kis modulok esetében megvalósítható, a nagy modulok (különösen a natív DLL-eket tartalmazó modulok) vagy sok modul esetében nehézkes.

Következő lépések

További információ: Python fejlesztői központ.