Bu makale, InterSystems IRIS veri platformu için açık kaynaklı bir topluluk projesi olan Python Gateway hakkındadır. Bu proje, Python'da (birçok Veri Bilimcisi için ana ortam) oluşturulan herhangi bir makine öğrenimi algoritmasını düzenlemenize, InterSystems IRIS platformunda hızlı bir şekilde uyarlanabilir, robotik analitik AI / ML çözümleri oluşturmak için çok sayıda hazır kitaplığı kullanmanıza olanak tanır. Bu makalede InterSystems IRIS'in Python'da süreçleri nasıl düzenleyebildiğini, iki yönlü verileri verimli bir şekilde iletebildiğini ve akıllı iş süreçleri yaratabildiğini göstereceğim.
Plan
- Giriş.
- Aletler.
- Kurulum.
- API.
- Birlikte çalışabilirlik.
- Jüpiter Not Defteri.
- Sonuç.
- Bağlantılar.
- MLToolkit.
Giriş
Python, geliştirici üretkenliğini ve kod okunabilirliğini artırmayı amaçlayan üst düzey, genel amaçlı bir programlama dilidir. Bu makale dizisinde Python'u InterSystems IRIS platformunda kullanma olanaklarını tartışacağım; bu makalenin ana odağı Python'un makine öğrenimi modelleri oluşturmak ve çalıştırmak için bir dil olarak kullanılmasıdır.
Makine öğrenimi (ML), karakteristik özelliği bir problemin doğrudan çözümü değil, birçok benzer problemin çözümü sürecinde öğrenme olan bir yapay zeka yöntemleri sınıfıdır.
Makine öğrenimi algoritmaları ve modelleri giderek yaygınlaşıyor. Bunun pek çok nedeni var, ancak hepsi erişilebilirliğe, basitliğe ve pratik sonuçlara ulaşmaya bağlı. Kümeleme ve hatta sinir ağı modellemesi yeni bir teknoloji midir?
Elbette hayır ama günümüzde tek bir modeli çalıştırmak için yüzbinlerce satır kod yazmaya gerek yok ve model oluşturma ve kullanma maliyeti de giderek azalıyor.
Araçlar gelişiyor - tam olarak GUI merkezli AI/ML araçlarına sahip olmasak da, BI gibi diğer birçok bilgi sistemi sınıfında (kod yazmaktan çerçeveleri ve GUI merkezli yapılandırılabilir çözümleri kullanmaya kadar) gördüğümüz ilerleme şu şekildedir: AI/ML oluşturmaya yönelik araçlarda da gözlemlendi. Kod yazma aşamasını çoktan geçtik ve bugün modeller oluşturmak ve eğitmek için çerçeveler kullanıyoruz.
Son kullanıcının modelin eğitimini kendi spesifik verileri üzerinde tamamlaması gereken, önceden eğitilmiş bir modeli dağıtma yeteneği gibi diğer iyileştirmeler de makine öğrenimine başlamayı kolaylaştırır. Bu ilerlemeler, makine öğrenmeyi öğrenmeyi hem profesyoneller hem de genel olarak şirketler için çok daha kolay hale getiriyor.
Öte yandan giderek daha fazla veri topluyoruz. InterSystems IRIS gibi birleşik bir veri platformuyla tüm bu bilgiler anında hazırlanıp makine öğrenimi modellerine girdi olarak kullanılabilir.
Buluta geçişle birlikte AI/ML projelerini başlatmak her zamankinden daha kolay hale geliyor. Sadece ihtiyacımız olan kaynakları tüketebiliriz. Üstelik bulut platformlarının sunduğu paralelleştirme sayesinde harcanan zamandan da tasarruf edebiliyoruz.
Peki ya sonuçlar? İşte bu noktada işler daha da karmaşıklaşıyor. Model oluşturmak için daha sonra tartışacağım birçok araç var. İyi bir model oluşturmak kolay değil ama sırada ne var? Bir iş modelini kullanarak kar elde etmek de önemsiz olmayan bir iştir. Sorunun temelinde analitik ve işlemsel iş yüklerinin ve veri modellerinin ayrılması yatıyor. Bir modeli eğittiğimizde bunu genellikle geçmiş veriler üzerinde yaparız. Ancak oluşturulan modelin yeri işlemsel veri işlemedir. Günde bir kez çalıştırırsak en iyi sahte işlem tespit modelinin ne faydası olur? Dolandırıcılar çoktan parayı alıp gittiler. Modeli geçmiş verilere göre eğitmemiz gerekiyor ama aynı zamanda iş süreçlerimizin modelin yaptığı tahminlere göre hareket edebilmesi için bunu yeni gelen verilere de gerçek zamanlı olarak uygulamamız gerekiyor.
ML Araç Seti tam da bunu yapmayı amaçlayan bir araç setidir: yerleşik modellerin doğrudan iş süreçlerinizde kolayca kullanılabilmesi için modelleri ve işlem ortamını birleştirin. Python Gateway, ML Toolkit'in bir parçasıdır ve Python diliyle entegrasyon sağlar (ML Toolkit'in bir parçası olan R Gateway'in R diliyle entegrasyon sağlamasına benzer şekilde).
araçları
Devam etmeden önce daha sonra kullanacağımız birkaç Python aracını ve kütüphanesini anlatmak istiyorum.
Teknoloji
- Python yorumlanmış, üst düzey, genel amaçlı bir programlama dilidir. Dilin temel avantajı matematik, makine öğrenimi ve yapay zeka kütüphanelerinden oluşan geniş kütüphanesidir. ObjectScript gibi nesne yönelimli bir dildir ancak her şey statik olarak değil dinamik olarak tanımlanır. Ayrıca her şey bir nesnedir. Daha sonraki makaleler dile geçici bir aşinalık olduğunu varsayar. Öğrenmeye başlamak istiyorsanız, başlamanızı öneririm .
- Sonraki alıştırmalarımız için .
- IDE: kullanıyorum ama genel olarak onlar . Atelier kullanıyorsanız Python geliştiricileri için bir Eclipse eklentisi bulunmaktadır. VS Code kullanıyorsanız Python için bir uzantı vardır.
- Not Defteri: Bir IDE yerine komut dosyalarınızı çevrimiçi not defterlerine yazıp paylaşabilirsiniz. Bunlardan en popüler olanı .
Kütüphaneler
Makine öğrenimi kitaplıklarının (kapsamlı olmayan) bir listesi:
- — hassas hesaplamalar için temel bir paket.
- — yüksek performanslı veri yapıları ve veri analizi araçları.
- - grafiklerin oluşturulması.
- — matplotlib'e dayalı veri görselleştirme.
- — makine öğrenimi yöntemleri.
- — Gradyan artırma metodolojisi çerçevesinde makine öğrenimi algoritmaları.
- —NLP.
- - nöral ağlar.
- — makine öğrenimi modelleri oluşturmaya yönelik bir platform.
- Python'a odaklanan makine öğrenimi modelleri oluşturmaya yönelik bir platformdur.
- - Çeşitli modellerden PMML.
AI/ML teknolojileri işletmeyi daha verimli ve uyarlanabilir hale getirir. Üstelik günümüzde bu teknolojilerin geliştirilmesi ve uygulanması kolaylaşıyor. AI/ML teknolojilerini ve bunların kuruluşunuzun büyümesine nasıl yardımcı olabileceğini öğrenmeye başlayın.
Montaj
Python Gateway'i kurmanın ve kullanmanın birkaç yolu vardır:
- ОС
- Windows
- Linux
- Mac
- liman işçisi
- DockerHub'tan bir görüntü kullanın
- Kendi görünümünüzü yaratın
Kurulum yönteminden bağımsız olarak kaynak koduna ihtiyacınız olacaktır. Kodu indirebileceğiniz tek yer . Test edilmiş kararlı sürümleri içerir, sadece en sonuncuyu alın. Şu anda 0.8 ama zamanla yenileri olacak. Depoyu klonlamayın/indirmeyin, en son sürümü indirin.
ОС
Python Gateway'i bir işletim sistemine kuruyorsanız, öncelikle (işletim sisteminden bağımsız olarak) Python'u yüklemeniz gerekir. Bunun için:
- . Python'u varsayılan dizine kurmanız önerilir.
- Modülü yükleyin
dill:pip install dill. - ObjectScript kodunu indirin (ör.
do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) ürünlerin bulunduğu herhangi bir alana. Mevcut bir alanın ürünleri desteklemesini istiyorsanız şunu çalıştırın:write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1). - Yer klasöre
binInterSystems IRIS örneğiniz. Kütüphane dosyası döndürülen yolda bulunmalıdırwrite ##class(isc.py.Callout).GetLib().
Windows
- Ortam değişkeninin olduğundan emin olun
PYTHONHOMEPython 3.6.7'ye işaret ediyor. - Sistem ortam değişkeninin olduğundan emin olun.
PATHbir değişken içerirPYTHONHOME(veya işaret ettiği dizin).
Linux (Debian/Ubuntu)
- Ortam değişkeninin olup olmadığını kontrol edin
PATHiçerdiği/usr/libи/usr/lib/x86_64-linux-gnu. Dosyayı kullan/etc/environmentortam değişkenlerini ayarlamak için. - Hata durumunda
undefined symbol: _Py_TrueStructayarı yapPythonLib. Ayrıca Sorun Giderme bölümü bulunmaktadır.
Mac
- Şu anda yalnızca Python 3.6.7 desteklenmektedir . Değişkeni kontrol edin
PATH.
Ortam değişkenlerini değiştirdiyseniz InterSystems ürününüzü yeniden başlatın.
liman işçisi
Konteyner kullanmanın birçok avantajı vardır:
- taşınabilirlik
- etki
- Yalıtım
- hafiflik
- Değişmezlik
Bunu kontrol et Docker'ı InterSystems ürünleriyle kullanma hakkında daha fazla bilgi için.
Tüm Python Gateway yapıları şu anda konteyner tabanlıdır 2019.4.
Hazır görüntü
Koşmak: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestPython Gateway'i InterSystems IRIS Community Edition ile indirip çalıştırmak için. Bu kadar.
Kendi görünümünüzü yaratın
Bir liman işçisi görüntüsü oluşturmak için havuzun kökünde çalıştırın: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Varsayılan olarak görüntü, görüntü temel alınarak oluşturulur store/intersystems/iris-community:2019.4.0.383.0ancak bunu bir değişken ayarlayarak değiştirebilirsiniz IMAGE.
InterSystems IRIS'ten derlemek için şunu çalıştırın: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest ".
Bundan sonra liman işçisi görüntüsünü çalıştırabilirsiniz:
docker run -d
-p 52773:52773
-v /<HOST-DIR-WITH-iris.key>/:/mount
--name irispy
intersystemscommunity/irispy:latest
--key /mount/iris.keyInterSystems IRIS Community Edition'ı temel alan bir görüntü kullanıyorsanız anahtarı atlayabilirsiniz.
Yorumlar
- Test süreci
isc.py.test.Processbir dizi görüntüyü geçici bir dizine kaydeder. Bu yolu bağlı dizine değiştirmek isteyebilirsiniz. Bunu yapmak için ayarı düzenleyinWorkingDirmonte edilen dizini belirterek. - Terminal çalıştırmasına erişmek için:
docker exec -it irispy sh. - Sistem Yönetim Portalına giriş yaparak erişim
SuperUser/SYS. - Kabı durdurmak için şunu çalıştırın:
docker stop irispy && docker rm --force irispy.
Kurulumun doğrulanması
Python Gateway'i yükledikten sonra çalışıp çalışmadığını kontrol etmeye değer. Bu kodu InterSystems IRIS terminalinde yürütün:
set sc = ##class(isc.py.Callout).Setup()
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).
write varSonuç şöyle olmalıdır: HELLO — Python değişken değeri x. İade durumu ise sc bir hata mı yoksa var boş, kontrol et .
API
Python Gateway kuruldu ve çalıştığını doğruladınız. Kullanmaya başlamanın zamanı geldi!
Python'un ana arayüzü isc.py.Main. Aşağıdaki yöntem gruplarını sunar (tümü geri dönüş) %Status):
- Kod Yürütme
- Veri aktarımı
- yardımcı
Kod Yürütme
Bu yöntemler isteğe bağlı Python kodunu çalıştırmanıza olanak tanır.
SimpleString
SimpleString - bu ana yöntemdir. 4 isteğe bağlı argüman alır:
code- yürütülecek kod satırı. Satır besleme karakteri:$c(10).returnVariable— döndürülecek değişkenin adı.serialization- nasıl serileştirilirreturnVariable. 0 — dize (varsayılan), 1 — repr.result— Değerin yazıldığı değişkene ByRef referansıreturnVariable.
Yukarıda şunları yaptık:
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).Bu örnekte bir Python değişkenine atama yapıyoruz x değer Hello ve bir Python değişkeninin değerini döndürmek istiyorum x bir ObjectScript değişkenine var.
Çalıştırma Kodu
ExecuteCode daha güvenli ve daha az kısıtlayıcı bir alternatiftir SimpleString.
InterSystems IRIS platformundaki satırlar 3 karakterle sınırlıdır ve daha uzun bir kod parçası çalıştırmak istiyorsanız iş parçacığı kullanmanız gerekir.
İki argüman kabul edilir:
code- yürütülecek Python kodunun bir satırı veya akışı.variable— (isteğe bağlı) yürütme sonucunu atarcodebu Python değişkeni.
Kullanılacak örnek:
set sc = ##class(isc.py.Main).ExecuteCode("2*3", "y").Bu örnekte 2 ile 3'ü çarpıyoruz ve sonucu bir Python değişkenine yazıyoruz. y.
Veri aktarımı
Verileri Python'a ve Python'dan aktarın.
Python -> Sistemler Arası IRIS
İhtiyacınız olan serileştirmeye bağlı olarak InterSystems IRIS'te bir Python değişkeninin değerini almanın 4 yolu vardır:
Stringbasit veri türleri ve hata ayıklama için.Reprbasit nesneleri depolamak ve hata ayıklamak için.JSONInterSystems IRIS tarafında kolay veri manipülasyonu için.Picklenesneleri kaydetmek için.
Bu yöntemler Python'dan değişkenleri bir dize veya akış olarak almanıza olanak tanır.
GetVariable(variable, serialization, .stream, useString)- elde etmekserializationdeğişkenvariableвstream. EğeruseString1'dir ve serileştirme bir dizeye yerleştirilir, ardından bir akış değil bir dize döndürülür.GetVariableJson(variable, .stream, useString)- bir değişkenin JSON serileştirmesini alın.GetVariablePickle(variable, .stream, useString, useDill)-bir değişkenin Turşu (veya Dereotu) serileştirmesini alın.
Değişkenimizi almaya çalışalım y.
set sc = ##class(isc.py.Main).GetVariable("y", , .val, 1)
write val
>6InterSystems IRIS -> Python
InterSystems IRIS'ten Python'a veri yükleme.
ExecuteQuery(query, variable, type, namespace)- bir veri kümesi oluşturur (pandalardataframeveyalist) sql sorgusundan alır ve bunu bir Python değişkenine ayarlarvariable. Naylon poşetisc.pybölgede mevcut olmalıdırnamespace— istek orada yürütülecektir.ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace)- küresel verileri yüklerglobalalt simgedenstartkarşıendPython'da bir tür değişkeni olaraktype:listveya pandalardataframe. İsteğe bağlı bağımsız değişkenlerin açıklamasımaskvelabelssınıf dokümantasyonunda ve deposunda mevcuttur .ExecuteClass(class, variable, type, start, end, properties, namespace)- sınıf verilerini yüklerclasskimliktenstartkarşıendPython'da bir tür değişkeni olaraktype:listveya pandalardataframe.properties— veri kümesine yüklenmesi gereken sınıf özelliklerinin (virgülle ayrılmış) bir listesi. Desteklenen maskeler*и?. Varsayılan -*(tüm özellikler). Mülk%%CLASSNAMEgörmezden gelindi.ExecuteTable(table, variable, type, start, end, properties, namespace)- tablo verilerini yüklertablekimliktenstartkarşıendPython'da.
ExecuteQuery — evrensel (herhangi bir doğru SQL sorgusu Python'a iletilecektir). Fakat, ExecuteGlobal ve ambalajları ExecuteClass и ExecuteTable bir dizi kısıtlamayla çalışın. Çok daha hızlıdırlar (ODBC sürücüsünden 3-5 kat daha hızlı ve 20 kat daha hızlıdırlar) ExecuteQuery). Daha fazla bilgi için: .
Tüm bu yöntemler herhangi bir alandan veri aktarımını destekler. Naylon poşet isc.py Hedef bölgede mevcut olmalıdır.
Sorguyu çalıştır
ExecuteQuery(request, variable, type, namespace) - herhangi bir doğru SQL sorgusunun sonuçlarının Python'a aktarılması. Bu en yavaş veri aktarım yöntemidir. Eğer kullan ExecuteGlobal ve ambalajları mevcut değildir.
argümanlar:
query-sql sorgusu.variable— verinin yazıldığı Python değişkeninin adı.type-listveya Pandalardataframe.namespace— isteğin yürütüleceği alan.
YürütGlobal
ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - Python'da bir global geçmek.
argümanlar:
global- olmadan küresel ad^variable— verinin yazıldığı Python değişkeninin adı.type-listveya Pandalardataframe.start- globalin ilk alt simgesi. mutlaka%Integer.end— globalin son alt simgesi. mutlaka%Integer.mask— küresel değer maskesi. Maske, geneldeki alan sayısından daha kısa olabilir (bu durumda sondaki alanlar atlanır). Bir maske nasıl biçimlendirilir:+değeri olduğu gibi aktarın.-değeri atla.b— Boole türü (0-False, Tüm kalan -True).d— Tarih ($horolog'dan, üzerinde) Windows 1970'ten itibaren Linux 1900 tarihinden itibaren).t— Zaman ($horolog, gece yarısından sonraki saniyeler).m— Zaman damgası (biçim dizesi YIL-AY-GÜN SAAT:DAKİKA:SANİYE).
labels— %Sütun adlarının listesi. İlk öğe abonenin adıdır.namespace— isteğin yürütüleceği alan.
Yürütme Sınıfı
Sar ExecuteGlobal. Sınıf tanımına göre bir çağrı hazırlar ExecuteGlobal ve onu çağırıyor.
ExecuteClass(class, variable, type, start, end, properties, namespace) - Python'da sınıf verilerinin aktarılması.
argümanlar:
class- sınıf adıvariable— verinin yazıldığı Python değişkeninin adı.type-listveya Pandalardataframe.start— başlangıç kimliği.end— son kimlikproperties— veri kümesine yüklenmesi gereken sınıf özelliklerinin (virgülle ayrılmış) bir listesi. Desteklenen maskeler*и?. Varsayılan -*(tüm özellikler). Mülk%%CLASSNAMEgörmezden gelindi.namespace— isteğin yürütüleceği alan.
Tür özellikleri dışında tüm özellikler olduğu gibi iletilir %Date, %Time, %Boolean и %TimeStamp - karşılık gelen Python sınıflarına dönüştürülürler.
YürütmeTablosu
Sar ExecuteClass. Tablo adını sınıf adına ve çağrılara çevirir ExecuteClass. İmza:
ExecuteTable(table, variable, type, start, end, properties, namespace) - tablo verilerinin Python'a aktarılması.
argümanlar:
table- Tablo ismi.
Diğer tüm argümanlar olduğu gibi iletilirExecuteClass.
Notlar
ExecuteGlobal,ExecuteClassиExecuteTableeşit derecede hızlı çalışın.ExecuteGlobal20 kat daha hızlıExecuteQuerybüyük veri kümelerinde (aktarım süresi >0.01 saniye).ExecuteGlobal,ExecuteClassиExecuteTablebu yapıya sahip globaller üzerinde çalışın:^global(key) = $lb(prop1, prop2, ..., propN)neredekey- Bir tam sayı.- için
ExecuteGlobal,ExecuteClassиExecuteTabledesteklenen değer aralığı%Datearalığa karşılık gelirmktimeve işletim sistemine bağlıdır (: 1970-01-01, 1900-01-01, ). Kullanmak%TimeStampbu aralığın dışındaki verileri aktarmak veya pandaların veri çerçevesini kullanmak için bu yalnızca liste sınırlamasıdır. - için
ExecuteGlobal,ExecuteClassиExecuteTableveri kaynağı (global, sınıf veya tablo) ve değişken dışındaki tüm argümanlar isteğe bağlıdır.
Örnekler
Test sınıfı tüm veri aktarım seçeneklerini gösteren bir yöntem içerir:
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)Yöntemi çağır do ##class(isc.py.test.Person).Test() tüm veri aktarım yöntemlerinin nasıl çalıştığını görmek için.
Yardımcı Yöntemler
GetVariableInfo(variable, serialization, .defined, .type, .length)— değişken hakkında bilgi alın: tanımlanmış olup olmadığı, sınıfı ve serileştirme uzunluğu.GetVariableDefined(variable, .defined)– değişkenin tanımlı olup olmadığı.GetVariableType(variable, .type)- değişkenin sınıfını alın.GetStatus()- Python tarafındaki son istisnayı alın ve kaldırın.GetModuleInfo(module, .imported, .alias)- modül değişkenini ve içe aktarma durumunu alın.GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments)— işlev hakkında bilgi alın.
birlikte çalışabilirlik
Python Gateway’i terminalden nasıl çağıracağınızı öğrendiniz, şimdi üretimde kullanmaya başlayalım. Bu modda Python ile etkileşim kurmanın temeli isc.py.ens.Operation. Bize şunları sağlar:
- Python'da kod yürütme
- Python içeriğini kaydet/geri yükle
- Python'dan veri yükleme ve alma
Temel olarak, bir Python işlemi bir sarmalayıcıdır. isc.py.Main. Operasyon isc.py.ens.Operation InterSystems IRIS ürünlerinden Python süreciyle etkileşim kurma yeteneği sağlar. Beş sorgu desteklenir:
isc.py.msg.ExecutionRequestPython kodunu yürütmek için. İadelerisc.py.msg.ExecutionResponseyürütme sonucu ve istenen değişkenlerin değerleri ile.isc.py.msg.StreamExecutionRequestPython kodunu yürütmek için. İadelerisc.py.msg.StreamExecutionResponseyürütmenin sonucu ve istenen değişkenlerin değerleri. Analogisc.py.msg.ExecutionRequestancak dizeler yerine akışları kabul eder ve döndürür.isc.py.msg.QueryRequestBir SQL sorgusu yürütmenin sonucunu iletmek için. İadelerEns.Response.isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequestgenel/sınıf/tablo verilerini iletmek için. İadelerEns.Response.isc.py.msg.SaveRequestPython içeriğini kaydetmek için. İadelerEns.StringResponsebağlam kimliği ile.isc.py.msg.RestoreRequestPython bağlamını geri yüklemek için.Buna ek olarak,
isc.py.ens.Operationiki ayarı vardır:Initializer— arayüzü uygulayan bir sınıf seçmekisc.py.init.Abstract. Fonksiyonları, modülleri, sınıfları vb. yüklemek için kullanılabilir. İşlem başladığında bir kez yürütülür.PythonLib— (sadece bunun için) LinuxYükleme sırasında hatalar görürseniz, değerini şu şekilde ayarlayın:libpython3.6m.sohatta Python kütüphanesinin tam yolunda.
İş süreçlerinin oluşturulması
İş süreçlerinin gelişimini kolaylaştıran iki sınıf mevcuttur:
isc.py.ens.ProcessUtilsdeğişken ikameli etkinliklerden ek açıklamalar çıkarmanıza olanak tanır.isc.py.util.BPEmulatorPython ile iş süreçlerini test etmeyi kolaylaştırır. Mevcut süreçte bir iş sürecini (Python parçaları) yürütebilir.
Değişken Değiştirme
Miras alınan tüm iş süreçleri isc.py.ens.ProcessUtilsyöntemini kullanabilir GetAnnotation(name) etkinlik ek açıklama değerini adına göre almak için. Etkinlik ek açıklaması, Python'a aktarılmadan önce InterSystems IRIS tarafında hesaplanacak değişkenleri içerebilir. Değişken değiştirmenin sözdizimi şöyledir:
${class:method:arg1:...:argN}- yöntem çağrısı#{expr}— kodu ObjectScript dilinde yürütün.
Test iş sürecinde bir örnek mevcuttur isc.py.test.Processörneğin etkinlikte Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Bu örnekte:
#{process.WorkDirectory}nesnenin WorkDirectory özelliğini döndürürprocess, sınıfın bir örneğidirisc.py.test.Processonlar. mevcut iş süreci.${%PopulateUtils:Integer:1:100}bir yöntem çağırırIntegersınıf%PopulateUtils, argümanları iletmek1и100aralıkta rastgele bir tamsayı döndürüyor1...100.
İş sürecini test edin
Test ürünleri ve test iş süreçleri varsayılan olarak Python Gateway'in bir parçası olarak mevcuttur. Bunları kullanmak için:
- İşletim sistemi terminalinde şunu çalıştırın:
pip install pandas matplotlib seaborn. - InterSystems IRIS terminalinde şunu çalıştırın:
do ##class(isc.py.test.CannibalizationData).Import()Test verilerini doldurmak için. - Ürünleri başlatın
isc.py.test.Production. - İstek türünü gönder
Ens.Requestвisc.py.test.Process.
Hep birlikte nasıl çalıştığını görelim. Açık isc.py.test.Process BPL düzenleyicide:

