Tutorial: Usar o aprendizado de máquina automatizado para compilar o modelo de regressãoTutorial: Use automated machine learning to build your regression model

Este tutorial é parte dois de uma série de tutoriais de duas partes.This tutorial is part two of a two-part tutorial series. No tutorial anterior, você preparou os dados de táxis da Cidade de Nova York para modelagem de regressão.In the previous tutorial, you prepared the NYC taxi data for regression modeling.

Agora você está pronto para começar a criar seu modelo com o Serviço do Azure Machine Learning.Now you're ready to start building your model with Azure Machine Learning service. Nesta parte do tutorial, você usará os dados preparados e gerará automaticamente um modelo de regressão para prever os preços de corridas de táxi.In this part of the tutorial, you use the prepared data and automatically generate a regression model to predict taxi fare prices. Ao usar as funcionalidades do serviço de aprendizado de máquina automatizado, defina restrições e metas de aprendizado de máquina.By using the automated machine learning capabilities of the service, you define your machine learning goals and constraints. Você inicia o processo de aprendizado de máquina automatizado.You launch the automated machine learning process. Em seguida, permita que a seleção de algoritmo e o ajuste de hiperparâmetro sejam feitos para você.Then allow the algorithm selection and hyperparameter tuning to happen for you. A técnica de aprendizado de máquina automatizado itera em muitas combinações de algoritmos e hiperparâmetros até encontrar o melhor modelo com base em seu critério.The automated machine learning technique iterates over many combinations of algorithms and hyperparameters until it finds the best model based on your criterion.

Fluxograma

Neste tutorial, você aprende as seguintes tarefas:In this tutorial, you learn the following tasks:

  • Configurar um ambiente de Python e importar os pacotes do SDK.Set up a Python environment and import the SDK packages.
  • Configurar um workspace do Serviço do Azure Machine Learning.Configure an Azure Machine Learning service workspace.
  • Treinar automaticamente um modelo de regressão.Autotrain a regression model.
  • Executar o modelo localmente com parâmetros personalizados.Run the model locally with custom parameters.
  • Explorar os resultados.Explore the results.

Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.If you don’t have an Azure subscription, create a free account before you begin. Experimente a versão gratuita ou paga do Serviço do Azure Machine Learning hoje mesmo.Try the free or paid version of Azure Machine Learning service today.

Observação

O código deste artigo foi testado com a versão 1.0.39 do SDK do Azure Machine Learning.Code in this article was tested with Azure Machine Learning SDK version 1.0.39.

Pré-requisitosPrerequisites

Vá para Configurar seu ambiente de desenvolvimento para ler as etapas do notebook ou use as instruções abaixo para obter o notebook e executá-lo em Azure Notebooks ou seu próprio servidor de notebook.Skip to Set up your development environment to read through the notebook steps, or use the instructions below to get the notebook and run it on Azure Notebooks or your own notebook server. Para executar o notebook, você precisará de:To run the notebook you will need:

  • Executar o tutorial de preparação de dadosRun the data preparation tutorial.
  • Um servidor de notebook do Python 3.6 com o seguinte instalado:A Python 3.6 notebook server with the following installed:
    • O SDK do Azure Machine Learning para Python com extras automl e notebooksThe Azure Machine Learning SDK for Python with automl and notebooks extras
    • matplotlib
  • O notebook do tutorialThe tutorial notebook
  • Um workspace do machine learningA machine learning workspace
  • O arquivo de configuração para o workspace no mesmo diretório que o notebookThe configuration file for the workspace in the same directory as the notebook

Obtenha todos esses pré-requisitos de qualquer uma das seções a seguir.Get all these prerequisites from either of the sections below.

Usar um servidor de notebook de nuvem em seu workspaceUse a cloud notebook server in your workspace

É fácil começar a usar seu próprio servidor de notebook baseado em nuvem.It's easy to get started with your own cloud-based notebook server. O SDK do Azure Machine Learning para Python já está instalado e configurado depois que você cria este recurso de nuvem.The Azure Machine Learning SDK for Python is already installed and configured for you once you create this cloud resource.

  • Após abrir a página da Web do notebook, execute o notebook tutorials/regression-part2-data-prep.ipynb.After you launch the notebook webpage, run the tutorials/regression-part2-automated-ml.ipynb notebook.

Use seu próprio servidor do Jupyter NotebookUse your own Jupyter notebook server

Use estas etapas para criar um servidor de notebook local do Jupyter no seu computador.Use these steps to create a local Jupyter Notebook server on your computer. Instale o matplotlib e os extras automl e notebooks em seu ambiente.Make sure that you install matplotlib and the automl and notebooks extras in your environment.

  1. Use as instruções descritas em Criar um workspace do Serviço do Azure Machine Learning para fazer o seguinte:Use the instructions at Create an Azure Machine Learning service workspace to do the following:

    • Criar um ambiente MinicondaCreate a Miniconda environment
    • Instalar o SDK do Azure Machine Learning para PythonInstall the Azure Machine Learning SDK for Python
    • Criar um workspaceCreate a workspace
    • Gravar um arquivo de configuração do espaço de trabalho (aml_config/config.json).Write a workspace configuration file (aml_config/config.json).
  2. Clone o repositório do GitHub.Clone the GitHub repository.

    git clone https://github.com/Azure/MachineLearningNotebooks.git
    
  3. Inicie o servidor de notebook do seu diretório clonado.Start the notebook server from your cloned directory.

    jupyter notebook
    

