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 toolkist 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 module Python-script uitvoeren kunt gebruiken om Python-code te gebruiken in uw Machine Learning Studio-experimenten (klassiek) en webservices.
De module Python-script 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 module Execute R Script . Python-code wordt ingevoerd in het parametervak via een speciaal benoemde invoerpuntfunctie met de naam azureml_main
.
Invoerparameters
Invoer in 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 uitvoergegevenssets weer geconverteerd naar Studio-gegevenssets (klassiek). Tijdens dit conversieproces worden ook de volgende vertalingen uitgevoerd:
Python-gegevenstype | Vertaalprocedure van Studio |
---|---|
Tekenreeksen en numerieke tekens | Vertaald zoals is |
Pandas 'NA' | Vertaald als 'Ontbrekende waarde' |
Indexvectoren | Unsupported* |
Kolomnamen zonder tekenreeks | 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 vindt dat u extra bibliotheken moet opnemen, 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.
Denk bijvoorbeeld aan het bestand Hello.py met een eenvoudige 'Hallo, wereld'-functie.
Vervolgens maken we een bestand Hello.zip met Hello.py:
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 module-uitvoer laat zien dat het zip-bestand is uitgepakt en dat de functie print_hello
is uitgevoerd.
Toegang tot Azure Storage-blobs
U kunt met de volgende stappen toegang krijgen tot gegevens die zijn opgeslagen in een Azure Blob Storage-account:
- 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')
- Beveiligde overdracht uitschakelen die is vereist op het tabblad Opslagconfiguratie
Python-scripts operationeel maken
Alle Execute Python Script-modules die worden gebruikt in een score-experiment, worden aangeroepen wanneer ze worden gepubliceerd als een webservice. In de onderstaande afbeelding ziet u bijvoorbeeld een score-experiment 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 gebruiken als invoer (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 plots opslaan in PNG-bestanden.
Als u afbeeldingen wilt genereren vanuit MatplotLib, moet u de volgende stappen uitvoeren:
- Zet de back-end over op AGG vanuit de standaardweergave op Qt.
- 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 is geïnstalleerd in Studio (klassiek) 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 de selectie van functies onder supervisie uit te voeren voordat ze worden ingevoerd in een ander model.
Hier volgt 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 belangrijke scores 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 de volledige Python-stacktracering ook 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 als 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.
Kan python-installatie niet aanpassen
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.