Kod Yürütme
En önemli zorluk Python kodunu çalıştırmaktır:

Kullanılan sorgu isc.py.msg.ExecutionRequest, işte özellikleri:
Code— Python kodu.SeparateLines— kodun yürütülmek üzere satırlara bölünüp bölünmeyeceği.$c(10)(n) dizeleri ayırmak için kullanılır. Lütfen mesajın tamamının bir kerede işlenmesinin önerilmediğini unutmayın; bu işlev yalnızca iletiyi işlemek için tasarlanmıştır.defve benzer çok satırlı ifadeler. Varsayılan0.Variables— cevaba eklenecek değişkenlerin virgülle ayrılmış listesi.Serialization— Döndürmek istediğimiz değişkenleri nasıl serileştiririz. Seçenekler:Str,Repr,JSON,PickleиDill, varsayılanStr.
Bizim durumumuzda yalnızca özelliği ayarladık Codebu nedenle diğer tüm özellikler varsayılan değerleri kullanır. arayarak ayarladık process.GetAnnotation("Import pandas")çalışma zamanında değişken değişimi gerçekleştirildikten sonra bir açıklama döndürür. Sonuçta kod import pandas as pd Python'a aktarılacak. GetAnnotation çok satırlı Python komut dosyalarının elde edilmesinde yararlı olabilir, ancak bu kod alma yönteminde herhangi bir kısıtlama yoktur. Özelliği ayarlayabilirsiniz Code sizin için uygun olan herhangi bir şekilde.
Değişkenleri Alma
Kullanımıyla ilgili bir başka ilginç zorluk isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Python tarafındaki Korelasyon Matrisini hesaplar ve değişkeni çıkarır. corrmat istek özelliklerini ayarlayarak JSON formatında InterSystems IRIS'e geri dönün:
Variables:"corrmat"Serialization:"JSON"
Sonuçları Visual Trace'de görebiliriz:

Ve eğer BP'de bu değere ihtiyacımız varsa, bunu şu şekilde elde edebiliriz: callresponse.Variables.GetAt("corrmat").
Veri aktarımı
Şimdi InterSystems IRIS'ten Python'a veri aktarımından bahsedelim; tüm veri aktarımı istekleri arayüzü uygular isc.py.msg.DataRequestaşağıdaki özellikleri sağlar:
Variable— içine verilerin yazıldığı bir Python değişkeni.Type— değişken türü:dataframe(pandaların veri çerçevesi) veyalist.Namespace— veri aldığımız alan. Naylon poşetisc.pybu alanda mevcut olmalıdır. Bu ürün desteği olmayan bir alan olabilir.
Bu arayüze dayanarak 4 sınıf istek uygulanır:
isc.py.msg.QueryRequest- özelliği ayarlayınQuerySQL sorgusu göndermek için.isc.py.msg.ClassRequest- özelliği ayarlayınClasssınıf verilerini iletmek için.isc.py.msg.TableRequest- özelliği ayarlaTableTablo verilerini aktarmak için.isc.py.msg.GlobalRequest- özelliği ayarlaGlobalküresel veri aktarımı için.
Test sürecinde etkinliğe bakın RAWNerede isc.py.msg.QueryRequest eylem halinde gösterilmiştir.