Após concluir as etapas, execute o notebook tutorials/regression-part2-automated-ml.ipynb.After you complete the steps, run the tutorials/regression-part2-automated-ml.ipynb notebook.

Configurar seu ambiente de desenvolvimentoSet up your development environment

Toda a configuração para o seu trabalho de desenvolvimento pode ser realizada em um bloco de anotações do Python.All the setup for your development work can be accomplished in a Python notebook. A configuração inclui as seguintes ações:Setup includes the following actions:

  • Instalar o SDKInstall the SDK
  • Importar pacotes do PythonImport Python packages
  • Configurar seu novo workspaceConfigure your workspace

Instalar e importar pacotesInstall and import packages

Se você estiver seguindo o tutorial em seu próprio ambiente Python, use o seguinte para instalar os pacotes necessários.If you are following the tutorial in your own Python environment, use the following to install necessary packages.

pip install azureml-sdk[automl,notebooks] matplotlib

Importe os pacotes do Python de que você precisa neste tutorial:Import the Python packages you need in this tutorial:

import azureml.core
import pandas as pd
from azureml.core.workspace import Workspace
import logging
import os

Configurar o workspaceConfigure workspace

Crie um objeto de workspace a partir do workspace existente.Create a workspace object from the existing workspace. Um Workspace é uma classe que aceita suas informações de recursos e assinatura do Azure.A Workspace is a class that accepts your Azure subscription and resource information. Ele também cria um recurso de nuvem para monitorar e acompanhar a execução do seu modelo.It also creates a cloud resource to monitor and track your model runs.

Workspace.from_config() lê o arquivo config. JSON e carrega os detalhes em um objeto chamado ws.Workspace.from_config() reads the file config.json and loads the details into an object named ws. ws é usado em todo o restante do código neste tutorial.ws is used throughout the rest of the code in this tutorial.

Depois de ter um objeto de workspace, especifique um nome para o experimento.After you have a workspace object, specify a name for the experiment. Crie e registre um diretório local com o workspace.Create and register a local directory with the workspace. O histórico de todas as execuções é registrado no experimento especificado e no portal do Azure.The history of all runs is recorded under the specified experiment and in the Azure portal.

ws = Workspace.from_config()
# choose a name for the run history container in the workspace
experiment_name = 'automated-ml-regression'
# project folder
project_folder = './automated-ml-regression'

output = {}
output['SDK version'] = azureml.core.VERSION
output['Subscription ID'] = ws.subscription_id
output['Workspace'] = ws.name
output['Resource Group'] = ws.resource_group
output['Location'] = ws.location
output['Project Directory'] = project_folder
pd.set_option('display.max_colwidth', -1)
pd.DataFrame(data=output, index=['']).T

Explorar dadosExplore data

Use o objeto de fluxo de dados criado no tutorial anterior.Use the data flow object created in the previous tutorial. Para resumir, a parte 1 deste tutorial apagou os dados de táxi de NYC para poderem ser usados em um modelo de machine learning.To summarize, part 1 of this tutorial cleaned the NYC Taxi data so it could be used in a machine learning model. Agora, você usa vários recursos do conjunto de dados e permite que um modelo automatizado crie relações entre os recursos e o preço de uma corrida de táxi.Now, you use various features from the data set and allow an automated model to build relationships between the features and the price of a taxi trip. Abra e execute o fluxo de dados e examine os resultados:Open and run the data flow and review the results:

import azureml.dataprep as dprep

file_path = os.path.join(os.getcwd(), "dflows.dprep")

