Saját algoritmus írása az ML Studioban

Időnként szükséges lehet, hogy egyedi transzformációkat hajtsunk végre az adatokon. Ilyenkor lehet hasznos valamelyik támogatott nyelven implementálni.

R nyelven:

Execute R Script:

Segítségével elvégezhetünk egyedi transzformációkat az adatainkon, a saját metrikáink szerint építhetjük fel, illetve értékelhetjük ki a modelleket.

Apróbb változtatások szükségesek lehetnek egy más R futtatókörnyezetben írt kódhoz képest, például az input adatokat először adathalmazzá kell konvertálni.

A modulban megadhatunk paraméterként egy random seedet a számításainkhoz, ez ekvivalens az R-ben kiadott set.seed() paranccsal. Természetesen az érdemi rész az R Script ablakban lesz. Itt találhatunk is egy alapértelmezett programkódot:

1Rscript

2RdeviceKimenetként egy adathalmazt adhatunk vissza, ami rendelkezik az is.data.frame tulajdonsággal.
Az R Device kimeneten megkapjuk a konzolra írt adatokat és a grafikonokat. Futás után a Visualize menüponttal megtekinthetjük ezeket.
Megadhatunk opcionálisan 2 bemenő adathalmazt, és egy ZIP fájlt is, amiben R kód, objektumok, csomagok, adathalmazok lehetnek. Egy ilyen zip fájlt egy új adathalmazként tudunk feltölteni, majd ezt lehet bekötni a modul megfelelő inputjaként. Amennyiben egy csomagot szeretnénk használni, a bekötés után ugyan úgy fel kell telepíteni, mint bármelyik R futtatókörnyezetben.

A maml.mapInputPort(n) függvény visszatér a megadott inputtal data.frame-ként, ezután az rbind segítségével konkatenálja a két kapott adathalmazt. A plot kirajzolja az egyesített táblánk pontjait, majd a maml.mapOutputPort(„variable”) a baloldali kimenetre irányítja az adatokat.

3pdfscript

Az R segítségével készített plotokat akár elmenthetjük későbbi felhasználásra, például egy PDF fájlként. Egy Writer modul képes kiírni a base64 kódolású PDF-et valamelyik Azure tárolóba. Én egy Storage Accountba raktam bele a fájlt, amit dekódolva megkapjuk a kívánt PDF-et:

4pdfresult

Egy ilyen modulból átadhatunk tetszőleges objektumokat, majd felhasználhatjuk azokat. Ehhez a serialize metódussal kell az objektumot kódolni, majd az unserialize-zal dekódolni. Én egy függvényt készítettem, ami a kapott szám kétszeresét adja vissza.

5copy

6copyresultLátható, hogy az eredményben megkaptam a 3 kétszeresét, tehát sikeresen átvittem a metódust a két részegység között.

Természetesen bármilyen más, tetszőlegesen bonyolult objektumot is átadhatunk ezzel a módszerrel.

 

Create R Model:

A segítségével bármilyen az R-ben megtalálható algoritmussal készíthetünk egy tanítatlan modellt, amit aztán szinte ugyan úgy felhasználhatunk, mint bármelyik beépítettet. Jelenleg egyedül az Evaluate model nem támogatja, azonban helyette saját kiértékelést végezhetünk rajta.

Először meg kell adni a tanító szkriptet, amivel majd tanítani fogjuk az algoritmusunkat. Ez fog lefutni a Train Modelben. A példában egy Naiv Bayes algoritmust fogunk felhasználni.

7rmodel

Betöltjük az algoritmust tartalmazó osztálykönyvtárat, majd a beépített függvények segítségével lekérjük a figyelembe vett oszlopokat és az osztálycímkéket, majd berakjuk őket a train.data változóba. Természetesen alapértelmezetten minden nem-címke oszlopot figyelembe veszünk, így amennyiben ez nem szükséges, a Metadata Editorral szerkesszük az adathalmazt, vagy egyszerűen itt az R scriptben kézzel szedjük össze a kellő oszlopokat. Ezután a beépített get.feature.column.names() függvénnyel lekérjük az egyes oszlopok nevét, majd a tréning adatunk fejléceként adjuk, az utolsó címke oszlopnak pedig a „Class” nevet adjuk. Legvégül pedig megtanítjuk az algoritmusunkat a kinyert adatokkal, és a model változóba rakjuk azt.

7rmodelpicture

A pontozó résznél is először betöltjük a szükséges könyvtárat, majd kiértékeljük az adatokat a már kész algoritmussal. Amint megvan, az osztályok közül a valószínűbbet választva kigyűjtjük azokat, majd hozzáfűzve a valószínűségeket berakjuk a scores változóba.

Ezek az algoritmusok nem kezelik a hiányzó adatokat, az minden esetben a mi a felelősségünk, hogy felkészítsük a tréning és pontozó részt is az ilyen sorokra.

Python nyelven:

Execute Python Script:

8python

 

Nem csak az R, hanem a Python nyelvet is felhasználhatjuk alkalmazásunk bővítésére. Amennyiben valaki ezt preferálja, bármikor kényelmesen felhasználhatja a nyelv adottságait az adatok transzformálására. Ezen kívül például a matplotlib függvénykönyvtárral sokszínű diagramokat készíthetünk. Elég hasonló az R társához, itt is megvan ugyan az a három bemenet és két kimenet. Az érdemi rész nyilván itt is a script ablakban lesz.

9pydataA példában két-két oszlop értékeit szoroztam össze egymással Python segítségével.

Minden ilyen scriptbe szükséges az azureml_main nevű függvény, ez lesz a belépési pont, ezt fogja elindítani a Studio. Itt paraméterül kapjuk meg a két adathalmazt, és majd a returnnel tudunk az adathalmaz outputra írni. A konzol kimenetet és a grafikákat itt is ugyan úgy le tudjuk olvasni a Python Device kimeneten.

10pyresultAhogy látszik is, sikerült összeszorozni az oszlopokat, megkaptuk a kívánt eredményt.

 

 

Leave a Reply