Execute scripts de aprendizagem de máquinas python no Estúdio de Machine Learning (clássico)

APLICA A:Aplica-se a. O Machine Learning Studio (clássico) não se aplica.Aprendizagem de Máquinas Azure

Importante

O suporte para o Estúdio de ML (clássico) terminará a 31 de agosto de 2024. Recomendamos a transição para o Azure Machine Learning até essa data.

A partir de 1 de dezembro de 2021, não poderá criar novos recursos do Estúdio de ML (clássico). Até 31 de agosto de 2024, pode continuar a utilizar os recursos existentes do Estúdio de ML (clássico).

A documentação do Estúdio de ML (clássico) está a ser descontinuada e poderá não ser atualizada no futuro.

Python é uma ferramenta valiosa no baú de ferramentas de muitos cientistas de dados. É usado em todas as fases dos fluxos típicos de aprendizagem automática, incluindo a exploração de dados, extração de recursos, treino de modelos e validação, e implementação.

Este artigo descreve como pode usar o módulo Execut Python Script para usar o código Python nas suas experiências e serviços web do Machine Learning Studio (clássico).

Utilizando o módulo de script de Python executar

A interface primária para Python em Studio (clássico) é através do módulo Execut Python Script . Aceita até três entradas e produz até duas saídas, semelhantes ao módulo Execut R Script . O código Python é introduzido na caixa de parâmetros através de uma função de ponto de entrada especialmente denominada azureml_main.

Execute o módulo de script python

Código python de amostra na caixa de parâmetros do módulo

Parâmetros de entrada

As entradas para o módulo Python são expostas como DataFrames pandas. A azureml_main função aceita até dois DataFrames pandas opcionais como parâmetros.

O mapeamento entre portas de entrada e parâmetros de função é posicional:

  • A primeira porta de entrada ligada está mapeada para o primeiro parâmetro da função.
  • A segunda entrada (se ligada) é mapeada para o segundo parâmetro da função.
  • A terceira entrada é usada para importar módulos Python adicionais.

Semântica mais detalhada de como as portas de entrada são mapeadas para parâmetros da azureml_main função são mostradas abaixo.

Tabela de configurações da porta de entrada e assinatura python resultante

Valores de retorno da saída

A azureml_main função deve devolver um único DataFrame de Pandas embalado numa sequência python, como um tuple, lista ou matriz NumPy. O primeiro elemento desta sequência é devolvido à primeira porta de saída do módulo. A segunda porta de saída do módulo é utilizada para visualizações e não requer um valor de devolução. Este esquema é apresentado abaixo.

Mapear portas de entrada para parâmetros e valor de retorno para a porta de saída

Tradução dos tipos de dados de entrada e saída

Os conjuntos de dados do estúdio não são os mesmos que os DataFrames do Panda. Como resultado, os conjuntos de dados de entrada em Studio (clássico) são convertidos para Pandas DataFrame, e os DataFrames de saída são convertidos de volta para conjuntos de dados studio (clássicos). Durante este processo de conversão, são também realizadas as seguintes traduções:

Tipo de dado python Procedimento de tradução de estúdio
Cordas e numéricos Traduzido como é
Pandas 'NA' Traduzido como 'Valor Em Falta'
Vetores de índice Sem apoio*
Nomes de colunas não-cordas Chamada str em nomes de colunas
Nomes de colunas duplicados Adicione sufixo numérico: (1), (2), (3) e assim por diante.

*Todos os quadros de dados de entrada na função Python têm sempre um índice numérico de 64 bits de 0 para o número de linhas menos 1

Importar módulos de script python existentes

O backend usado para executar Python é baseado em Anaconda, uma distribuição científica amplamente usada python. Vem com cerca de 200 dos pacotes Python mais comuns usados em cargas de trabalho centradas em dados. O Studio (clássico) não suporta atualmente a utilização de sistemas de gestão de pacotes como pip ou Conda para instalar e gerir bibliotecas externas. Se encontrar a necessidade de incorporar bibliotecas adicionais, use o seguinte cenário como guia.

Um caso de uso comum é incorporar scripts Python existentes em experiências studio (clássicas). O módulo Execut Python Script aceita um ficheiro zip contendo módulos Python na terceira porta de entrada. O ficheiro é desbloqueado pela estrutura de execução em tempo de execução e o conteúdo é adicionado ao caminho da biblioteca do intérprete Python. A azureml_main função de ponto de entrada pode então importar estes módulos diretamente.

Como exemplo, considere o ficheiro Hello.py que contém uma função simples "Olá, Mundo".

Função definida pelo utilizador em Hello.py ficheiro

Em seguida, criamos um ficheiro Hello.zip que contém Hello.py:

Ficheiro zip contendo código Python definido pelo utilizador

Faça o upload do ficheiro zip como um conjunto de dados para o Studio (clássico). Em seguida, crie e execute uma experiência que utilize o código Python no ficheiro Hello.zip, fixando-o à terceira porta de entrada do módulo Execut Python Script , tal como mostrado na imagem seguinte.

Experimente a experiência com Hello.zip como entrada para um módulo de script de Python executo

Código Python definido pelo utilizador carregado como um ficheiro zip