dflow_prepared = dprep.Dataflow.open(file_path)
dflow_prepared.get_profile()
TypeType MinMin maxMax ContagemCount Contagem faltandoMissing count Sem contagem faltandoNot missing count Percentual faltandoPercent missing Contagem de errosError count Contagem vaziaEmpty count Quantil de 0,1%0.1% quantile Quantil de 1%1% quantile Quantil de 5%5% quantile Quantil de 25%25% quantile Quantil de 50%50% quantile Quantil de 75%75% quantile Quantil de 95%95% quantile Quantil de 99%99% quantile Quantil de 99,9%99.9% quantile MédiaMean Desvio padrãoStandard deviation VariaçãoVariance DistorçãoSkewness CurtoseKurtosis
fornecedorvendor FieldType.STRINGFieldType.STRING 11 VTSVTS 6148,06148.0 0,00.0 6148,06148.0 0,00.0 0,00.0 0,00.0
pickup_weekdaypickup_weekday FieldType.STRINGFieldType.STRING FridayFriday Quarta-feiraWednesday 6148,06148.0 0,00.0 6148,06148.0 0,00.0 0,00.0 0,00.0
pickup_hourpickup_hour FieldType.DECIMALFieldType.DECIMAL 00 2323 6148,06148.0 0,00.0 6148,06148.0 0,00.0 0,00.0 0,00.0 00 2,900472.90047 2,693552.69355 9,728899.72889 1616 19,371319.3713 22,697422.6974 2323 2323 14,273114.2731 6,592426.59242 43,4643.46 -0,693723-0.693723 -0,570403-0.570403
pickup_minutepickup_minute FieldType.DECIMALFieldType.DECIMAL 00 5959 6148,06148.0 0,00.0 6148,06148.0 0,00.0 0,00.0 0,00.0 00 4,997014.99701 4,958334.95833 14,152814.1528 29,383229.3832 44,682544.6825 56,444456.4444 58,990958.9909 5959 29,42729.427 17,433317.4333 303,921303.921 0,01209990.0120999 -1,20981-1.20981
pickup_secondpickup_second FieldType.DECIMALFieldType.DECIMAL 00 5959 6148,06148.0 0,00.0 6148,06148.0 0,00.0 0,00.0 0,00.0 00 5,281315.28131 55 14,783214.7832 29,929329.9293 44,72544.725 56,757356.7573 5959 5959 29,744329.7443 17,359517.3595 301,351301.351 -0,0252399-0.0252399 -1,19616-1.19616
dropoff_weekdaydropoff_weekday FieldType.STRINGFieldType.STRING FridayFriday Quarta-feiraWednesday 6148,06148.0 0,00.0 6148,06148.0 0,00.0 0,00.0 0,00.0
dropoff_hourdropoff_hour FieldType.DECIMALFieldType.DECIMAL 00 2323 6148,06148.0 0,00.0 6148,06148.0 0,00.0 0,00.0 0,00.0 00 2,571532.57153 22 9,587959.58795 15,999415.9994 19,618419.6184 22,831722.8317 2323 2323 14,210514.2105 6,710936.71093 45,036545.0365 -0,687292-0.687292 -0,61951-0.61951
dropoff_minutedropoff_minute FieldType.DECIMALFieldType.DECIMAL 00 5959 6148,06148.0 0,00.0 6148,06148.0 0,00.0 0,00.0 0,00.0 00 5,443835.44383 4,846944.84694 14,103614.1036 28,836528.8365 44,310244.3102 56,689256.6892 5959 5959 29,290729.2907 17,410817.4108 303,136303.136 0,02225140.0222514 -1,2181-1.2181
dropoff_seconddropoff_second FieldType.DECIMALFieldType.DECIMAL 00 5959 6148,06148.0 0,00.0 6148,06148.0 0,00.0 0,00.0 0,00.0 00 5,078015.07801 55 14,575114.5751 29,597229.5972 45,464945.4649 56,272956.2729 5959 5959 29,77229.772 17,533717.5337 307,429307.429 -0,0212575-0.0212575 -1,226-1.226
store_forwardstore_forward FieldType.STRINGFieldType.STRING NN SY 6148,06148.0 0,00.0 6148,06148.0 0,00.0 0,00.0 0,00.0
pickup_longitudepickup_longitude FieldType.DECIMALFieldType.DECIMAL -74,0781-74.0781 -73,7459-73.7459 6148,06148.0 0,00.0 6148,06148.0 0,00.0 0,00.0 0,00.0 -74,0578-74.0578 -73,9639-73.9639 -73,9656-73.9656 -73,9508-73.9508 -73,9255-73.9255 -73,8529-73.8529 -73,8302-73.8302 -73,8238-73.8238 -73,7697-73.7697 -73,9123-73.9123 0,05037570.0503757 0,002537710.00253771 0,3521720.352172 -0,923743-0.923743
pickup_latitudepickup_latitude FieldType.DECIMALFieldType.DECIMAL 40,575540.5755 40,879940.8799 6148,06148.0 0,00.0 6148,06148.0 0,00.0 0,00.0 0,00.0 40,63240.632 40,711740.7117 40,711540.7115 40,721340.7213 40,756540.7565 40,805840.8058 40,847840.8478 40,867640.8676 40,877840.8778 40,764940.7649 0,04946740.0494674 0,002447020.00244702 0,2059720.205972 -0,777945-0.777945
dropoff_longitudedropoff_longitude FieldType.DECIMALFieldType.DECIMAL -74,0857-74.0857 -73,7209-73.7209 6148,06148.0 0,00.0 6148,06148.0 0,00.0 0,00.0 0,00.0 -74,0775-74.0775 -73,9875-73.9875 -73,9882-73.9882 -73,9638-73.9638 -73,935-73.935 -73,8755-73.8755 -73,8125-73.8125 -73,7759-73.7759 -73,7327-73.7327 -73,9202-73.9202 0,05846270.0584627 0,003417890.00341789 0,6236220.623622 -0,262603-0.262603
dropoff_latitudedropoff_latitude FieldType.DECIMALFieldType.DECIMAL 40,583540.5835 40,879740.8797 6148,06148.0 0,00.0 6148,06148.0 0,00.0 0,00.0 0,00.0 40,597340.5973 40,692840.6928 40,691140.6911 40,722640.7226 40,756740.7567 40,791840.7918 40,849540.8495 40,86840.868 40,878740.8787 40,758340.7583 0,05173990.0517399 0,002677010.00267701 0,03904040.0390404 -0,203525-0.203525
passageirospassengers FieldType.DECIMALFieldType.DECIMAL 11 66 6148,06148.0 0,00.0 6148,06148.0 0,00.0 0,00.0 0,00.0 11 11 11 11 11 55 55 66 66 2,392492.39249 1,831971.83197 3,35613.3561 0,7631440.763144 -1,23467-1.23467
distânciadistance FieldType.DECIMALFieldType.DECIMAL 0,010.01 32,3432.34 6148,06148.0 0,00.0 6148,06148.0 0,00.0 0,00.0 0,00.0 0,01087440.0108744 0,7438980.743898 0,7381940.738194 1,2431.243 2,401682.40168 4,744784.74478 10,513610.5136 14,901114.9011 21,803521.8035 3,54473.5447 3,29433.2943 10,852410.8524 1,915561.91556 4,998984.99898
costcost FieldType.DECIMALFieldType.DECIMAL 0,10.1 8888 6148,06148.0 0,00.0 6148,06148.0 0,00.0 0,00.0 0,00.0 2,338372.33837 5,004915.00491 55 6,931296.93129 10,52410.524 17,481117.4811 33,234333.2343 50,009350.0093 63,175363.1753 13,684313.6843 9,665719.66571 93,42693.426 1,785181.78518 4,139724.13972