Python Bağlamını Kaydetme/Geri Yükleme
Son olarak Python içeriğini InterSystems IRIS'e kaydedebiliriz, bunu yapmak için isc.py.msg.SaveRequest argümanlarla:
Mask— Yalnızca maskeyle eşleşen değişkenler kaydedilir. Destekleniyor*и?. Örnek:"Data*, Figure?"... Varsayılan*.MaxLength— Saklanan değişkenin maksimum uzunluğu. Bir değişkenin serileştirilmesi daha uzunsa göz ardı edilecektir. Herhangi bir uzunluktaki değişkenleri elde etmek için 0'a ayarlayın. Varsayılan$$$MaxStringLength.Name— Bağlam adı (isteğe bağlı).Description— Bağlamın açıklaması (isteğe bağlı).
İadeler Ens.StringResponse с Id bağlam kaydedildi. Test sürecinde etkinliğe bakın Save Context.
İlgili istek isc.py.msg.RestoreRequest InterSystems IRIS'ten Python'a içerik yükler:
ContextId— bağlam tanımlayıcı.Clear— geri yüklemeden önce bağlamı temizleyin.
Jupyter Not Defteri
kod, görselleştirmeler ve metin içeren not defterleri oluşturmanıza ve yayınlamanıza olanak tanıyan açık kaynaklı bir web uygulamasıdır. Python Gateway, BPL işlemlerini Jupyter Notebook biçiminde görüntülemenize ve düzenlemenize olanak tanır. Lütfen şu anda normal Python 3 uygulayıcısının kullanıldığını unutmayın.
Bu uzantı, ek açıklamaların Python kodu içerdiğini varsayar ve etkinlik adlarını önceki başlıklar olarak kullanır. Jupyter Notebook'ta PythonGateway iş süreçlerini geliştirmek artık mümkün. İşte mümkün olanlar:
- Yeni iş süreçleri yaratın
- İş süreçlerini silin
- Yeni aktiviteler oluşturun
- Faaliyetleri değiştir
- Etkinlikleri sil
Burada . Ve birkaç ekran görüntüsü:
Süreç araştırmacısı

