Een Machine Learning Studio-webservice (klassiek) gebruiken
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.
Zodra u een Voorspellend Model van Machine Learning Studio (klassiek) als een webservice hebt geïmplementeerd, kunt u een REST API gebruiken om deze gegevens te verzenden en voorspellingen op te halen. U kunt de gegevens in realtime of in batchmodus verzenden.
U vindt hier meer informatie over het maken en implementeren van een Machine Learning-webservice met behulp van Machine Learning Studio (klassiek):
- Zie Uw eerste experiment maken voor een zelfstudie over het maken van een experiment in Machine Learning Studio (klassiek).
- Zie Een Machine Learning-webservice implementeren voor meer informatie over het implementeren van een webservice.
- Ga naar het Documentatiecentrum voor Machine Learning voor meer informatie over Machine Learning in het algemeen.
Overzicht
Met de Machine Learning-webservice communiceert een externe toepassing in realtime met een scoremodel voor machine learning-werkstromen. Een Machine Learning-webserviceaanroep retourneert voorspellingsresultaten naar een externe toepassing. Als u een Machine Learning-webserviceaanroep wilt maken, geeft u een API-sleutel door die wordt gemaakt wanneer u een voorspelling implementeert. De Machine Learning-webservice is gebaseerd op REST, een populaire architectuurkeuze voor webprogrammeerprojecten.
Machine Learning Studio (klassiek) heeft twee typen services:
- Request-Response Service (RRS): een lage latentie, zeer schaalbare service die een interface biedt voor de staatloze modellen die zijn gemaakt en geïmplementeerd vanuit Machine Learning Studio (klassiek).
- Batch Execution Service (BES): een asynchrone service waarmee een batch voor gegevensrecords wordt gescored.
Zie Een Machine Learning-webservice implementeren voor meer informatie over Machine Learning-webservices.
Een autorisatiesleutel ophalen
Wanneer u uw experiment implementeert, worden API-sleutels gegenereerd voor de webservice. U kunt de sleutels ophalen van verschillende locaties.
Vanuit de Machine Learning Web Services-portal
Meld u aan bij de Machine Learning Web Services-portal .
De API-sleutel voor een nieuwe Machine Learning-webservice ophalen:
- Klik in de Portal van Machine Learning Web Services op Web Services in het bovenste menu.
- Klik op de webservice waarvoor u de sleutel wilt ophalen.
- Klik in het bovenste menu op Verbruiken.
- Kopieer en sla de primaire sleutel op.
De API-sleutel voor een klassieke Machine Learning-webservice ophalen:
- Klik in de Azure Machine Learning Web Services-portal op Klassieke webservices in het bovenste menu.
- Klik op de webservice waarmee u werkt.
- Klik op het eindpunt waarvoor u de sleutel wilt ophalen.
- Klik in het bovenste menu op Verbruiken.
- Kopieer en sla de primaire sleutel op.
Klassieke webservice
U kunt ook een sleutel voor een klassieke webservice ophalen uit Machine Learning Studio (klassiek).
Machine Learning Studio (klassiek)
- Klik in Machine Learning Studio (klassiek) aan de linkerkant op WEB SERVICES .
- Klik op een webservice. De API-sleutel bevindt zich op het tabblad DASHBOARD .
Verbinding maken met een Machine Learning-webservice
U kunt verbinding maken met een Machine Learning-webservice met behulp van elke programmeertaal die ONDERSTEUNING biedt voor HTTP-aanvragen en -antwoorden. U kunt voorbeelden in C#, Python en R bekijken op een Help-pagina van een Machine Learning-webservice.
Machine Learning API help Machine Learning API help wordt gemaakt wanneer u een webservice implementeert. Zie zelfstudie 3: Kredietrisicomodel implementeren. De Help van de Machine Learning-API bevat details over een voorspellingswebservice.
- Klik op de webservice waarmee u werkt.
- Klik op het eindpunt waarvoor u de API Help-pagina wilt weergeven.
- Klik in het bovenste menu op Verbruiken.
- Klik op de HELP-pagina api's onder de eindpunten aanvraag-antwoord of batchuitvoering.
Help bij machine learning-API voor een nieuwe webservice weergeven
In de Machine Learning-webservicesportal:
- Klik op WEB SERVICES in het bovenste menu.
- Klik op de webservice waarvoor u de sleutel wilt ophalen.
Klik op Webservice gebruiken om de URI's op te halen voor de aanvraag-antwoord- en batchuitvoeringsservices en voorbeeldcode in C#, R en Python.
Klik op Swagger-API om documentatie op basis van Swagger op te halen voor de API's die zijn aangeroepen vanuit de opgegeven URI's.
C#-voorbeeld
Als u verbinding wilt maken met een Machine Learning-webservice, gebruikt u een HttpClient die ScoreData doorgeeft. ScoreData bevat een FeatureVector, een n-dimensionale vector van numerieke kenmerken die de ScoreData vertegenwoordigen. U verifieert zich bij de Machine Learning-service met een API-sleutel.
Als u verbinding wilt maken met een Machine Learning-webservice, moet het NuGet-pakket Microsoft.AspNet.WebApi.Client zijn geïnstalleerd.
Microsoft.AspNet.WebApi.Client NuGet installeren in Visual Studio
- Publiceer de gegevensset Downloaden van UCI: Webservice voor volwassen 2 klassengegevenssets.
- Klik op Hulpprogramma's>NuGet Package Manager>Package Manager-console.
- Kies Install-Package Microsoft.AspNet.WebApi.Client.
Het codevoorbeeld uitvoeren
- Publiceer 'Sample 1: Download dataset from UCI: Adult 2 class dataset' experiment, onderdeel van de Machine Learning-voorbeeldverzameling.
- Wijs apiKey toe met de sleutel van een webservice. Zie Hierboven een autorisatiesleutel ophalen.
- Wijs serviceUri toe met de aanvraag-URI.
Hier ziet u hoe een volledige aanvraag eruitziet.
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 request 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);
}
}
}
}
}
Python-voorbeeld
Als u verbinding wilt maken met een Machine Learning-webservice, gebruikt u de urllib2-bibliotheek voor Python 2.X en de urllib.request-bibliotheek voor Python 3.X. U geeft ScoreData door, die een FeatureVector bevat, een n-dimensionale vector van numerieke functies die de ScoreData vertegenwoordigen. U verifieert zich bij de Machine Learning-service met een API-sleutel.
Het codevoorbeeld uitvoeren
- Implementeer 'Voorbeeld 1: Gegevensset downloaden van UCI: Volwassen 2-klassegegevensset', onderdeel van de Machine Learning-voorbeeldverzameling.
- Wijs apiKey toe met de sleutel van een webservice. Zie de sectie Een autorisatiesleutel ophalen aan het begin van dit artikel.
- Wijs serviceUri toe met de aanvraag-URI.
Hier ziet u hoe een volledige aanvraag eruitziet.
import urllib2 # urllib.request and urllib.error 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(url, 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 request ID and the timestamp, which are useful for debugging the failure
print(error.info())
print(json.loads(error.read()))
R-voorbeeld
Als u verbinding wilt maken met een Machine Learning-webservice, gebruikt u de RCurl - en rjson-bibliotheken om de aanvraag te maken en het geretourneerde JSON-antwoord te verwerken. U geeft ScoreData door, die een FeatureVector bevat, een n-dimensionale vector van numerieke functies die de ScoreData vertegenwoordigen. U verifieert zich bij de Machine Learning-service met een API-sleutel.
Hier ziet u hoe een volledige aanvraag eruitziet.
library("curl")
library("httr")
library("rjson")
requestFailed = function(response) {
return (response$status_code >= 400)
}
printHttpResult = function(response, result) {
if (requestFailed(response)) {
print(paste("The request failed with status code:", response$status_code, sep=" "))
# Print the headers - they include the request ID and the timestamp, which are useful for debugging the failure
print(response$headers)
}
print("Result:")
print(fromJSON(result))
}
req = list(
Inputs = list(
"input1" = list(
"ColumnNames" = list("Col1", "Col2", "Col3"),
"Values" = list( list( "0", "value", "0" ), list( "0", "value", "0" ) )
) ),
GlobalParameters = setNames(fromJSON('{}'), character(0))
)
body = enc2utf8(toJSON(req))
api_key = "abc123" # Replace this with the API key for the web service
authz_hdr = paste('Bearer', api_key, sep=' ')
response = POST(url= "<your-api-uri>",
add_headers("Content-Type" = "application/json", "Authorization" = authz_hdr),
body = body)
result = content(response, type="text", encoding="UTF-8")
printHttpResult(response, result)
JavaScript-voorbeeld
Als u verbinding wilt maken met een Machine Learning-webservice, gebruikt u het npm-pakket voor aanvragen in uw project. U gebruikt het JSON
object ook om uw invoer op te maken en het resultaat te parseren. Installeer met behulp npm install request --save
van , of voeg toe "request": "*"
aan uw package.json onder dependencies
en voer deze uit npm install
.
Hier ziet u hoe een volledige aanvraag eruitziet.
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);
}
});