Prepare os dados para o experimento adicionando colunas a dflow_x como recursos para a criação de nosso modelo.You prepare the data for the experiment by adding columns to dflow_x to be features for our model creation. Você define dflow_y como o valor de previsão, custo:You define dflow_y to be our prediction value, cost:

dflow_X = dflow_prepared.keep_columns(['pickup_weekday','pickup_hour', 'distance','passengers', 'vendor'])
dflow_y = dflow_prepared.keep_columns('cost')

Divida os dados em conjuntos de treinamento e testeSplit the data into train and test sets

Agora, divida os dados em conjuntos de treinamento e teste usando a função train_test_split na biblioteca sklearn.Now you split the data into training and test sets by using the train_test_split function in the sklearn library. Essa função separa os dados em x, recursos, conjunto de dados para treinamento do modelo e y, valores a serem previstos, conjunto de dados para teste.This function segregates the data into the x, features, dataset for model training and the y, values to predict, dataset for testing. O parâmetro test_size determina a porcentagem de dados a ser alocada para teste.The test_size parameter determines the percentage of data to allocate to testing. O parâmetro random_state define uma semente para o gerador aleatório, de modo que suas divisões de teste e treinamento sejam sempre determinísticas:The random_state parameter sets a seed to the random generator, so that your train-test splits are always deterministic:

from sklearn.model_selection import train_test_split

x_df = dflow_X.to_pandas_dataframe()
y_df = dflow_y.to_pandas_dataframe()

x_train, x_test, y_train, y_test = train_test_split(x_df, y_df, test_size=0.2, random_state=223)
# flatten y_train to 1d array
y_train.values.flatten()

A finalidade dessa etapa é ter pontos de dados para testar o modelo acabado que não foram usados para treinar o modelo a fim de medir a verdadeira precisão.The purpose of this step is to have data points to test the finished model that haven't been used to train the model, in order to measure true accuracy. Em outras palavras, um modelo bem treinado deve ser capaz de fazer previsões com precisão por meio de dados que ainda não viu.In other words, a well-trained model should be able to accurately make predictions from data it hasn't already seen. Agora, você tem os pacotes e os dados necessários prontos para treinamento automática para seu modelo.You now have the necessary packages and data ready for autotraining your model.

Treinar um modelo automaticamenteAutomatically train a model

Para treinar o modelo automaticamente, execute as seguintes etapas:To automatically train a model, take the following steps:

  1. Defina configurações para a execução do experimento.Define settings for the experiment run. Anexe seus dados de treinamento à configuração e modifique as configurações que controlam o processo de treinamento.Attach your training data to the configuration, and modify settings that control the training process.
  2. Envie o experimento para ajuste do modelo.Submit the experiment for model tuning. Depois de enviar o experimento, o processo itera diferentes algoritmos de aprendizado de máquina e configurações de hiperparâmetro, aderindo às restrições definidas.After submitting the experiment, the process iterates through different machine learning algorithms and hyperparameter settings, adhering to your defined constraints. Ele escolhe o modelo mais adequado otimizando uma métrica de precisão.It chooses the best-fit model by optimizing an accuracy metric.

Defina configurações para geração automática e ajusteDefine settings for autogeneration and tuning

Defina as configurações de modelos e os parâmetros do experimento para geração e ajuste automáticos.Define the experiment parameter and model settings for autogeneration and tuning. Exiba a lista completa das configurações.View the full list of settings. O envio do experimento com essas configurações padrão demorará aproximadamente 10 a 15 minutos; se quiser um tempo de execução menor, reduza iterations ou iteration_timeout_minutes.Submitting the experiment with these default settings will take approximately 10-15 min, but if you want a shorter run time, reduce either iterations or iteration_timeout_minutes.