A saída do módulo mostra que o ficheiro zip foi desembalado e que a função print_hello foi executada.

Saída do módulo mostrando a função definida pelo utilizador

Aceder a bolhas de armazenamento Azure

Pode aceder aos dados armazenados numa conta Armazenamento de Blobs do Azure utilizando estes passos:

  1. Descarregue o pacote Armazenamento de Blobs do Azure para Python localmente.
  2. Faça o upload do ficheiro zip para o seu espaço de trabalho Studio (clássico) como um conjunto de dados.
  3. Crie o seu objeto BlobService com 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')
  1. Desativar transferência segura necessária no separador de definição de configuração de configuração de armazenamento

Transferência de segurança para desativação necessária no portal do Azure

Operacionalizar scripts python

Quaisquer módulos de Script Python executados utilizados numa experiência de pontuação são chamados quando publicados como um serviço web. Por exemplo, a imagem abaixo mostra uma experiência de pontuação que contém o código para avaliar uma única expressão Python.

Espaço de trabalho de estúdio para um serviço web

Expressão de Pandas python

Um serviço web criado a partir desta experiência tomaria as seguintes ações:

  1. Tome uma expressão Python como entrada (como uma corda)
  2. Envie a expressão Python ao intérprete Python
  3. Devolve uma tabela que contém tanto a expressão como o resultado avaliado.

Trabalhar com visualizações

Os enredos criados usando o MatplotLib podem ser devolvidos pelo Executo Python Script. No entanto, os enredos não são automaticamente redirecionados para as imagens como são quando utilizam R. Assim, o utilizador deve guardar explicitamente quaisquer parcelas para ficheiros PNG.

Para gerar imagens de MatplotLib, deve dar os seguintes passos:

  1. Mude o backend para "AGG" a partir do renderizador qt predefinido.
  2. Criar um novo objeto figura.
  3. Obter o eixo e gerar todos os enredos nele.
  4. Guarde a figura para um ficheiro PNG.

Este processo é ilustrado nas seguintes imagens que criam uma matriz de enredo de dispersão usando a função scatter_matrix em Pandas.

Código para salvar figuras de MatplotLib para imagens

Clique em visualizar num módulo de script de Python executar para ver as figuras

Visualizar parcelas para uma experiência de amostra usando código Python

É possível devolver várias figuras guardando-as em imagens diferentes. O tempo de execução do estúdio (clássico) capta todas as imagens e concatena-as para visualização.

Exemplos avançados

O ambiente Anaconda instalado em Studio (clássico) contém pacotes comuns como NumPy, SciPy e Scikits-Learn. Estes pacotes podem ser eficazmente utilizados para o processamento de dados num gasoduto de aprendizagem automática.

Por exemplo, a seguinte experiência e script ilustram o uso de alunos do conjunto em Scikits-Learn para calcular pontuações de importância de recurso para um conjunto de dados. As pontuações podem ser usadas para executar a seleção de recursos supervisionados antes de serem alimentadas para outro modelo.

Aqui está a função Python usada para calcular as pontuações de importância e encomendar as funcionalidades com base nas pontuações:

Função para classificar funcionalidades por pontuações

A seguinte experiência calcula e devolve as pontuações importantes de características no conjunto de dados "Pima Indian Diabetes" no Machine Learning Studio (clássico):

Experimente classificar as funcionalidades no conjunto de dados da Diabetes Indiana Pima usando Python

Visualização da saída do módulo executo do script python

Limitações

O módulo executo python script tem atualmente as seguintes limitações:

Execução de sandboxed

O tempo de execução python é atualmente sandboxed e não permite o acesso à rede ou ao sistema de ficheiros local de forma persistente. Todos os ficheiros guardados localmente são isolados e eliminados assim que o módulo terminar. O código Python não pode aceder à maioria dos diretórios na máquina em que funciona, sendo a exceção o diretório atual e as suas subdireções.

Falta de desenvolvimento sofisticado e depuragem de apoio

O módulo Python atualmente não suporta funcionalidades IDE como intellisense e depurando. Além disso, se o módulo falhar no tempo de execução, o vestígio completo da pilha python está disponível. Mas deve ser visto no registo de saída para o módulo. Atualmente recomendamos que desenvolva e depure scripts Python num ambiente como iPython e, em seguida, importe o código para o módulo.

Saída de quadro de dados único

O ponto de entrada Python só é permitido devolver um único quadro de dados como saída. Atualmente, não é possível devolver objetos pitões arbitrários, como modelos treinados diretamente de volta ao tempo de execução do Estúdio (clássico). Tal como executar o Script R, que tem a mesma limitação, é possível em muitos casos picles objetos em uma matriz byte e, em seguida, devolvê-lo dentro de um quadro de dados.

Incapacidade de personalizar a instalação Python

Atualmente, a única maneira de adicionar módulos Python personalizados é através do mecanismo de ficheiro zip descrito anteriormente. Embora isto seja viável para pequenos módulos, é complicado para grandes módulos (especialmente módulos com DLLs nativos) ou um grande número de módulos.

Passos seguintes

Para obter mais informações, consulte o Centro para Programadores do Python.