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.

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.

  1. Lägg till de här modulerna i experimentet: Skapa R-modell, Träna modell, Poängmodell.

  2. 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.

  3. 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.dataoch ett tillfälligt namn Class 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

Se även

Köra R-skript
R-språkmoduler