PropriedadeProperty Valor neste tutorialValue in this tutorial DESCRIÇÃODescription
iteration_timeout_minutesiteration_timeout_minutes 1010 Limite de tempo em minutos para cada iteração.Time limit in minutes for each iteration. Reduza esse valor para diminuir o tempo de execução total.Reduce this value to decrease total runtime.
iteraçõesiterations 3030 Número de iterações.Number of iterations. Em cada iteração, um novo modelo de machine learning é treinado com seus dados.In each iteration, a new machine learning model is trained with your data. Esse é o valor principal que afeta o tempo de execução total.This is the primary value that affects total run time.
primary_metricprimary_metric spearman_correlationspearman_correlation Métrica que você deseja otimizar.Metric that you want to optimize. O modelo mais adequado será escolhido com base nessa métrica.The best-fit model will be chosen based on this metric.
preprocesspreprocess TrueTrue Usando True, o experimento pode pré-processar os dados de entrada (lidar com os dados ignorados, converter texto em numérico etc.)By using True, the experiment can preprocess the input data (handling missing data, converting text to numeric, etc.)
verbosityverbosity logging.INFOlogging.INFO Controla o nível de registro em log.Controls the level of logging.
n_cross_validationsn_cross_validations 55 Número de divisões de validação cruzada para executar quando os dados de validação não são especificados.Number of cross-validation splits to perform when validation data is not specified.
automl_settings = {
    "iteration_timeout_minutes" : 10,
    "iterations" : 30,
    "primary_metric" : 'spearman_correlation',
    "preprocess" : True,
    "verbosity" : logging.INFO,
    "n_cross_validations": 5
}

Use as configurações de treinamento definidas como um parâmetro para um objeto AutoMLConfig.Use your defined training settings as a parameter to an AutoMLConfig object. Além disso, especifique os dados de treinamento e o tipo de modelo, que é regression, neste caso.Additionally, specify your training data and the type of model, which is regression in this case.

from azureml.train.automl import AutoMLConfig

# local compute
automated_ml_config = AutoMLConfig(task = 'regression',
                             debug_log = 'automated_ml_errors.log',
                             path = project_folder,
                             X = x_train.values,
                             y = y_train.values.flatten(),
                             **automl_settings)

Treinar o modelo de regressão automáticaTrain the automatic regression model

Inicie o experimento a ser executado localmente.Start the experiment to run locally. Passe o objeto automated_ml_config definido para o experimento.Pass the defined automated_ml_config object to the experiment. Defina a saída True para exibir o progresso durante o experimento:Set the output to True to view progress during the experiment:

from azureml.core.experiment import Experiment
experiment=Experiment(ws, experiment_name)
local_run = experiment.submit(automated_ml_config, show_output=True)

A saída mostrada atualizações em tempo real enquanto o teste é executado.The output shown updates live as the experiment runs. Para cada iteração, você vê o tipo de modelo, a duração da execução e a precisão do treinamento.For each iteration, you see the model type, the run duration, and the training accuracy. O campo BEST monitora a melhor pontuação de treinamento em execução com base no tipo de métrica.The field BEST tracks the best running training score based on your metric type.

Parent Run ID: AutoML_02778de3-3696-46e9-a71b-521c8fca0651
*******************************************************************************************
ITERATION: The iteration being evaluated.
PIPELINE: A summary description of the pipeline being evaluated.
DURATION: Time taken for the current iteration.
METRIC: The result of computing score on the fitted pipeline.
BEST: The best observed score thus far.
*******************************************************************************************

 ITERATION   PIPELINE                                       DURATION      METRIC      BEST
         0   MaxAbsScaler ExtremeRandomTrees                0:00:08       0.9447    0.9447
         1   StandardScalerWrapper GradientBoosting         0:00:09       0.9536    0.9536
         2   StandardScalerWrapper ExtremeRandomTrees       0:00:09       0.8580    0.9536
         3   StandardScalerWrapper RandomForest             0:00:08       0.9147    0.9536
         4   StandardScalerWrapper ExtremeRandomTrees       0:00:45       0.9398    0.9536
         5   MaxAbsScaler LightGBM                          0:00:08       0.9562    0.9562
         6   StandardScalerWrapper ExtremeRandomTrees       0:00:27       0.8282    0.9562
         7   StandardScalerWrapper LightGBM                 0:00:07       0.9421    0.9562
         8   MaxAbsScaler DecisionTree                      0:00:08       0.9526    0.9562
         9   MaxAbsScaler RandomForest                      0:00:09       0.9355    0.9562
        10   MaxAbsScaler SGD                               0:00:09       0.9602    0.9602
        11   MaxAbsScaler LightGBM                          0:00:09       0.9553    0.9602
        12   MaxAbsScaler DecisionTree                      0:00:07       0.9484    0.9602
        13   MaxAbsScaler LightGBM                          0:00:08       0.9540    0.9602
        14   MaxAbsScaler RandomForest                      0:00:10       0.9365    0.9602
        15   MaxAbsScaler SGD                               0:00:09       0.9602    0.9602
        16   StandardScalerWrapper ExtremeRandomTrees       0:00:49       0.9171    0.9602
        17   SparseNormalizer LightGBM                      0:00:08       0.9191    0.9602
        18   MaxAbsScaler DecisionTree                      0:00:08       0.9402    0.9602
        19   StandardScalerWrapper ElasticNet               0:00:08       0.9603    0.9603
        20   MaxAbsScaler DecisionTree                      0:00:08       0.9513    0.9603
        21   MaxAbsScaler SGD                               0:00:08       0.9603    0.9603
        22   MaxAbsScaler SGD                               0:00:10       0.9602    0.9603
        23   StandardScalerWrapper ElasticNet               0:00:09       0.9603    0.9603
        24   StandardScalerWrapper ElasticNet               0:00:09       0.9603    0.9603
        25   MaxAbsScaler SGD                               0:00:09       0.9603    0.9603
        26   TruncatedSVDWrapper ElasticNet                 0:00:09       0.9602    0.9603
        27   MaxAbsScaler SGD                               0:00:12       0.9413    0.9603
        28   StandardScalerWrapper ElasticNet               0:00:07       0.9603    0.9603
        29    Ensemble                                      0:00:38       0.9622    0.9622