Süreç editörü

Montaj
- InterSystems IRIS 2019.2+ sürümüne ihtiyacınız olacak.
- PythonGateway v0.8+'ı yükleyin (yalnızca gerekli
isc.py.util.Jupyter,isc.py.util.JupyterCheckpointsиisc.py.ens.ProcessUtils). - ObjectScript kodunu depodan güncelleyin.
- Yürüt
do ##class(isc.py.util.Jupyter).Install()ve talimatları izleyin.
.
Bulgular
MLToolkit, oluşturulan modellerin doğrudan iş süreçlerinizde kolayca kullanılabilmesi için modelleri ve işlem ortamını birleştirmeyi amaçlayan bir araç setidir. Python Gateway, MLToolkit'in bir parçasıdır ve Python diliyle entegrasyon sağlayarak Python'da (birçok Veri Bilimcisi için ana ortam) oluşturulan herhangi bir makine öğrenimi algoritmasını düzenlemenize, uyarlanabilir, robotik analitik AI /'yi hızlı bir şekilde oluşturmak için çok sayıda hazır kitaplığı kullanmanıza olanak tanır. InterSystems platformu IRIS'te makine öğrenimi çözümleri.
referanslar
MLToolkit
MLToolkit kullanıcı grubu, InterSystems kurumsal GitHub organizasyonunun bir parçası olarak oluşturulan özel bir GitHub deposudur. Python Gateway de dahil olmak üzere MLToolkit bileşenlerini yükleyen, öğrenen veya halihazırda kullanan harici kullanıcılara yöneliktir. Grubun pazarlama, üretim, tıp ve diğer birçok endüstri alanında (kaynak kodu ve test verileriyle birlikte) çok sayıda uygulanmış vakası vardır. ML Araç Seti Kullanıcı Grubuna katılmak için lütfen aşağıdaki adrese kısa bir e-posta gönderin: ve mektubunuza aşağıdaki bilgileri ekleyin:
- GitHub kullanıcı adı
- Organizasyon (çalışıyor veya okuyorsunuz)
- Pozisyon (kuruluşunuzdaki gerçek pozisyonunuz, "Öğrenci" veya "Bağımsız").
- ülke
Makaleyi okuyan ve yapay zeka ve makine öğrenimi motorlarını geliştirmeye veya barındırmaya yönelik bir platform olarak InterSystems IRIS'in yetenekleriyle ilgilenenler için, sizi kuruluşunuzun ilgisini çeken olası senaryoları tartışmaya davet ediyoruz. Firmanızın ihtiyaçlarını analiz edip ortak bir aksiyon planı belirlemekten mutluluk duyacağız; AI/ML uzman ekibimizin iletişim e-posta adresi – .
Kaynak: habr.com
