Come usare un servizio Web di Azure Machine LearningHow to consume an Azure Machine Learning Web service

Dopo aver distribuito un modello predittivo di Azure Machine Learning come servizio Web, è possibile usare un'API REST per inviare dati e ottenere stime.Once you deploy an Azure Machine Learning predictive model as a Web service, you can use a REST API to send it data and get predictions. È possibile inviare i dati in tempo reale o in modalità batch.You can send the data in real-time or in batch mode.

Per informazioni su come creare e distribuire un servizio Web di Machine Learning tramite Machine Learning Studio:You can find more information about how to create and deploy a Machine Learning Web service using Machine Learning Studio here:

Nota

È possibile provare gratuitamente Azure Machine Learning.You can try Azure Machine Learning for free. Non è necessaria una carta di credito o una sottoscrizione di Azure.No credit card or Azure subscription is required. Per iniziare.Get started now.

PanoramicaOverview

Con il servizio Web di Azure Machine Learning, un'applicazione esterna comunica con un modello di valutazione del flusso di lavoro di Machine Learning in tempo reale.With the Azure Machine Learning Web service, an external application communicates with a Machine Learning workflow scoring model in real time. Una chiamata al servizio Web di Machine Learning restituisce i risultati della stima a un'applicazione esterna.A Machine Learning Web service call returns prediction results to an external application. Per effettuare una chiamata al servizio Web di Machine Learning, passare una chiave API creata quando si distribuisce una stima.To make a Machine Learning Web service call, you pass an API key that is created when you deploy a prediction. Il servizio Web di Machine Learning è basato su REST, una scelta di architettura diffusa per progetti di programmazione Web.The Machine Learning Web service is based on REST, a popular architecture choice for web programming projects.

Azure Machine Learning dispone di due tipi di servizi:Azure Machine Learning has two types of services:

  • Servizio di richiesta-risposta (RRS). Un servizio a latenza bassa e altamente scalabile che offre un'interfaccia ai modelli senza stato creati e distribuiti da Machine Learning Studio.Request-Response Service (RRS) – A low latency, highly scalable service that provides an interface to the stateless models created and deployed from the Machine Learning Studio.
  • Servizio esecuzione batch (BES). Un servizio asincrono che valuta un batch di record di dati.Batch Execution Service (BES) – An asynchronous service that scores a batch for data records.

Per altre informazioni sui servizi Web di Machine Learning, vedere Distribuire un servizio Web di Azure Machine Learning.For more information about Machine Learning Web services, see Deploy a Machine Learning Web service.

Ottenere una chiave di autorizzazione Azure Machine LearningGet an Azure Machine Learning authorization key

Quando si distribuisce l'esperimento, vengono generate le chiavi API per il servizio Web,When you deploy your experiment, API keys are generated for the Web service. recuperabili da diverse posizioni.You can retrieve the keys from several locations.

Dal portale dei servizi Web di Microsoft Azure Machine LearningFrom the Microsoft Azure Machine Learning Web Services portal

Accedere al portale dei servizi Web di Microsoft Azure Machine Learning.Sign in to the Microsoft Azure Machine Learning Web Services portal.

Per recuperare la chiave API per un nuovo servizio Web Machine Learning:To retrieve the API key for a New Machine Learning Web service:

  1. Nel portale Servizi Web di Machine Learning di Azure, fare clic sul menu Web Services (Servizi Web) nel menu in alto.In the Azure Machine Learning Web Services portal, click Web Services the top menu.
  2. Selezionare il servizio Web per il quale si desidera recuperare la chiave.Click the Web service for which you want to retrieve the key.
  3. Nel menu in alto fare clic su Consume(Uso).On the top menu, click Consume.
  4. Copiare e salvare la Chiave primaria.Copy and save the Primary Key.

Per recuperare la chiave API per un nuovo servizio Web Machine Learning di tipo classico:To retrieve the API key for a Classic Machine Learning Web service:

  1. Nel portale Servizi Web di Machine Learning di Azure, fare clic sul menu Classic Web Services (Servizi Web classici) nel menu in alto.In the Azure Machine Learning Web Services portal, click Classic Web Services the top menu.
  2. Fare clic sul servizio Web in uso.Click the Web service with which you are working.
  3. Selezionare l'endpoint per il quale si desidera recuperare la chiave.Click the endpoint for which you want to retrieve the key.
  4. Nel menu in alto fare clic su Consume(Uso).On the top menu, click Consume.
  5. Copiare e salvare la Chiave primaria.Copy and save the Primary Key.

