Python Machine Learning-scripts uitvoeren in Machine Learning Studio (klassiek)
VAN TOEPASSING OP: Machine Learning Studio (klassiek) Azure Machine Learning
Belangrijk
De ondersteuning voor Azure Machine Learning-studio (klassiek) eindigt op 31 augustus 2024. U wordt aangeraden om vóór die datum over te stappen naar Azure Machine Learning.
Vanaf 1 december 2021 kunt u geen nieuwe resources voor Azure Machine Learning-studio (klassiek) meer maken. Tot en met 31 augustus 2024 kunt u de bestaande resources van Azure Machine Learning-studio (klassiek) blijven gebruiken.
- Zie informatie over het verplaatsen van machine learning-projecten van ML Studio (klassiek) naar Azure Machine Learning.
- Meer informatie over Azure Machine Learning
De documentatie van ML-studio (klassiek) wordt buiten gebruik gesteld en wordt in de toekomst mogelijk niet meer bijgewerkt.
Python is een waardevol hulpmiddel in de borst van veel gegevenswetenschappers. Deze wordt gebruikt in elke fase van typische machine learning-werkstromen, waaronder gegevensverkenning, functieextractie, modeltraining en validatie en implementatie.
In dit artikel wordt beschreven hoe u de Python-scriptmodule uitvoeren kunt gebruiken om Python-code te gebruiken in uw Machine Learning Studio-experimenten (klassiek) en webservices.
De Python-scriptmodule uitvoeren gebruiken
De primaire interface voor Python in Studio (klassiek) is via de module Python-script uitvoeren . Het accepteert maximaal drie invoerwaarden en produceert maximaal twee uitvoerwaarden, vergelijkbaar met de execute R Script-module . Python-code wordt ingevoerd in het parametervak via een speciaal benoemde invoerpuntfunctie met de naam azureml_main
.
Invoerparameters
Invoer voor de Python-module wordt weergegeven als Pandas DataFrames. De azureml_main
functie accepteert maximaal twee optionele Pandas DataFrames als parameters.
De toewijzing tussen invoerpoorten en functieparameters is positioneel:
- De eerste verbonden invoerpoort wordt toegewezen aan de eerste parameter van de functie.
- De tweede invoer (indien verbonden) wordt toegewezen aan de tweede parameter van de functie.
- De derde invoer wordt gebruikt om extra Python-modules te importeren.
Gedetailleerdere semantiek over hoe de invoerpoorten worden toegewezen aan parameters van de azureml_main
functie, worden hieronder weergegeven.
Retourwaarden voor uitvoer
De azureml_main
functie moet één Pandas DataFrame retourneren die is verpakt in een Python-reeks , zoals een tuple, lijst of NumPy-matrix. Het eerste element van deze reeks wordt geretourneerd naar de eerste uitvoerpoort van de module. De tweede uitvoerpoort van de module wordt gebruikt voor visualisaties en vereist geen retourwaarde. Dit schema wordt hieronder weergegeven.
Vertaling van invoer- en uitvoergegevenstypen
Studio-gegevenssets zijn niet hetzelfde als Panda DataFrames. Als gevolg hiervan worden invoergegevenssets in Studio (klassiek) geconverteerd naar Pandas DataFrame en worden de uitvoergegevenssets weer geconverteerd naar Studio-gegevenssets (klassiek). Tijdens dit conversieproces worden ook de volgende vertalingen uitgevoerd:
Python-gegevenstype | Procedure voor vertaling van Studio |
---|---|
Tekenreeksen en numerieke tekst | Vertaald als is |
Pandas 'NA' | Vertaald als 'Ontbrekende waarde' |
Indexvectoren | Niet-ondersteund* |
Niet-tekenreekskolomnamen | Kolomnamen aanroepen str |
Dubbele kolomnamen | Voeg numeriek achtervoegsel toe: (1), (2), (3), enzovoort. |
*Alle invoergegevensframes in de Python-functie hebben altijd een 64-bits numerieke index van 0 tot het aantal rijen min 1
Bestaande Python-scriptmodules importeren
De back-end die wordt gebruikt om Python uit te voeren, is gebaseerd op Anaconda, een veelgebruikte wetenschappelijke Python-distributie. Het wordt geleverd met bijna 200 van de meest voorkomende Python-pakketten die worden gebruikt in gegevensgerichte workloads. Studio (klassiek) biedt momenteel geen ondersteuning voor het gebruik van pakketbeheersystemen zoals Pip of Conda voor het installeren en beheren van externe bibliotheken. Als u aanvullende bibliotheken nodig hebt, gebruikt u het volgende scenario als richtlijn.
Een veelvoorkomende use-case is het opnemen van bestaande Python-scripts in Studio-experimenten (klassiek). De Module Python Script uitvoeren accepteert een zip-bestand met Python-modules op de derde invoerpoort. Het bestand wordt tijdens runtime uitgepakt door het uitvoeringsframework en de inhoud wordt toegevoegd aan het bibliotheekpad van de Python-interpreter. De azureml_main
invoerpuntfunctie kan deze modules vervolgens rechtstreeks importeren.
Bekijk bijvoorbeeld het bestand Hello.py met een eenvoudige 'Hallo wereld'-functie.
Vervolgens maken we een bestand Hello.zip dat Hello.py bevat:
Upload het zip-bestand als een gegevensset naar Studio (klassiek). Maak en voer vervolgens een experiment uit dat gebruikmaakt van de Python-code in het Hello.zip-bestand door het te koppelen aan de derde invoerpoort van de Module Python-script uitvoeren , zoals wordt weergegeven in de volgende afbeelding.
De uitvoer van de module laat zien dat het zip-bestand is uitgepakt en dat de functie print_hello
is uitgevoerd.
Toegang tot Azure Storage-blobs
U hebt toegang tot gegevens die zijn opgeslagen in een Azure Blob Storage-account met behulp van de volgende stappen:
- Download het Azure Blob Storage-pakket voor Python lokaal.
- Upload het zip-bestand naar uw Studio-werkruimte (klassiek) als een gegevensset.
- Uw BlobService-object maken met
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')
- Veilige overdracht uitschakelen die vereist is op het tabblad Opslagconfiguratie
Python-scripts operationeel maken
Alle Execute Python Script-modules die worden gebruikt in een scoreexperiment, worden aangeroepen wanneer ze worden gepubliceerd als een webservice. In de onderstaande afbeelding ziet u bijvoorbeeld een scoreexperiment dat de code bevat om één Python-expressie te evalueren.
Een webservice die is gemaakt op basis van dit experiment, zou de volgende acties uitvoeren:
- Een Python-expressie als invoer gebruiken (als een tekenreeks)
- De Python-expressie verzenden naar de Python-interpreter
- Retourneert een tabel met zowel de expressie als het geëvalueerde resultaat.
Werken met visualisaties
Plots die zijn gemaakt met MatplotLib, kunnen worden geretourneerd door het Python-script uitvoeren. Plots worden echter niet automatisch omgeleid naar afbeeldingen zoals ze zijn bij het gebruik van R. De gebruiker moet dus expliciet eventuele diagrammen opslaan in PNG-bestanden.
Als u afbeeldingen wilt genereren vanuit MatplotLib, moet u de volgende stappen uitvoeren:
- Schakel de back-end over naar AGG vanuit de standaardweergave op qtbasis.
- Maak een nieuw afbeeldingsobject.
- Haal de as op en genereer alle diagrammen erin.
- Sla de afbeelding op in een PNG-bestand.
Dit proces wordt geïllustreerd in de volgende afbeeldingen die een spreidingsmatrix maken met behulp van de functie scatter_matrix in Pandas.
Het is mogelijk om meerdere afbeeldingen te retourneren door ze op te slaan in verschillende afbeeldingen. De Studio-runtime (klassiek) haalt alle afbeeldingen op en voegt deze samen voor visualisatie.
Geavanceerde voorbeelden
De Anaconda-omgeving die in Studio (klassiek) is geïnstalleerd, bevat algemene pakketten zoals NumPy, SciPy en Scikits-Learn. Deze pakketten kunnen effectief worden gebruikt voor gegevensverwerking in een machine learning-pijplijn.
Het volgende experiment en script illustreren bijvoorbeeld het gebruik van ensembleleerders in Scikits-Learn om belangrijke scores voor functies voor een gegevensset te berekenen. De scores kunnen worden gebruikt om selectie van functies onder supervisie uit te voeren voordat ze worden ingevoerd in een ander model.
Dit is de Python-functie die wordt gebruikt om de urgentiescores te berekenen en de functies te orden op basis van de scores:
Het volgende experiment berekent en retourneert vervolgens de urgentiescores van functies in de gegevensset Pima Indian Diabetes in Machine Learning Studio (klassiek):
Beperkingen
De module Python-script uitvoeren heeft momenteel de volgende beperkingen:
Uitvoering in sandbox
De Python-runtime is momenteel in de sandbox geplaatst en staat geen toegang toe tot het netwerk of het lokale bestandssysteem op een permanente manier. Alle bestanden die lokaal zijn opgeslagen, worden geïsoleerd en verwijderd zodra de module is voltooid. De Python-code heeft geen toegang tot de meeste mappen op de computer waarop deze wordt uitgevoerd, de uitzondering is de huidige map en de bijbehorende submappen.
Gebrek aan geavanceerde ondersteuning voor ontwikkeling en foutopsporing
De Python-module biedt momenteel geen ondersteuning voor IDE-functies zoals intellisense en foutopsporing. Als de module tijdens runtime mislukt, is ook de volledige Python-stacktracering beschikbaar. Maar deze moet worden weergegeven in het uitvoerlogboek voor de module. We raden u momenteel aan Python-scripts te ontwikkelen en fouten op te sporen in een omgeving zoals IPython en vervolgens de code in de module te importeren.
Uitvoer van één gegevensframe
Het Python-toegangspunt mag slechts één gegevensframe retourneren als uitvoer. Het is momenteel niet mogelijk om willekeurige Python-objecten, zoals getrainde modellen, rechtstreeks terug te sturen naar de Studio-runtime (klassiek). Net zoals Execute R Script, dat dezelfde beperking heeft, is het in veel gevallen mogelijk om objecten te kiezen in een bytematrix en die vervolgens binnen een gegevensframe te retourneren.
De Installatie van Python kan niet worden aangepast
Momenteel is de enige manier om aangepaste Python-modules toe te voegen via het zip-bestandsmechanisme dat eerder is beschreven. Hoewel dit haalbaar is voor kleine modules, is het lastig voor grote modules (met name modules met systeemeigen DLL's) of een groot aantal modules.
Volgende stappen
Raadpleeg het Python Developer Center voor meer informatie.