Explorar os resultadosExplore the results

Explore os resultados do treinamento automático com um widget do Jupyter ou examinando o histórico do experimento.Explore the results of automatic training with a Jupyter widget or by examining the experiment history.

Opção 1: Adicionar um widget do Jupyter para ver os resultadosOption 1: Add a Jupyter widget to see results

Se você usar um Jupyter Notebook, use esse widget do Jupyter Notebook para ver um gráfico e uma tabela com todos os resultados:If you use a Jupyter notebook, use this Jupyter notebook widget to see a graph and a table of all results:

from azureml.widgets import RunDetails
RunDetails(local_run).show()

Detalhes de execução do widget do Jupyter Gráfico do widget do JupyterJupyter widget run details Jupyter widget plot

Opção 2: Obter e examinar todas as iterações de execução no PythonOption 2: Get and examine all run iterations in Python

Você também pode recuperar o histórico de cada experimento e explorar as métricas individuais de cada execução de iteração.You can also retrieve the history of each experiment and explore the individual metrics for each iteration run. Examinando RMSE (root_mean_squared_error) para cada execução de modelo individual, você verá que a maioria das iterações prevê o custo da tarifa de táxi dentro de uma margem razoável ($3-4).By examining RMSE (root_mean_squared_error) for each individual model run, you see that most iterations are predicting the taxi fair cost within a reasonable margin ($3-4).

children = list(local_run.get_children())
metricslist = {}
for run in children:
    properties = run.get_properties()
    metrics = {k: v for k, v in run.get_metrics().items() if isinstance(v, float)}
    metricslist[int(properties['iteration'])] = metrics