Servizio Web classicoClassic Web service

La chiave di un servizio Web di tipo classico può essere recuperata anche da Machine Learning Studio.You can also retrieve a key for a Classic Web service from Machine Learning Studio.

Machine Learning StudioMachine Learning Studio

  1. In Machine Learning Studio fare clic su WEB SERVICES (Servizi Web) a sinistra.In Machine Learning Studio, click WEB SERVICES on the left.
  2. Fare clic su un servizio Web.Click a Web service. La chiave API si trova nella scheda DASHBOARD.The API key is on the DASHBOARD tab.

Connettersi a un servizio Web di Machine LearningConnect to a Machine Learning Web service

È possibile connettersi a un servizio Web di Machine Learning usando qualsiasi linguaggio di programmazione che supporta la risposta e la richiesta HTTP.You can connect to a Machine Learning Web service using any programming language that supports HTTP request and response. È possibile visualizzare gli esempi in C#, Python e R da una pagina della guida del servizio Web di Machine Learning.You can view examples in C#, Python, and R from a Machine Learning Web service help page.

Guida alle API di Machine Learning Una Guida per l'API di Machine Learning viene creata quando si distribuisce un servizio Web.Machine Learning API help Machine Learning API help is created when you deploy a Web service. Vedere Procedura dettagliata di Azure Machine Learning - Distribuire il servizio Web.See Azure Machine Learning Walkthrough- Deploy Web Service. La Guida per l'API di Machine Learning contiene i dettagli su un servizio Web di stima.The Machine Learning API help contains details about a prediction Web service.

  1. Fare clic sul servizio Web in uso.Click the Web service with which you are working.
  2. Selezionare l'endpoint per il quale si desidera visualizzare la pagina della guida alle API.Click the endpoint for which you want to view the API Help Page.
  3. Nel menu in alto fare clic su Consume(Uso).On the top menu, click Consume.
  4. Fare clic sulla pagina della guida alle API negli endpoint Request-Response o Esecuzione batch.Click API help page under either the Request-Response or Batch Execution endpoints.

Per visualizzare la guida alle API di Machine Learning per un nuovo servizio WebTo view Machine Learning API help for a New Web service

Nel portale dei servizi Web di Azure Machine Learning:In the Azure Machine Learning Web Services Portal:

  1. Fare clic su WEB SERVICES (Servizi Web) nel menu in alto.Click WEB SERVICES on the top menu.
  2. Selezionare il servizio Web per il quale si desidera recuperare la chiave.Click the Web service for which you want to retrieve the key.

Fare clic su Use Web Service (Usa servizio Web) per ottenere l'URI per i servizi Richiesta/Risposta ed Esecuzione in batch, nonché il codice di esempio in C#, R e Python.Click Use Web Service to get the URIs for the Request-Reposonse and Batch Execution Services and Sample code in C#, R, and Python.

Fare clic su Swagger API (API Swagger) per ottenere la documentazione basata su Swagger per le API chiamate dagli URI specificati.Click Swagger API to get Swagger based documentation for the APIs called from the supplied URIs.

Esempio C#C# Sample

Per connettersi a un servizio Web di Machine Learning, usare un HttpClient che passa ScoreData.To connect to a Machine Learning Web service, use an HttpClient passing ScoreData. ScoreData contiene FeatureVector, un vettore n-dimensionale di funzioni numeriche che rappresentano ScoreData.ScoreData contains a FeatureVector, an n-dimensional vector of numerical features that represents the ScoreData. Effettuare l'autenticazione al servizio di Machine Learning con una chiave API.You authenticate to the Machine Learning service with an API key.

Per connettersi a un servizio Web di Machine Learning, è necessario installare il pacchetto NuGet Microsoft.AspNet.WebApi.Client .To connect to a Machine Learning Web service, the Microsoft.AspNet.WebApi.Client NuGet package must be installed.

Installare il Nuget Microsoft.AspNet.WebApi.Client in Visual StudioInstall Microsoft.AspNet.WebApi.Client NuGet in Visual Studio

  1. Pubblicare il set di dati di download dal servizio Web UCI: Adult 2 class dataset.Publish the Download dataset from UCI: Adult 2 class dataset Web Service.
  2. Fare clic su Strumenti > Gestione pacchetti NuGet > Console di Gestione pacchetti.Click Tools > NuGet Package Manager > Package Manager Console.
  3. Scegliere Install-Package Microsoft.AspNet.WebApi.Client.Choose Install-Package Microsoft.AspNet.WebApi.Client.

