Šis straipsnis yra apie Python Gateway, atvirojo kodo bendruomenės projektą, skirtą InterSystems IRIS duomenų platformai. Šis projektas leidžia organizuoti bet kokius mašininio mokymosi algoritmus, sukurtus Python (pagrindinė daugelio duomenų mokslininkų aplinka), naudoti daugybę paruoštų bibliotekų, kad greitai sukurtumėte adaptyvius, robotizuotus analitinius AI / ML sprendimus InterSystems IRIS platformoje. Šiame straipsnyje parodysiu, kaip „InterSystems IRIS“ gali organizuoti „Python“ procesus, efektyviai perduoti dvipusius duomenis ir kurti intelektualius verslo procesus.
planas
Įvadas.
Įrankiai.
Įrengimas.
API.
Sąveika.
Jupyter užrašų knygelė.
Išvados.
Nuorodos.
MLT įrankių rinkinys.
įvedimas
Python yra aukšto lygio, bendrosios paskirties programavimo kalba, skirta pagerinti kūrėjo produktyvumą ir kodo skaitomumą. Šioje straipsnių serijoje aptarsiu Python naudojimo InterSystems IRIS platformoje galimybes, daugiausia dėmesio skirdama Python kaip kalbos naudojimui kuriant ir paleidžiant mašininio mokymosi modelius.
Mašinų mokymasis (ML) – tai dirbtinio intelekto metodų klasė, kuriai būdingas ne tiesioginis problemos sprendimas, o mokymasis daugelio panašių problemų sprendimo procese.
Mašininio mokymosi algoritmai ir modeliai tampa vis labiau paplitę. Tam yra daug priežasčių, tačiau viskas priklauso nuo prieinamumo, paprastumo ir praktinių rezultatų. Ar klasterizavimas ar net neuroninių tinklų modeliavimas yra nauja technologija?
Žinoma, ne, bet šiais laikais nereikia rašyti šimtų tūkstančių kodo eilučių, kad būtų paleistas vienas modelis, o modelių kūrimo ir naudojimo kaštai vis mažėja.
Įrankiai tobulėja – nors mes neturime visiškai į GUI orientuotų AI/ML įrankių, pažanga, kurią matėme su daugeliu kitų informacinių sistemų klasių, tokių kaip BI (nuo kodo rašymo iki struktūrų naudojimo ir į GUI orientuotų konfigūruojamų sprendimų) taip pat pastebėta AI/ML kūrimo įrankiuose. Jau praėjome kodo rašymo etapą ir šiandien modeliams kurti ir mokyti naudojame karkasus.
Kiti patobulinimai, pvz., galimybė platinti iš anksto parengtą modelį, kai galutinis vartotojas tiesiog turi baigti modelio mokymą pagal savo konkrečius duomenis, taip pat palengvina mašininio mokymosi pradžią. Dėl šios pažangos mokymosi mašininis mokymasis yra daug lengvesnis tiek specialistams, tiek įmonėms apskritai.
Kita vertus, renkame vis daugiau duomenų. Su vieninga duomenų platforma, tokia kaip InterSystems IRIS, visa ši informacija gali būti nedelsiant paruošta ir naudojama kaip įvestis į mašininio mokymosi modelius.
Perėjus prie debesies, dirbtinio intelekto/ML projektų paleidimas tampa lengvesnis nei bet kada anksčiau. Galime vartoti tik tuos išteklius, kurių mums reikia. Be to, debesų platformų siūlomo lygiagretumo dėka galime sutaupyti praleisto laiko.
Bet kaip su rezultatais? Čia viskas tampa sudėtingesnė. Yra daug modelių kūrimo įrankių, kuriuos aptarsiu toliau. Sukurti gerą modelį nėra lengva, bet kas toliau? Pelno gavimas naudojant verslo modelį taip pat yra nebanali užduotis. Problemos šaknis yra analitinių ir operacijų darbo krūvių bei duomenų modelių atskyrimas. Kai mokome modelį, dažniausiai tai darome remdamiesi istoriniais duomenimis. Tačiau sukurto modelio vieta yra operacijų duomenų apdorojime. Kam naudingas geriausias nesąžiningų operacijų aptikimo modelis, jei jį vykdome kartą per dieną? Su pinigais sukčiai jau seniai išvykę. Turime apmokyti modelį remiantis istoriniais duomenimis, bet taip pat turime jį taikyti realiuoju laiku naujiems gaunamiems duomenims, kad mūsų verslo procesai galėtų veikti pagal modelio prognozes.
ML įrankių rinkinys yra įrankių rinkinys, kuriuo siekiama būtent tai: suvienodinti modelius ir operacijų aplinką, kad sukurtus modelius būtų galima lengvai naudoti tiesiogiai jūsų verslo procesuose. „Python Gateway“ yra ML įrankių rinkinio dalis ir užtikrina integraciją su „Python“ kalba (panašiai kaip „R Gateway“, būdama ML įrankių rinkinio dalis, užtikrina integraciją su R kalba).
Įrankių rinkinys
Prieš tęsdamas norėčiau aprašyti keletą Python įrankių ir bibliotekų, kurias naudosime vėliau.
Technologija
Python yra interpretuojama aukšto lygio bendrosios paskirties programavimo kalba. Pagrindinis kalbos pranašumas yra didelė matematinių, ML ir AI bibliotekų biblioteka. Kaip ir ObjectScript, tai į objektus orientuota kalba, tačiau viskas apibrėžiama dinamiškai, o ne statiškai. Taip pat viskas yra objektas. Vėlesniuose straipsniuose kalbama apie trumpalaikį šios kalbos pažinimą. Jei norite pradėti mokytis, rekomenduoju pradėti nuo dokumentacija.
IDE: Aš naudoju „PyCharm“, bet apskritai jie много. Jei naudojate „Atelier“, „Python“ kūrėjams yra „Eclipse“ papildinys. Jei naudojate VS kodą, yra Python plėtinys.
Užrašinė: vietoj IDE galite rašyti ir bendrinti savo scenarijus internetinėse užrašų knygelėse. Populiariausias iš jų yra Jupyteris.
Bibliotekos
Čia yra (neišsamus) mašininio mokymosi bibliotekų sąrašas:
Nešvankus — pagrindinis paketas tiksliems skaičiavimams.
Pandas — didelio našumo duomenų struktūros ir duomenų analizės įrankiai.
AI/ML technologijos daro verslą efektyvesnį ir pritaikesnį. Be to, šiandien šias technologijas vis lengviau kurti ir įdiegti. Pradėkite mokytis apie AI/ML technologijas ir kaip jos gali padėti jūsų organizacijai augti.
Montavimas
Yra keletas būdų, kaip įdiegti ir naudoti Python Gateway:
OS
Windows
Linux
Mac
dokininkas
Naudokite vaizdą iš DockerHub
Sukurkite savo išvaizdą
Nepriklausomai nuo diegimo metodo, jums reikės šaltinio kodo. Vienintelė vieta, kur galima atsisiųsti kodą leidimų puslapį. Jame yra išbandytų stabilių leidimų, tiesiog pasiimkite naujausią. Šiuo metu 0.8, bet laikui bėgant atsiras naujų. Neklonuokite / neatsisiųskite saugyklos, atsisiųskite naujausią versiją.
OS
Jei diegiate Python Gateway operacinėje sistemoje, pirmiausia (nepriklausomai nuo operacinės sistemos) turite įdiegti Python. Už tai:
Atsisiųskite ObjectScript kodą (t. y. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) į bet kurią sritį, kurioje yra produktų. Jei norite, kad esama sritis palaikytų produktus, paleiskite: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
Vieta išnaša DLL/SO/DYLIB į aplanką bin jūsų InterSystems IRIS egzempliorius. Bibliotekos failas turi būti pasiekiamas grąžintame kelyje write ##class(isc.py.Callout).GetLib().
Windows
Įsitikinkite, kad aplinkos kintamasis PYTHONHOME nurodo Python 3.6.7.
Įsitikinkite, kad sistemos aplinkos kintamasis yra PATH yra kintamasis PYTHONHOME (arba katalogą, į kurį jis nurodo).
„Linux“ („Debian“ / „Ubuntu“)
Patikrinkite, ar aplinkos kintamasis yra PATH yra /usr/lib и /usr/lib/x86_64-linux-gnu. Naudokite failą /etc/environment aplinkos kintamiesiems nustatyti.
Klaidų atveju undefined symbol: _Py_TrueStruct nustatykite nustatymą PythonLib. taip pat viduje readme yra Trikčių šalinimo skyrius.
Mac
Šiuo metu palaikoma tik Python 3.6.7 python.org. Patikrinkite kintamąjį PATH.
Jei pakeitėte aplinkos kintamuosius, iš naujo paleiskite InterSystems produktą.
dokininkas
Konteinerių naudojimas turi keletą privalumų:
Perkeliamumas
Veiksmingumas
Izoliacija
Lengvumas
Nekintamumas
Patikrinkite tai straipsnių serija Norėdami gauti daugiau informacijos apie Docker naudojimą su InterSystems produktais.
Šiuo metu visos Python Gateway versijos yra pagrįstos konteineriais 2019.4.
Paruoštas vaizdas
Vykdyti: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestNorėdami atsisiųsti ir paleisti Python Gateway su InterSystems IRIS Community Edition. Tai viskas.
Sukurkite savo išvaizdą
Norėdami sukurti „Docker“ vaizdą, paleiskite saugyklos šaknyje: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Pagal numatytuosius nustatymus vaizdas kuriamas remiantis vaizdu store/intersystems/iris-community:2019.4.0.383.0, tačiau tai galite pakeisti nustatydami kintamąjį IMAGE.
Norėdami sukurti iš InterSystems IRIS, paleiskite: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest ".
Jei naudojate vaizdą, pagrįstą InterSystems IRIS Community Edition, galite praleisti raktą.
komentarai
Bandymo procesas isc.py.test.Process išsaugo keletą vaizdų laikinajame kataloge. Galbūt norėsite pakeisti šį kelią į prijungtą katalogą. Norėdami tai padaryti, redaguokite nustatymą WorkingDir nurodant prijungtą katalogą.
Norėdami pasiekti terminalo paleidimą: docker exec -it irispy sh.
Prieiga prie sistemos valdymo portalo prisijungus SuperUser/SYS.
Įdiegę Python Gateway verta patikrinti, ar jis veikia. Vykdykite šį kodą InterSystems IRIS terminale:
set sc = ##class(isc.py.Callout).Setup()
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).
write var
Rezultatas turėtų būti: HELLO - Python kintamojo reikšmė x. Jei grąžinimo būsena sc yra klaida arba var tuščia, patikrinkite „Readme“ – trikčių šalinimo skyrius.
API
Python Gateway įdiegtas ir jūs patikrinote, ar jis veikia. Pats laikas pradėti juo naudotis!
Pagrindinė Python sąsaja yra isc.py.Main. Jame siūlomos šios metodų grupės (visi grąžinami %Status):
Kodo vykdymas
Duomenų perdavimas
Dukterinė įmonė
Kodo vykdymas
Šie metodai leidžia vykdyti savavališką Python kodą.
SimpleString
SimpleString – tai pagrindinis būdas. Reikia 4 neprivalomų argumentų:
code - vykdomo kodo eilutė. Eilučių tiekimo simbolis: $c(10).
result — ByRef nuoroda į kintamąjį, į kurį įrašoma reikšmė returnVariable.
Aukščiau mes padarėme:
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).
Šiame pavyzdyje mes priskiriame Python kintamąjį x vertė Hello ir nori grąžinti Python kintamojo reikšmę x į ObjectScript kintamąjį var.
Vykdyti kodą
„ExecuteCode“ yra saugesnė ir mažiau ribojanti alternatyva SimpleString.
„InterSystems IRIS“ platformos eilutės yra apribotos iki 3 641 144 simbolių, o jei norite vykdyti ilgesnę kodo dalį, turite naudoti gijas.
Priimami du argumentai:
code — Vykdomo Python kodo eilutė arba srautas.
variable — (neprivaloma) priskiria vykdymo rezultatą code šis Python kintamasis.
Naudojimo pavyzdys:
set sc = ##class(isc.py.Main).ExecuteCode("2*3", "y").
Šiame pavyzdyje mes padauginame 2 iš 3 ir įrašome rezultatą į Python kintamąjį y.
Duomenų perdavimas
Perduokite duomenis į Python ir iš jo.
Python -> InterSystems IRIS
Yra 4 būdai, kaip gauti „InterSystems IRIS“ Python kintamojo vertę, atsižvelgiant į jums reikalingą serializavimą:
String paprastiems duomenų tipams ir derinimui.
Repr paprastų objektų saugojimui ir derinimui.
JSON kad būtų lengva valdyti duomenis InterSystems IRIS pusėje.
Pickle išsaugoti objektus.
Šie metodai leidžia gauti kintamuosius iš Python kaip eilutę arba srautus.
GetVariable(variable, serialization, .stream, useString) - gauti serialization kintamasis variable в stream. Jei useString yra 1 ir serializavimas dedamas ant eilutės, tada grąžinama eilutė, o ne srautas.
GetVariableJson(variable, .stream, useString) - gauti kintamojo JSON serializavimą.
GetVariablePickle(variable, .stream, useString, useDill) - Gauti Pickle (arba Dill) kintamojo serializavimą.
Pabandykime gauti mūsų kintamąjį y.
set sc = ##class(isc.py.Main).GetVariable("y", , .val, 1)
write val
>6
InterSystems IRIS -> Python
Įkeliami duomenys iš InterSystems IRIS į Python.
ExecuteQuery(query, variable, type, namespace) - sukuria duomenų rinkinį (pandas dataframe arba list) iš sql užklausos ir nustato jį į Python kintamąjį variable. Plastikinis maišelis isc.py turi būti pasiekiamas rajone namespace — ten prašymas bus įvykdytas.
ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - įkelia pasaulinius duomenis global iš indekso start į end Python kaip tipo kintamasis type: list, arba pandos dataframe. Neprivalomų argumentų aprašymas mask ir labels galima rasti klasės dokumentacijoje ir saugykloje Duomenų perdavimo dokumentai.
ExecuteClass(class, variable, type, start, end, properties, namespace) - įkelia klasės duomenis class iš id start į end Python kaip tipo kintamasis type: list, arba pandos dataframe. properties — klasės ypatybių, kurias reikia įkelti į duomenų rinkinį, sąrašas (atskirtas kableliais). Palaikomos kaukės * и ?. Numatytas - * (visos savybės). Nuosavybė %%CLASSNAME ignoruojamas.
ExecuteTable(table, variable, type, start, end, properties, namespace) - įkelia lentelės duomenis table iš id start į end Python.
ExecuteQuery — universalus (bet kokia teisinga SQL užklausa bus perduota Python). Tačiau ExecuteGlobal ir jo įvyniojimai ExecuteClass и ExecuteTable dirbti su daugybe apribojimų. Jie yra daug greitesni (3–5 kartus greitesni nei ODBC tvarkyklė ir 20 kartų greitesni ExecuteQuery). Daugiau informacijos adresu Duomenų perdavimo dokumentai.
Visi šie metodai palaiko duomenų perdavimą iš bet kurios srities. Plastikinis maišelis isc.py turi būti pasiekiama tikslinėje srityje.
Vykdyti užklausą
ExecuteQuery(request, variable, type, namespace) — bet kurios teisingos SQL užklausos rezultatų perkėlimas į Python. Tai lėčiausias duomenų perdavimo būdas. Naudokite, jei ExecuteGlobal o jo įvyniojimų nėra.
Argumentai:
query - sql užklausa.
variable — Python kintamojo, į kurį įrašomi duomenys, pavadinimas.
type - list arba Pandos dataframe.
namespace — sritis, kurioje bus vykdomas prašymas.
Vykdyti Global
ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - pasaulinio lygio praėjimas Python.
Argumentai:
global - pasaulinis pavadinimas be ^
variable — Python kintamojo, į kurį įrašomi duomenys, pavadinimas.
type - list arba Pandos dataframe.
start - pirmasis pasaulinio indekso indeksas. Būtinai %Integer.
end — paskutinis pasaulinio indekso indeksas. Būtinai %Integer.
mask — pasaulinės vertės kaukė. Kaukė gali būti trumpesnė nei pasaulinių laukų skaičius (tokiu atveju laukai pabaigoje bus praleisti). Kaip suformatuoti kaukę:
+ perduoti vertę tokią, kokia yra.
- praleisti vertę.
b — Būlio tipas (0 - False, Visa kita - True).
d — Data (nuo $horolog, Windows sistemoje nuo 1970 m., Linux sistemoje nuo 1900 m.).
t — Laikas ($ horologas, sekundės po vidurnakčio).
m — Laiko žyma (formato eilutė METAI-MONTH-DAY HOUR:MINUTE:SECOND).
labels — Stulpelių pavadinimų sąrašas. Pirmasis elementas yra indekso pavadinimas.
namespace — sritis, kurioje bus vykdomas prašymas.
ExecuteClass
Apvyniokite ExecuteGlobal. Remdamasis klasės apibrėžimu, parengia skambutį ExecuteGlobal ir jam skambina.
ExecuteClass(class, variable, type, start, end, properties, namespace) - klasės duomenų perdavimas Python.
Argumentai:
class - klasės pavadinimas
variable — Python kintamojo, į kurį įrašomi duomenys, pavadinimas.
type - list arba Pandos dataframe.
start - pradžios ID.
end - galutinis ID
properties — klasės ypatybių, kurias reikia įkelti į duomenų rinkinį, sąrašas (atskirtas kableliais). Palaikomos kaukės * и ?. Numatytas - * (visos savybės). Nuosavybė %%CLASSNAME ignoruojamas.
namespace — sritis, kurioje bus vykdomas prašymas.
Visos savybės perduodamos tokios, kokios yra, išskyrus tipo ypatybes %Date, %Time, %Boolean и %TimeStamp - jie konvertuojami į atitinkamas Python klases.
Vykdyti lentelę
Apvyniokite ExecuteClass. Paverčia lentelės pavadinimą į klasės pavadinimą ir iškviečia ExecuteClass. Parašas:
table - lentelės pavadinimas.
Visi kiti argumentai priimami taip, kaip yra ExecuteClass.
Pastabos
ExecuteGlobal, ExecuteClass и ExecuteTable dirbti vienodai greitai.
ExecuteGlobal 20 kartų greičiau nei ExecuteQuery dideliuose duomenų rinkiniuose (perdavimo laikas > 0.01 sekundės).
ExecuteGlobal, ExecuteClass и ExecuteTable dirbti su globaliais su tokia struktūra: ^global(key) = $lb(prop1, prop2, ..., propN) kur key – sveikasis skaičius.
Už ExecuteGlobal, ExecuteClass и ExecuteTable palaikomas verčių diapazonas %Date atitinka diapazoną mktime ir priklauso nuo OS (langai: 1970-01-01, Linux 1900 01-01, Mac). Naudokite %TimeStampperkelti duomenis už šio diapazono ribų arba naudoti pandos duomenų rėmelį, nes tai tik sąrašo apribojimas.
Už ExecuteGlobal, ExecuteClass и ExecuteTable visi argumentai, išskyrus duomenų šaltinį (visuotinį, klasę arba lentelę) ir kintamąjį, yra neprivalomi.
pavyzdžiai
Bandomoji klasė isc.py.test.Person yra metodas, parodantis visas duomenų perdavimo parinktis:
set global = "isc.py.test.PersonD"
set class = "isc.py.test.Person"
set table = "isc_py_test.Person"
set query = "SELECT * FROM isc_py_test.Person"
// Общие аргументы
set variable = "df"
set type = "dataframe"
set start = 1
set end = $g(^isc.py.test.PersonD, start)
// Способ 0: ExecuteGlobal без аргументов
set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 0, type)
// Способ 1: ExecuteGlobal с аргументами
// При передаче глобала названия полей задаются вручную
// globalKey - название сабсткрипта
set labels = $lb("globalKey", "Name", "DOB", "TS", "RandomTime", "AgeYears", "AgeDecimal", "AgeDouble", "Bool")
// mask содержит на 1 элемент меньше чем labels потому что "globalKey" - название сабскипта
// Пропускаем %%CLASSNAME
set mask = "-+dmt+++b"
set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 1, type, start, end, mask, labels)
// Способ 2: ExecuteClass
set sc = ##class(isc.py.Main).ExecuteClass(class, variable _ 2, type, start, end)
// Способ 3: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteTable(table, variable _ 3, type, start, end)
// Способ 4: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteQuery(query, variable _ 4, type)
Iškvieskite metodą do ##class(isc.py.test.Person).Test() norėdami pamatyti, kaip veikia visi duomenų perdavimo būdai.
Pagalbiniai metodai
GetVariableInfo(variable, serialization, .defined, .type, .length) — gauti informaciją apie kintamąjį: ar jis apibrėžtas, jo klasę ir serializacijos ilgį.
GetVariableDefined(variable, .defined) — ar kintamasis yra apibrėžtas.
GetVariableType(variable, .type) — gauti kintamojo klasę.
GetStatus() - gauti ir pašalinti paskutinę išimtį Python pusėje.
GetModuleInfo(module, .imported, .alias) - gauti modulio kintamąjį ir importo būseną.
GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) — gauti informacijos apie funkciją.
Sąveika
Sužinojote, kaip iš terminalo iškviesti Python Gateway, dabar pradėkime jį naudoti gamyboje. Sąveikos su Python šiuo režimu pagrindas yra isc.py.ens.Operation. Tai leidžia mums:
Vykdykite kodą Python
Išsaugoti / atkurti Python kontekstą
Įkelti ir gauti duomenis iš Python
Iš esmės „Python“ operacija yra apvyniojimas isc.py.Main. Operacija isc.py.ens.Operation suteikia galimybę sąveikauti su Python procesu iš InterSystems IRIS produktų. Palaikomos penkios užklausos:
isc.py.msg.ExecutionRequest Vykdyti Python kodą. Grąžina isc.py.msg.ExecutionResponse su vykdymo rezultatu ir prašomų kintamųjų reikšmėmis.
isc.py.msg.StreamExecutionRequest Vykdyti Python kodą. Grąžina isc.py.msg.StreamExecutionResponse vykdymo rezultatas ir prašomų kintamųjų reikšmės. Analoginis isc.py.msg.ExecutionRequest, bet priima ir grąžina srautus, o ne eilutes.
isc.py.msg.SaveRequest išsaugoti Python kontekstą. Grąžina Ens.StringResponse su konteksto ID.
isc.py.msg.RestoreRequest atkurti Python kontekstą.
be to, isc.py.ens.Operation turi du nustatymus:
Initializer - pasirenkant klasę, kuri įgyvendina sąsają isc.py.init.Abstract. Jis gali būti naudojamas funkcijoms, moduliams, klasėms ir kt. Jis vykdomas vieną kartą, kai procesas prasideda.
PythonLib - (tik Linux), jei įkeldami matote klaidas, nustatykite jo reikšmę į libpython3.6m.so arba net visame Python bibliotekos kelyje.
Verslo procesų kūrimas
Yra dvi klasės, kurios palengvina verslo procesų plėtrą:
isc.py.ens.ProcessUtils leidžia išgauti anotacijas iš veiklos su kintamuoju pakeitimu.
isc.py.util.BPEmulator leidžia lengvai išbandyti verslo procesus naudojant Python. Jis gali vykdyti verslo procesą (Python dalis) dabartiniame procese.
Kintamasis pakeitimas
Visi verslo procesai paveldėti iš isc.py.ens.ProcessUtils, gali naudoti metodą GetAnnotation(name) norėdami gauti veiklos anotacijos reikšmę pagal jos pavadinimą. Veiklos anotacijoje gali būti kintamųjų, kurie bus apskaičiuoti InterSystems IRIS pusėje prieš perduodant juos į Python. Čia yra kintamųjų pakeitimo sintaksė:
${class:method:arg1:...:argN} - metodo iškvietimas
#{expr} - vykdyti kodą ObjectScript kalba.
Pavyzdys yra bandomajame verslo procese isc.py.test.Process, pavyzdžiui, veikloje Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Šiame pavyzdyje:
#{process.WorkDirectory} grąžina objekto ypatybę WorkDirectory process, kuris yra klasės pavyzdys isc.py.test.Process tie. dabartinis verslo procesas.
${%PopulateUtils:Integer:1:100} vadina metodu Integer klasė %PopulateUtils, perduodami argumentai 1 и 100, grąžina atsitiktinį sveikąjį skaičių diapazone 1...100.
Išbandyti verslo procesą
Bandomieji produktai ir verslo procesai pagal numatytuosius nustatymus pasiekiami kaip Python Gateway dalis. Norėdami juos naudoti:
OS terminale paleiskite: pip install pandas matplotlib seaborn.
InterSystems IRIS terminale paleiskite: do ##class(isc.py.test.CannibalizationData).Import() užpildyti testo duomenis.
Paleisti produktus isc.py.test.Production.
Siųsti užklausos tipą Ens.Request в isc.py.test.Process.
Pažiūrėkime, kaip visa tai veikia kartu. Atviras isc.py.test.Process BPL redaktoriuje:
Kodo vykdymas
Svarbiausias iššūkis yra Python kodo vykdymas:
Naudota užklausa isc.py.msg.ExecutionRequest, čia yra jo savybės:
Code - Python kodas.
SeparateLines — ar padalyti kodą į eilutes vykdymui. $c(10) (n) naudojamas eilutėms atskirti. Atkreipkite dėmesį, kad nerekomenduojama apdoroti viso pranešimo vienu metu, ši funkcija skirta tik apdoroti def ir panašios kelių eilučių išraiškos. Numatytas 0.
Variables — kableliais atskirtas kintamųjų, kurie bus pridėti prie atsakymo, sąrašas.
Serialization — Kaip suskirstyti kintamuosius, kuriuos norime grąžinti. Galimybės: Str, Repr, JSON, Pickle и Dill, numatytas Str.
Mūsų atveju mes nustatome tik nuosavybę Code, todėl visos kitos savybės naudoja numatytąsias reikšmes. Nustatome paskambinę process.GetAnnotation("Import pandas"), kuri vykdymo metu grąžina anotaciją atlikus kintamųjų pakeitimą. Juk kodas import pandas as pd bus perduotas Python. GetAnnotation gali būti naudinga norint gauti kelių eilučių Python scenarijus, tačiau šiam kodo gavimo metodui nėra jokių apribojimų. Galite nustatyti nuosavybę Code bet kokiu jums patogiu būdu.
Kintamųjų gavimas
Kitas įdomus iššūkis naudojant isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:
Jis apskaičiuoja koreliacijos matricą Python pusėje ir ištraukia kintamąjį corrmat grįžti į InterSystems IRIS JSON formatu, nustatydami užklausos ypatybes:
Variables: "corrmat"
Serialization: "JSON"
Rezultatus matome „Visual Trace“:
Ir jei mums reikia šios vertės BP, galime ją gauti taip: callresponse.Variables.GetAt("corrmat").
Duomenų perdavimas
Toliau pakalbėkime apie duomenų perdavimą iš InterSystems IRIS į Python; visos duomenų perdavimo užklausos įgyvendina sąsają isc.py.msg.DataRequestkuri suteikia šias savybes:
Variable — Python kintamasis, į kurį įrašomi duomenys.
Type - kintamasis tipas: dataframe (pandos duomenų rėmelis) arba list.
Namespace — sritis, iš kurios gauname duomenis. Plastikinis maišelis isc.py turėtų būti prieinami šioje srityje. Tai gali būti sritis be produkto palaikymo.
Remiantis šia sąsaja, įgyvendinamos 4 užklausų klasės:
isc.py.msg.QueryRequest - nustatyti turtą Query siųsti SQL užklausą.
isc.py.msg.ClassRequest - nustatyti turtą Class perduoti klasės duomenis.
isc.py.msg.TableRequest - nustatyti turtą Table lentelės duomenims perduoti.
isc.py.msg.GlobalRequest - nustatyti turtą Global pasauliniam duomenų perdavimui.
Bandymo procese pažiūrėkite į veiklą RAWKur isc.py.msg.QueryRequest parodyta veiksme.
Python konteksto išsaugojimas / atkūrimas
Galiausiai galime išsaugoti Python kontekstą „InterSystems IRIS“, kad tai padarytume, atsiųsime isc.py.msg.SaveRequest su argumentais:
Mask — Išsaugomi tik tie kintamieji, kurie atitinka kaukę. Palaikoma * и ?. Pavyzdys: "Data*, Figure?". Numatytas *.
MaxLength — Didžiausias saugomo kintamojo ilgis. Jei kintamojo serializavimas yra ilgesnis, jis bus ignoruojamas. Nustatykite 0, kad gautumėte bet kokio ilgio kintamuosius. Numatytas $$$MaxStringLength.
Name — Konteksto pavadinimas (neprivaloma).
Description — Konteksto aprašymas (neprivaloma).
Grįžta Ens.StringResponse с Id išsaugotas kontekstas. Bandymo procese pažiūrėkite į veiklą Save Context.
Susijęs prašymas isc.py.msg.RestoreRequest įkelia kontekstą iš InterSystems IRIS į Python:
ContextId - konteksto identifikatorius.
Clear — prieš atkurdami išvalykite kontekstą.
„Jupyter“ užrašų knygelė
„Jupyter“ užrašų knygelė yra atvirojo kodo žiniatinklio programa, leidžianti kurti ir publikuoti bloknotus su kodu, vizualizacijomis ir tekstu. „Python Gateway“ leidžia peržiūrėti ir redaguoti BPL procesus „Jupyter“ nešiojamojo kompiuterio pavidalu. Atminkite, kad šiuo metu naudojamas įprastas Python 3 vykdytojas.
Šis plėtinys daro prielaidą, kad komentaruose yra Python kodas ir naudojami veiklos pavadinimai kaip ankstesni pavadinimai. Dabar galima plėtoti PythonGateway verslo procesus Jupyter Notebook. Štai kas įmanoma:
MLToolkit yra įrankių rinkinys, kurio tikslas yra sujungti modelius ir operacijų aplinką, kad sukurtus modelius būtų galima lengvai naudoti tiesiogiai jūsų verslo procesuose. „Python Gateway“ yra MLToolkit dalis ir suteikia integraciją su Python kalba, leidžiančia organizuoti bet kokius mašininio mokymosi algoritmus, sukurtus Python (pagrindinė daugelio duomenų mokslininkų aplinka), naudoti daugybę paruoštų bibliotekų, kad greitai sukurtumėte prisitaikančią, robotizuotą analitinę AI / ML sprendimai InterSystems platformoje IRIS.
MLToolkit vartotojų grupė yra privati GitHub saugykla, sukurta kaip InterSystems įmonės GitHub organizacijos dalis. Jis skirtas išoriniams vartotojams, kurie diegia, mokosi arba jau naudoja MLToolkit komponentus, įskaitant Python Gateway. Grupė turi nemažai įdiegtų atvejų (su šaltinio kodu ir bandymų duomenimis) rinkodaros, gamybos, medicinos ir daugelyje kitų pramonės šakų. Norėdami prisijungti prie ML Toolkit vartotojų grupės, atsiųskite trumpą el. laišką šiuo adresu: [apsaugotas el. paštu] ir į savo laišką įtraukite šią informaciją:
GitHub vartotojo vardas
Organizacija (dirbate ar studijuojate)
Pareigos (jūsų faktinė padėtis organizacijoje, „studentas“ arba „nepriklausoma“).
Šalis
Tiems, kurie perskaitė straipsnį ir domisi InterSystems IRIS, kaip dirbtinio intelekto ir mašininio mokymosi variklių kūrimo ar talpinimo platformos, galimybėmis, kviečiame aptarti galimus scenarijus, kurie domina jūsų įmonę. Mielai išanalizuosime Jūsų įmonės poreikius ir kartu parengsime veiksmų planą; Mūsų AI/ML ekspertų komandos kontaktinis el. pašto adresas – [apsaugotas el. paštu].