rundata = pd.DataFrame(metricslist).sort_index(1)
rundata
00 11 22 33 44 55 66 77 88 99 ...... 2020 2121 2222 2323 2424 2525 2626 2727 2828 2929
explained_varianceexplained_variance 0,8110370.811037 0,8805530.880553 0,3985820.398582 0,7760400.776040 0,6638690.663869 0,8759110.875911 0,1156320.115632 0,5869050.586905 0,8519110.851911 0,7939640.793964 ...... 0,8500230.850023 0,8836030.883603 0,8837040.883704 0,8807970.880797 0,8815640.881564 0,8837080.883708 0,8818260.881826 0,5853770.585377 0,8831230.883123 0,8868170.886817
mean_absolute_errormean_absolute_error 2,1894442.189444 1,5004121.500412 5,4805315.480531 2,6263162.626316 2,9730262.973026 1,5501991.550199 6,3838686.383868 4,4142414.414241 1,7433281.743328 2,2946012.294601 ...... 1,7974021.797402 1,4158151.415815 1,4181671.418167 1,5786171.578617 1,5594271.559427 1,4130421.413042 1,5516981.551698 4,0691964.069196 1,5057951.505795 1,4309571.430957
median_absolute_errormedian_absolute_error 1,4384171.438417 0,8508990.850899 4,5796624.579662 1,7652101.765210 1,5946001.594600 0,8698830.869883 4,2664504.266450 3,6273553.627355 0,9549920.954992 1,3610141.361014 ...... 0,9736340.973634 0,7748140.774814 0,7972690.797269 1,1472341.147234 1,1164241.116424 0,7839580.783958 1,0984641.098464 2,7090272.709027 1,0037281.003728 0,8517240.851724
normalized_mean_absolute_errornormalized_mean_absolute_error 0,0249080.024908 0,0170700.017070 0,0623500.062350 0,0298780.029878 0,0338230.033823 0,0176360.017636 0,0726260.072626 0,0502190.050219 0,0198330.019833 0,0261050.026105 ...... 0,0204480.020448 0,0161070.016107 0,0161340.016134 0,0179590.017959 0,0177410.017741 0,0160760.016076 0,0176530.017653 0,0462930.046293 0,0171310.017131 0,0162790.016279
normalized_median_absolute_errornormalized_median_absolute_error 0,0163640.016364 0,0096800.009680 0,0521010.052101 0,0200820.020082 0,0181410.018141 0,0098960.009896 0,0485380.048538 0,0412670.041267 0,0108650.010865 0,0154840.015484 ...... 0,0110770.011077 0,0088150.008815 0,0090700.009070 0,0130520.013052 0,0127010.012701 0,0089190.008919 0,0124970.012497 0,0308190.030819 0,0114190.011419 0,0096900.009690
normalized_root_mean_squared_errornormalized_root_mean_squared_error 0,0479680.047968 0,0378820.037882 0,0855720.085572 0,0522820.052282 0,0658090.065809 0,0386640.038664 0,1094010.109401 0,0711040.071104 0,0422940.042294 0,0499670.049967 ...... 0,0425650.042565 0,0376850.037685 0,0375570.037557 0,0376430.037643 0,0375130.037513 0,0375600.037560 0,0374650.037465 0,0720770.072077 0,0372490.037249 0,0367160.036716
normalized_root_mean_squared_log_errornormalized_root_mean_squared_log_error 0,0553530.055353 0,0450000.045000 0,1102190.110219 0,0656330.065633 0,0635890.063589 0,0444120.044412 0,1234330.123433 0,0923120.092312 0,0461300.046130 0,0552430.055243 ...... 0,0465400.046540 0,0418040.041804 0,0417710.041771 0,0451750.045175 0,0446280.044628 0,0416170.041617 0,0444050.044405 0,0796510.079651 0,0427990.042799 0,0415300.041530
r2_scorer2_score 0,8109000.810900 0,8803280.880328 0,3980760.398076 0,7759570.775957 0,6428120.642812 0,8757190.875719 0,0216030.021603 0,5865140.586514 0,8517670.851767 0,7936710.793671 ...... 0,8498090.849809 0,8801420.880142 0,8809520.880952 0,8805860.880586 0,8813470.881347 0,8808870.880887 0,8816130.881613 0,5481210.548121 0,8828830.882883 0,8863210.886321
root_mean_squared_errorroot_mean_squared_error 4,2163624.216362 3,3298103.329810 7,5217657.521765 4,5956044.595604 5,7846015.784601 3,3985403.398540 9,6163549.616354 6,2500116.250011 3,7176613.717661 4,3920724.392072 ...... 3,7414473.741447 3,3125333.312533 3,3012423.301242 3,3087953.308795 3,2973893.297389 3,3014853.301485 3,2931823.293182 6,3355816.335581 3,2742093.274209 3,2273653.227365
root_mean_squared_log_errorroot_mean_squared_log_error 0,2431840.243184 0,1977020.197702 0,4842270.484227 0,2883490.288349 0,2793670.279367 0,1951160.195116 0,5422810.542281 0,4055590.405559 0,2026660.202666 0,2427020.242702 ...... 0,2044640.204464 0,1836580.183658 0,1835140.183514 0,1984680.198468 0,1960670.196067 0,1828360.182836 0,1950870.195087 0,3499350.349935 0,1880310.188031 0,1824550.182455
spearman_correlationspearman_correlation 0,9447430.944743 0,9536180.953618 0,8579650.857965 0,9147030.914703 0,9398460.939846 0,9561590.956159 0,8281870.828187 0,9420690.942069 0,9525810.952581 0,9354770.935477 ...... 0,9512870.951287 0,9603350.960335 0,9601950.960195 0,9602790.960279 0,9602880.960288 0,9603230.960323 0,9601610.960161 0,9412540.941254 0,9602930.960293 0,9621580.962158
spearman_correlation_maxspearman_correlation_max 0,9447430.944743 0,9536180.953618 0,9536180.953618 0,9536180.953618 0,9536180.953618 0,9561590.956159 0,9561590.956159 0,9561590.956159 0,9561590.956159 0,9561590.956159 ...... 0,9603030.960303 0,9603350.960335 0,9603350.960335 0,9603350.960335 0,9603350.960335 0,9603350.960335 0,9603350.960335 0,9603350.960335 0,9603350.960335 0,9621580.962158

12 linhas × 30 colunas12 rows × 30 columns

Recuperar o melhor modeloRetrieve the best model

Selecione o melhor pipeline de nossas iterações.Select the best pipeline from our iterations. O método get_output no automl_classifier retorna a melhor execução e o modelo ajustado para a última invocação de ajuste.The get_output method on automl_classifier returns the best run and the fitted model for the last fit invocation. Ao usar as sobrecargas em get_output, você pode recuperar o modelo de melhor execução e ajuste para qualquer métrica registrada em log ou iteração em particular:By using the overloads on get_output, you can retrieve the best run and fitted model for any logged metric or a particular iteration:

best_run, fitted_model = local_run.get_output()
print(best_run)
print(fitted_model)

Testar a precisão do melhor modeloTest the best model accuracy

Use o melhor modelo para executar previsões no conjunto de dados de teste e prever as tarifas de táxi.Use the best model to run predictions on the test dataset to predict taxi fares. A função predict usa o melhor modelo e prevê os valores de y, custo da corrida, do conjunto de dados x_test.The function predict uses the best model and predicts the values of y, trip cost, from the x_test dataset. Imprima os 10 primeiros valores de custo previstos de y_predict:Print the first 10 predicted cost values from y_predict:

y_predict = fitted_model.predict(x_test.values)
print(y_predict[:10])

Crie um gráfico de dispersão para visualizar os valores de custo previstos em comparação com os reais.Create a scatter plot to visualize the predicted cost values compared to the actual cost values. O código a seguir usa o recurso distance como o eixo x e a corrida cost como o eixo y.The following code uses the distance feature as the x-axis and trip cost as the y-axis. Para comparar a variação de custo prevista em cada valor de distância de corrida, os 100 primeiros valores de custo previstos e reais são criados como uma série separada.To compare the variance of predicted cost at each trip distance value, the first 100 predicted and actual cost values are created as separate series. O exame do gráfico mostra que a relação de distância/custo é quase linear, sendo que os valores de custo previstos são, na maioria dos casos, muito próximos dos valores de custo reais para a mesma distância de corrida.Examining the plot shows that the distance/cost relationship is nearly linear, and the predicted cost values are in most cases very close to the actual cost values for the same trip distance.