Per eseguire l'esempio di codiceTo run the code sample

  1. Pubblicare l'esperimento "Sample 1: Download dataset from UCI: Adult 2 class dataset", che fa parte della raccolta di esempi di Machine Learning.Publish "Sample 1: Download dataset from UCI: Adult 2 class dataset" experiment, part of the Machine Learning sample collection.
  2. Assegnare ad apiKey la chiave di un servizio Web.Assign apiKey with the key from a Web service. Vedere la sezione precedente Ottenere una chiave di autorizzazione di Azure Machine Learning .See Get an Azure Machine Learning authorization key above.
  3. Assegnare l'URI del servizio con l'URI della richiesta.Assign serviceUri with the Request URI.

Di seguito è riportato l'aspetto di una richiesta completa.Here is what a complete request will look like.

using System;
using System.Collections.Generic;
using System.IO;
using System.Net.Http;
using System.Net.Http.Formatting;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;

namespace CallRequestResponseService
{
    class Program
    {
        static void Main(string[] args)
        {
            InvokeRequestResponseService().Wait();
        }

        static async Task InvokeRequestResponseService()
        {
            using (var client = new HttpClient())
            {
                var scoreRequest = new
                {
                    Inputs = new Dictionary<string, List<Dictionary<string, string>>> () {
                        {
                            "input1",
                            // Replace columns labels with those used in your dataset
                            new List<Dictionary<string, string>>(){new Dictionary<string, string>(){
                                    {
                                        "column1", "value1"
                                    },
                                    {
                                        "column2", "value2"
                                    },
                                    {
                                        "column3", "value3"
                                    }
                                }
                            }
                        },
                    },
                    GlobalParameters = new Dictionary<string, string>() {}
                };

                // Replace these values with your API key and URI found on https://services.azureml.net/
                const string apiKey = "<your-api-key>"; 
                const string apiUri = "<your-api-uri>";

                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue( "Bearer", apiKey);
                client.BaseAddress = new Uri(apiUri);

                // WARNING: The 'await' statement below can result in a deadlock
                // if you are calling this code from the UI thread of an ASP.Net application.
                // One way to address this would be to call ConfigureAwait(false)
                // so that the execution does not attempt to resume on the original context.
                // For instance, replace code such as:
                //      result = await DoSomeTask()
                // with the following:
                //      result = await DoSomeTask().ConfigureAwait(false)

                HttpResponseMessage response = await client.PostAsJsonAsync("", scoreRequest);

                if (response.IsSuccessStatusCode)
                {
                    string result = await response.Content.ReadAsStringAsync();
                    Console.WriteLine("Result: {0}", result);
                }
                else
                {
                    Console.WriteLine(string.Format("The request failed with status code: {0}", response.StatusCode));

                    // Print the headers - they include the requert ID and the timestamp,
                    // which are useful for debugging the failure
                    Console.WriteLine(response.Headers.ToString());

                    string responseContent = await response.Content.ReadAsStringAsync();
                    Console.WriteLine(responseContent);
                }
            }
        }
    }
}

Esempio PythonPython Sample

Per connettersi a un servizio Web di Machine Learning, usare la libreria urllib2 libreria per Python 2.X e la libreria urllib.request per Python 3.X.To connect to a Machine Learning Web service, use the urllib2 library for Python 2.X and urllib.request library for Python 3.X. Si passerà a ScoreData, che contiene FeatureVector, un vettore n-dimensionale di funzioni numeriche che rappresentano ScoreData.You will pass ScoreData, which contains a FeatureVector, an n-dimensional vector of numerical features that represents the ScoreData. Effettuare l'autenticazione al servizio di Machine Learning con una chiave API.You authenticate to the Machine Learning service with an API key.

Per eseguire l'esempio di codiceTo run the code sample

  1. Distribuire l'esperimento "Sample 1: Download dataset from UCI: Adult 2 class dataset", che fa parte della raccolta di esempi di Machine Learning.Deploy "Sample 1: Download dataset from UCI: Adult 2 class dataset" experiment, part of the Machine Learning sample collection.
  2. Assegnare ad apiKey la chiave di un servizio Web.Assign apiKey with the key from a Web service. Vedere la sezione Ottenere una chiave di autorizzazione Azure Machine Learning all'inizio di questo articolo.See the Get an Azure Machine Learning authorization key section near the beginning of this article.
  3. Assegnare l'URI del servizio con l'URI della richiesta.Assign serviceUri with the Request URI.

