Skapa R-modell
Viktigt
Stödet för Machine Learning Studio (klassisk) upphör den 31 augusti 2024. Vi rekommenderar att du byter till Azure Machine Learning innan dess.
Från och med den 1 december 2021 kan du inte längre skapa nya Machine Learning Studio-resurser (klassisk). Du kan fortsätta att använda befintliga Machine Learning Studio-resurser (klassisk) till och med den 31 augusti 2024.
- Se information om hur du flyttar maskininlärningsprojekt från ML Studio (klassisk) till Azure Machine Learning.
- Läs mer om Azure Machine Learning.
Dokumentationen om ML Studio (klassisk) håller på att dras tillbaka och kanske inte uppdateras i framtiden.
Skapar en R-modell med anpassade resurser
Kategori: Datatransformering/manipulering
Anteckning
Gäller endast för: Machine Learning Studio (klassisk)
Liknande dra och släpp-moduler är tillgängliga i Azure Machine Learning designer.
Modulöversikt
Den här artikeln beskriver hur du använder modulen Skapa R-modell i Machine Learning Studio (klassisk) för att skapa en tränad modell från ett R-skript.
Du kan basera modellen på alla elever som ingår i ett R-paket i Machine Learning miljön.
När du har skapat modellen kan du använda Träna modell för att träna modellen på en datauppsättning, precis som andra elever i Machine Learning. Den tränade modellen kan skickas till Poängmodell för att använda modellen för att göra förutsägelser. Den tränade modellen kan sedan sparas och bedömningsarbetsflödet kan publiceras som en webbtjänst.
Varning
För närvarande går det inte att skicka det poängade resultatet för en R-modell till Evaluate Model (Utvärdera modell) eller Cross-Validate Model (Kors validera modell). Om du behöver utvärdera en modell kan du skriva ett anpassat R-skript och köra det med hjälp av modulen Kör R-skript .
Förutom att använda Skapa R-modell för att spara och använda anpassade R-moduler kan du skapa en egen implementering av en modellerings- och datahanteringsprocess med hjälp av R, ladda upp filerna i zippat format till arbetsytan och sedan registrera paketet som en anpassad modul. Mer information finns i Anpassade R-moduler.
Så här konfigurerar du Skapa R-modell
Användning av den här modulen kräver mellanliggande eller expertkunskaper om R. Modulen stöder användning av alla elever som ingår i de R-paket som redan har installerats i Machine Learning.
Det här exemplet från Azure AI Gallery implementerar en Naïve Bayes-klassificerare med två klasser med hjälp av det populära e1070
paketet: + Skapa R-modell. Vi rekommenderar att du kopierar exemplet till din arbetsyta och följer med.
Lägg till de här modulerna i experimentet: Skapa R-modell, Träna modell, Poängmodell.
I fönstret Egenskaper i Skapa R-modell anger du följande skript:
R-skript för utbildare: Det R-skript som du anger här används för att träna modellen. När du kör experimentet distribueras det till modulen Träna modell.
Scorer R-skript: R-skriptet som du anger för dessa indata är endast till för bedömning. När du kör experimentet distribueras det till modulen Poängsätta modell.
Exempelexperimentet innehåller även modulen Execute Python Script (Kör Python-skript ) som används för att rita diagram för modellutvärdering. Den här modulen är valfri när du publicerar till en webbtjänst, men användbar när du utvecklar experimentet.
- Om du vill visa diagrammen från Python-skriptet högerklickar du på Python-modulen, väljer Python-enhet och sedan Visualisera.
- Om du bara vill visa modellmåtten högerklickar du på Python-modulen, väljer Python-datauppsättning och sedan Visualisera.
Koden i den valfria Python-modulen finns i Python-modulen för modellutvärdering.
Träningsskript
I följande exempel visas vilken typ av kod du kan använda i R-skript för utbildaren.
Det här skriptet läser in ett R-paket, skapar en modell med hjälp av en användare från paketet och konfigurerar funktions- och etikettkolumnerna med hjälp av de fördefinierade konstanter och funktioner som finns i Skapa R-modell.
library(e1071)
features <- get.feature.columns(dataset)
labels <- as.factor(get.label.column(dataset))
train.data <- data.frame(features, labels)
feature.names <- get.feature.column.names(dataset)
names(train.data) <- c(feature.names, "Class")
model <- naiveBayes(Class ~ ., train.data)
Den första raden läser in R-paketet , e1071, som innehåller den Nave Bayes-klassificeraralgoritm som vi vill använda. Eftersom detta är ett av paketen som är förinstallerade i Machine Learning-miljön behöver du inte ladda ned eller installera paketet.
Nästa rader hämtar egenskapskolumnerna och etikettkolumnen från datauppsättningen och kombinerar dem till en ny R-dataram med namnet
train.data
:features <- get.feature.columns(dataset) labels <- as.factor(get.label.column(dataset)) train.data <- data.frame(features, labels) feature.names <- get.feature.column.names(dataset)
Observera användningen av dessa fördefinierade funktioner:
get.label.columns()
returnerar kolumnen som har valts som klassetikett i modulen Träna modell.get.feature.columns()
väljer de kolumner som har angetts som funktioner i datauppsättningen.Som standard betraktas alla kolumner utom etikettkolumnen som funktioner i Studio (klassisk). Om du vill markera specifika kolumner som funktioner använder du redigera metadata eller väljer en uppsättning kolumner i R-skriptet.
get.feature.column.names(dataset)
hämtar funktionskolumnnamn från datauppsättningen.
Namnen från den kombinerade datauppsättningen anges som namn på kolumner i
train.data
och ett tillfälligt namnClass
skapas för etikettkolumnen.names(train.data) <- c(feature.names, "Class")
Den sista raden i koden definierar Naïve Bayes-klassificeraralgoritmen som en funktion av variablerna (funktioner) och resultat (etiketter) i
train.data
dataramen.model <- naiveBayes(Class ~ ., train.data)
Under hela modellgenereringen, träningen och bedömningsskripten måste du använda variabelnamnet
model
.
Bedömningsskript
Följande kod illustrerar den typ av R-kod som du anger i Scorer R-skriptet.
library(e1071)
probabilities <- predict(model, dataset, type="raw")[,2]
classes <- as.factor(as.numeric(probabilities >= 0.5))
scores <- data.frame(classes, probabilities)
Den första raden läser in paketet.
Den andra raden beräknar de förutsagda sannolikheterna för bedömningsdatamängden med hjälp av den tränade modellen från träningsskriptet, som anges av det obligatoriska variabelnamnet,
model
.Den tredje raden tillämpar ett tröskelvärde på 0,5 på sannolikheter när du tilldelar de förutsagda klassetiketterna.
Den sista raden kombinerar klassetiketterna och sannolikheterna till utdataramen,
scores
.Dataramen som skickas till modulen Poängmodell måste ha namnet
scores
.
Valfritt Python-utvärderingsskript
Exempelexperimentet i Azure AI Gallery innehåller följande Python-skript, som används för att generera mått och diagram för modellutvärdering.
def azureml_main(dataframe):
import matplotlib
matplotlib.use("agg")
from sklearn.metrics import accuracy_score, precision_score, recall_score, roc_auc_score, roc_curve
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
scores = dataframe.ix[:, ("Class", "classes", "probabilities")]
ytrue = scores["Class"]
ypred = np.array([float(val) for val in scores["classes"]])
probabilities = scores["probabilities"]
accuracy, precision, recall, auc = \
accuracy_score(ytrue, ypred),\
precision_score(ytrue, ypred),\
recall_score(ytrue, ypred),\
roc_auc_score(ytrue, probabilities)
metrics = pd.DataFrame();
metrics["Metric"] = ["Accuracy", "Precision", "Recall", "AUC"];
metrics["Value"] = [accuracy, precision, recall, auc]
# Plot ROC Curve
fpr, tpr, thresholds = roc_curve(ytrue, probabilities)
fig = plt.figure()
axis = fig.gca()
axis.plot(fpr, tpr, linewidth=8)
axis.grid("on")
axis.set_xlabel("False positive rate")
axis.set_ylabel("True positive rate")
axis.set_title("ROC Curve")
fig.savefig("roc.png")
return metrics,
Publicera det anpassade R-modellarbetsflödet som en webbtjänst
När du har kört experimentet kan du publicera hela experimentet som en webbtjänst.
Uppdaterade instruktioner om hur du skapar en webbtjänst från ett Studio-experiment (klassiskt) finns i Genomgång steg 5: Distribuera Machine Learning webbtjänsten
Som standard förväntar sig webbtjänsten att alla indatakolumner från träningsdata tillhandahålls, inklusive etikettkolumnen. Du kan lägga till en instans av Select Columns in Dataset (Välj kolumner i datamängd) mellan indatakällan och modulen Score Model (Poängmodell) för att undanta etiketten som du försöker förutsäga.
Teknisk information
Modulen Skapa R-modell stöder endast användning av CRAN R. Du kan inte välja en annan version av R eller använda Microsoft R Open.
Modellen cachelagras efter den första körningen av modulen och modulen anropas inte i efterföljande körningar förrän ändringar i indataskript har gjorts. Tänk på det här beteendet om R-skripten använder något av följande:
- Funktioner som genererar slumpmässiga tal
- Funktioner som genererar slumpmässiga tal
- Andra icke-terministiska funktioner
Anpassade R-modeller som skapats med den här modulen kan inte användas med dessa moduler:
R-modeller utför inte automatiskt funktions normalisering av kategoriska data eller hanterar saknade värden. Hanteringen av sådana variabler bör göras inom R-skripten för träning och bedömning.
Tabell med fördefinierade funktioner
Användning | Description |
---|---|
get.feature.columns(dataset) |
Hämtar alla egenskapskolumner. |
get.label.column(dataset, label.type=TrueLabelType) |
Hämtar etikettkolumnen, givet typen. En lista över tillgängliga typer finns i avsnittet Konstanter. |
get.label.column.names(dataset) |
Hämtar namnen på alla etikettkolumner. |
get.label.column.name(dataset, label.type=TrueLabelType) |
Hämtar namnet på etikettkolumnen, efter typ. En lista över tillgängliga typer finns i avsnittet Konstanter. |
get.label.column.types(dataset) |
Hämtar typerna av alla etikettkolumner. |
get.feature.column.names(dataset) |
Hämtar namnen på alla egenskapskolumner. |
dataset < - set.score.column(dataset, score.type, column.name) |
Anger poängkolumnen, givet en typ. En lista över tillgängliga typer finns i avsnittet Konstanter. |
dataset < - set.feature.channel(dataset, channel.name, column.names) |
Anger funktionskanalen med ett namn. En lista över tillgängliga namn finns i avsnittet Konstanter. |
Tabell med fördefinierade konstanter
Konstant | Description |
---|---|
TrueLabelType | Kolumntypen True label |
ScoredLabelType | Kolumntyp för poängpoängsetikett |
RawScoreType | Kolumntyp för rådatapoäng |
KalibreradScoreType | Kolumntyp för kalibrerad poäng |
ScoredProbabilitiesMulticlassColumnTypePattern | Mönstret för att förbereda den poängade sannolikhetskolumntypen för multiklassklassificerare |
BayesianLinearRegressionScoresFeatureChannel | Namnet på funktionskanalen med Bayesiansk linjära regressionspoäng |
BinaryClassificationScoresFeatureChannel | Namnet på funktionskanalen med binära klassificeringspoäng |
MultiklassifieringScoresFeatureChannel | Namnet på funktionskanalen med klassificeringspoäng för flera klasser |
OrdinalRegressionScoresFeatureChannel | Namnet på funktionskanalen med ordningstals regressionspoäng |
RegressionScoresFeatureChannel | Namnet på funktionskanalen med regressionspoäng |
Exempel
Fler exempel på hur du använder den här modulen i maskininlärningsexperiment finns i Azure AI Gallery.
Förväntade indata
Namn | Typ | Description |
---|---|---|
R-skript för utbildare | Skript | Ett R-skript som tar en datauppsättning som indata och matar ut en tränad modell. |
Scorer R-skript | Skript | Ett R-skript som tar en modell och en datauppsättning som indata och matar ut poängen som anges i skriptet. |
Utdata
Namn | Typ | Description |
---|---|---|
Modell | ILearner-gränssnitt | En tränad modell |