%matplotlib inline

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(14, 10))
ax1 = fig.add_subplot(111)

distance_vals = [x[4] for x in x_test.values]
y_actual = y_test.values.flatten().tolist()

ax1.scatter(distance_vals[:100], y_predict[:100], s=18, c='b', marker="s", label='Predicted')
ax1.scatter(distance_vals[:100], y_actual[:100], s=18, c='r', marker="o", label='Actual')

ax1.set_xlabel('distance (mi)')
ax1.set_title('Predicted and Actual Cost/Distance')
ax1.set_ylabel('Cost ($)')

plt.legend(loc='upper left', prop={'size': 12})
plt.rcParams.update({'font.size': 14})
plt.show()

Gráfico de dispersão de previsão

Calcule o root mean squared error dos resultados.Calculate the root mean squared error of the results. Use o dataframe y_test.Use the y_test dataframe. Converta-o em uma lista a ser comparada com os valores previstos.Convert it to a list to compare to the predicted values. A função mean_squared_error usa duas matrizes de valores e calcula o erro médio ao quadrado entre elas.The function mean_squared_error takes two arrays of values and calculates the average squared error between them. Usar a raiz quadrada do resultado gera um erro nas mesmas unidades que a variável y, custo.Taking the square root of the result gives an error in the same units as the y variable, cost. Indica aproximadamente o quão distantes as previsões das tarifas de táxi estão das tarifas reais:It indicates roughly how far the taxi fare predictions are from the actual fares:

from sklearn.metrics import mean_squared_error
from math import sqrt

rmse = sqrt(mean_squared_error(y_actual, y_predict))
rmse
3.2204936862688798

Execute o código a seguir para calcular o MAPE (desvio percentual absoluto médio) usando os conjuntos de dados y_actual e y_predict completos.Run the following code to calculate mean absolute percent error (MAPE) by using the full y_actual and y_predict datasets. Essa métrica calcula uma diferença absoluta entre cada valor previsto e real e somas todas as diferenças.This metric calculates an absolute difference between each predicted and actual value and sums all the differences. Em seguida, expressa a soma como uma porcentagem do total de valores reais:Then it expresses that sum as a percent of the total of the actual values:

sum_actuals = sum_errors = 0

for actual_val, predict_val in zip(y_actual, y_predict):
    abs_error = actual_val - predict_val
    if abs_error < 0:
        abs_error = abs_error * -1

    sum_errors = sum_errors + abs_error
    sum_actuals = sum_actuals + actual_val

mean_abs_percent_error = sum_errors / sum_actuals
print("Model MAPE:")
print(mean_abs_percent_error)
print()
print("Model Accuracy:")
print(1 - mean_abs_percent_error)
Model MAPE:
0.10545153869569586

Model Accuracy:
0.8945484613043041

Nas métricas de precisão da previsão final, você vê que o modelo é razoavelmente bom em prever as tarifas de táxi por meio dos recursos do conjunto de dados, normalmente dentro de +- $ 3,00.From the final prediction accuracy metrics, you see that the model is fairly good at predicting taxi fares from the data set's features, typically within +- $3.00. O processo de desenvolvimento do modelo de machine learning tradicional é altamente intensivo de recursos e requer conhecimento de domínio significativo e investimento de tempo para executar e comparar os resultados de dezenas de modelos.The traditional machine learning model development process is highly resource-intensive, and requires significant domain knowledge and time investment to run and compare the results of dozens of models. A utilização do aprendizado de máquina automatizado é uma ótima maneira de testar rapidamente muitos modelos diferentes para seu cenário.Using automated machine learning is a great way to rapidly test many different models for your scenario.

Limpar recursosClean up resources

Importante

Os recursos que você criou podem ser usados como pré-requisitos em outros tutoriais e artigos de instruções do Serviço do Azure Machine Learning.The resources you created can be used as prerequisites to other Azure Machine Learning service tutorials and how-to articles.

Se você não pretende usar os recursos criados, exclua-os para não gerar encargos:If you don't plan to use the resources you created, delete them, so you don't incur any charges:

  1. No portal do Azure, selecione Grupos de recursos no canto esquerdo.In the Azure portal, select Resource groups on the far left.

    Exclusão no portal do Azure

  2. Selecione o grupo de recursos criado na lista.From the list, select the resource group you created.

  3. Selecione Excluir grupo de recursos.Select Delete resource group.

  4. Insira o nome do grupo de recursos.Enter the resource group name. Em seguida, selecione Excluir.Then select Delete.

Próximas etapasNext steps

Neste tutorial de aprendizado de máquina automatizado, você executou as seguintes tarefas:In this automated machine learning tutorial, you did the following tasks:

  • Configurou um workspace e preparou os dados para um experimento.Configured a workspace and prepared data for an experiment.
  • Treinou usando um modelo de regressão automatizado localmente com parâmetros personalizados.Trained by using an automated regression model locally with custom parameters.
  • Explorou e examinou os resultados do treinamento.Explored and reviewed training results.

Implantar seu modelo com o Azure Machine Learning.Deploy your model with Azure Machine Learning.