Di seguito è riportato l'aspetto di una richiesta completa.Here is what a complete request will look like.

import urllib2 # urllib.request for Python 3.X
import json

data = {
    "Inputs": {
        "input1":
        [
            {
                'column1': "value1",   
                'column2': "value2",   
                'column3': "value3"
            }
        ],
    },
    "GlobalParameters":  {}
}

body = str.encode(json.dumps(data))

# Replace this with the URI and API Key for your web service
url = '<your-api-uri>'
api_key = '<your-api-key>'
headers = {'Content-Type':'application/json', 'Authorization':('Bearer '+ api_key)}

# "urllib.request.Request(uri, body, headers)" for Python 3.X
req = urllib2.Request(url, body, headers)

try:
    # "urllib.request.urlopen(req)" for Python 3.X
    response = urllib2.urlopen(req)

    result = response.read()
    print(result)
# "urllib.error.HTTPError as error" for Python 3.X
except urllib2.HTTPError, error: 
    print("The request failed with status code: " + str(error.code))

    # Print the headers - they include the requert ID and the timestamp, which are useful for debugging the failure
    print(error.info())
    print(json.loads(error.read())) 

Esempio RR Sample

Per connettersi a un servizio Web di Machine Learning, usare le librerie RCurl e rjson per eseguire la richiesta ed elaborare la risposta JSON restituita.To connect to a Machine Learning Web Service, use the RCurl and rjson libraries to make the request and process the returned JSON response. Si passerà a ScoreData, che contiene FeatureVector, un vettore n-dimensionale di funzioni numeriche che rappresentano ScoreData.You will pass ScoreData, which contains a FeatureVector, an n-dimensional vector of numerical features that represents the ScoreData. Effettuare l'autenticazione al servizio di Machine Learning con una chiave API.You authenticate to the Machine Learning service with an API key.

Di seguito è riportato l'aspetto di una richiesta completa.Here is what a complete request will look like.

library("RCurl")
library("rjson")

# Accept SSL certificates issued by public Certificate Authorities
options(RCurlOptions = list(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl")))

h = basicTextGatherer()
hdr = basicHeaderGatherer()

req = list(
    Inputs = list(
            "input1" = list(
                list(
                        'column1' = "value1",
                        'column2' = "value2",
                        'column3' = "value3"
                    )
            )
        ),
        GlobalParameters = setNames(fromJSON('{}'), character(0))
)

body = enc2utf8(toJSON(req))
api_key = "<your-api-key>" # Replace this with the API key for the web service
authz_hdr = paste('Bearer', api_key, sep=' ')

h$reset()
curlPerform(url = "<your-api-uri>",
httpheader=c('Content-Type' = "application/json", 'Authorization' = authz_hdr),
postfields=body,
writefunction = h$update,
headerfunction = hdr$update,
verbose = TRUE
)

headers = hdr$value()
httpStatus = headers["status"]
if (httpStatus >= 400)
{
print(paste("The request failed with status code:", httpStatus, sep=" "))

# Print the headers - they include the requert ID and the timestamp, which are useful for debugging the failure
print(headers)
}

print("Result:")
result = h$value()
print(fromJSON(result))

Esempio di JavaScriptJavaScript Sample

Per connettersi a un servizio Web di Machine Learning, usare il pacchetto npm request nel progetto.To connect to a Machine Learning Web Service, use the request npm package in your project. Si userà anche l'oggetto JSON per formattare l'input e analizzare il risultato.You will also use the JSON object to format your input and parse the result. Installare usando npm install request --save, o aggiungere "request": "*" al file package.json in dependencies ed eseguire npm install.Install using npm install request --save, or add "request": "*" to your package.json under dependencies and run npm install.

Di seguito è riportato l'aspetto di una richiesta completa.Here is what a complete request will look like.

let req = require("request");

const uri = "<your-api-uri>";
const apiKey = "<your-api-key>";

let data = {
    "Inputs": {
        "input1":
        [
            {
                'column1': "value1",
                'column2': "value2",
                'column3': "value3"
            }
        ],
    },
    "GlobalParameters": {}
}

const options = {
    uri: uri,
    method: "POST",
    headers: {
        "Content-Type": "application/json",
        "Authorization": "Bearer " + apiKey,
    },
    body: JSON.stringify(data)
}

req(options, (err, res, body) => {
    if (!err && res.statusCode == 200) {
        console.log(body);
    } else {
        console.log("The request failed with status code: " + res.statusCode);
    }
});