R-model maken

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.

De documentatie van ML-studio (klassiek) wordt buiten gebruik gesteld en wordt in de toekomst mogelijk niet meer bijgewerkt.

Hiermee maakt u een R-model met behulp van aangepaste resources

Categorie: Gegevenstransformatie/manipulatie

Notitie

Van toepassing op: Machine Learning Studio (klassiek)

Vergelijkbare modules voor slepen en neerzetten zijn beschikbaar in Azure Machine Learning designer.

Moduleoverzicht

In dit artikel wordt beschreven hoe u de module R Model maken in Machine Learning Studio (klassiek) gebruikt om een ongetraind model te maken van een R-script.

U kunt het model baseren op elke learner die is opgenomen in een R-pakket in Machine Learning omgeving.

Nadat u het model hebt gemaakt, kunt u Train Model gebruiken om het model te trainen op een gegevensset, zoals elke andere Machine Learning. Het getrainde model kan worden doorgegeven aan Score Model om het model te gebruiken om voorspellingen te doen. Het getrainde model kan vervolgens worden opgeslagen en de scorewerkstroom kan worden gepubliceerd als een webservice.

Waarschuwing

Het is momenteel niet mogelijk om de beoordeelde resultaten van een R-model door te geven aan Model evalueren of Model kruis valideren. Als u een model wilt evalueren, kunt u een aangepast R-script schrijven en uitvoeren met behulp van de module R-script uitvoeren.

Naast het gebruik van R-model maken om aangepaste R-modules op te slaan en opnieuw te gebruiken, kunt u uw eigen implementatie van een modellerings- en gegevensbeheerproces maken met behulp van R, de bestanden in ingepakte indeling uploaden naar uw werkruimte en het pakket vervolgens registreren als een aangepaste module. Zie Aangepaste R-modules voor meer informatie.

R-model maken configureren

Voor het gebruik van deze module is gemiddelde of deskundige kennis van R vereist. De module ondersteunt het gebruik van elke learner die is opgenomen in de R-pakketten die al zijn geïnstalleerd in Machine Learning.

In dit voorbeeld Azure AI Gallery een naïve Bayes-classificatie van twee klassen geïmplementeerd met behulp van het populaire e1070 pakket : + R-model maken. U wordt aangeraden het voorbeeld naar uw werkruimte te kopiëren en mee te volgen.

  1. Voeg deze modules toe aan uw experiment: R-model maken, Model trainen, Scoremodel.

  2. Geef in het deelvenster Eigenschappen van R-model maken de volgende scripts op:

    • Docent R-script: Het R-script dat u hier op geeft, wordt gebruikt om het model te trainen. Wanneer u het experiment hebt uitgevoerd, wordt het geïmplementeerd in de module Train Model .

    • R-script voor scorer: het R-script dat u bij deze invoer op geeft, is alleen voor scoren. wanneer u het experiment hebt uitgevoerd, wordt het geïmplementeerd in de module Score Model .

  3. Het voorbeeldexperiment bevat ook de module Python-script uitvoeren, die wordt gebruikt om grafieken te plotten voor modelevaluatie. Deze module is optioneel wanneer u publiceert naar een webservice, maar nuttig is bij het ontwikkelen van het experiment.

    • Als u de grafieken van het Python-script wilt weergeven, klikt u met de rechtermuisknop op de Python-module, selecteert u Python-apparaat en selecteert u Visualiseren.
    • Als u alleen de metrische gegevens van het model wilt weergeven, klikt u met de rechtermuisknop op de Python-module, selecteert u Python-gegevensset en selecteert u Visualiseren.

    Zie Python-module voor modelevaluatie voor de code in de optionele Python-module.

Trainingsscript

In het volgende voorbeeld ziet u het type code dat u kunt gebruiken in het Script van Docent R.

Met dit script wordt een R-pakket geladen, wordt een model gemaakt met behulp van een learner uit het pakket en worden de functie- en labelkolommen geconfigureerd met behulp van de vooraf gedefinieerde constanten en functies in R-model maken.

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)
  • De eerste regel laadt het R-pakket , e1071, dat het Naïve Bayes-classificatiealgoritme bevat dat we willen gebruiken. Aangezien dit een van de pakketten is die vooraf zijn geïnstalleerd in de Machine Learning omgeving, hoeft u het pakket niet te downloaden of installeren.

  • De volgende regels halen de functiekolommen en de labelkolom uit de gegevensset op en combineren deze in een nieuw R-gegevensframe met de naam 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)
    
  • Let op het gebruik van deze vooraf gedefinieerde functies:

    • get.label.columns() retourneert de kolom die is geselecteerd als het klasselabel in de module Train Model .

    • get.feature.columns()selecteert de kolommen die zijn aangewezen als functies in de gegevensset.

      Standaard worden alle kolommen behalve de labelkolom beschouwd als functies in Studio (klassiek). Als u specifieke kolommen als functies wilt markeren, gebruikt u daarom Metagegevens bewerken of selecteert u een set kolommen in het R-script.

    • get.feature.column.names(dataset) haalt functiekolomnamen op uit de gegevensset.

  • De namen van de gecombineerde gegevensset worden aangeduid als de namen voor kolommen in train.dataen Class er wordt een tijdelijke naam gemaakt voor de labelkolom.

    names(train.data) <- c(feature.names, "Class")
    
  • De laatste regel van de code definieert het Naïve Bayes-classificatiealgoritme als een functie van de variabelen (functies) en resultaten (labels) in het train.data gegevensframe.

    model <- naiveBayes(Class ~ ., train.data)
    
  • Tijdens het maken, trainen en scoren van het model moet u de variabelenaam gebruiken model.

Scorescript

De volgende code illustreert het type R-code dat u in scorer R-script op te geven.

library(e1071)
probabilities <- predict(model, dataset, type="raw")[,2]
classes <- as.factor(as.numeric(probabilities >= 0.5))
scores <- data.frame(classes, probabilities)
  • Met de eerste regel wordt het pakket geladen.

  • De tweede regel berekent de voorspelde waarschijnlijkheden voor de score-gegevensset met behulp van het getrainde model uit het trainingsscript, aangeduid met de vereiste variabelenaam, model.

  • Met de derde regel wordt een drempelwaarde van 0,5 toegepast op waarschijnlijkheden bij het toewijzen van de voorspelde klasselabels.

  • De laatste regel combineert de klasselabels en waarschijnlijkheden in het uitvoergegevensframe, scores.

  • Het gegevensframe dat wordt doorgegeven aan de module Score Model moet de naam hebben scores.

Optioneel Python-evaluatiescript

Het voorbeeldexperiment in Azure AI Gallery bevat het volgende Python-script, dat wordt gebruikt voor het genereren van metrische gegevens en grafieken voor modelevaluatie.

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,

De aangepaste R-modelwerkstroom publiceren als een webservice

Nadat u het experiment hebt uitgevoerd, kunt u het volledige experiment publiceren als een webservice.

Zie Walkthrough Step 5: Deploy the Machine Learning web service (Stapsgewijs stap 5: de webservice implementeren) voor bijgewerkte instructies over het maken van een webservice vanuit een Studio-experiment (klassiek)

Standaard verwacht de webservice dat alle invoerkolommen van de trainingsgegevens worden opgegeven, inclusief de labelkolom. U kunt een exemplaar van Select Columns in Dataset toevoegen tussen de invoergegevensbron en de module Score Model om het label uit te sluiten dat u probeert te voorspellen.

Technische opmerkingen

  • De module R Model maken ondersteunt alleen het gebruik van CRAN R. U kunt geen andere versie van R selecteren of Microsoft R Open gebruiken.

  • Het model wordt in de cache opgeslagen na de eerste uitvoering van de module en de module wordt pas in volgende uitvoeringen aangeroepen als er wijzigingen in invoerscripts zijn aangebracht. Houd rekening met dit gedrag als uw R-scripts een van de volgende gebruiken:

    • Functies die willekeurige getallen genereren
    • Functies die willekeurige getallen genereren
    • Andere niet-deterministische functies
  • Aangepaste R-modellen die met deze module zijn gemaakt, kunnen niet worden gebruikt met deze modules:

  • R-modellen voeren niet automatisch functienormalisatie van categorische gegevens uit en verwerken ontbrekende waarden niet. Het verwerken van dergelijke variabelen moet worden uitgevoerd binnen de trainings- en score-R-scripts.

Tabel met vooraf gedefinieerde functies

Gebruik Description
get.feature.columns(dataset) Haalt alle functiekolommen op.
get.label.column(dataset, label.type=TrueLabelType) Haalt de labelkolom op, op het type .

Zie de sectie Constanten voor een lijst met de beschikbare typen.
get.label.column.names(dataset) Haalt de namen van alle labelkolommen op.
get.label.column.name(dataset, label.type=TrueLabelType) Haalt de naam van de labelkolom op, op het type .

Zie de sectie Constanten voor een lijst met de beschikbare typen.
get.label.column.types(dataset) Haalt de typen van alle labelkolommen op.
get.feature.column.names(dataset) Haalt de namen van alle functiekolommen op.
dataset < - set.score.column(dataset, score.type, column.name) Hiermee stelt u de scorekolom in op een type.

Zie de sectie Constanten voor een lijst met de beschikbare typen.
dataset < - set.feature.channel(dataset, channel.name, column.names) Hiermee stelt u het functiekanaal in op een naam.

Zie de sectie Constanten voor een lijst met de beschikbare namen.

Tabel met vooraf gedefinieerde constanten

Constant Description
TrueLabelType Kolomtype Waar label
ScoredLabelType Kolomtype Scored label
RawScoreType Kolomtype onbewerkte score
KalibreerdScoreType Kolomtype ge kalibreerde score
ScoredProbabilitiesMulticlassColumnTypePattern Het patroon voor het voorbereiden van kolomtype met scored waarschijnlijkheden voor multiclassifier
BayesianLinearRegressionScoresFeatureChannel De naam van het functiekanaal met Bayesiaanse lineaire regressiescores
BinaryClassificationScoresFeatureChannel De naam van het functiekanaal met binaire classificatiescores
MulticlassClassificationScoresFeatureChannel De naam van het functiekanaal met classificatiescores voor meerdere klassen
OrdinalRegressionScoresFeatureChannel De naam van het functiekanaal met ordinale regressiescores
RegressionScoresFeatureChannel De naam van het functiekanaal met regressiescores

Voorbeelden

Zie de Azure AI Gallery voor meer voorbeelden van het gebruik van deze module in machine learning experimenten.

Verwachte invoer

Naam Type Description
Script van Docent R Script Een R-script dat een gegevensset als invoer gebruikt en een ongetraind model als uitvoer geeft.
R-script voor scorer Script Een R-script dat een model en een gegevensset als invoer gebruikt en de scores uitvoert die zijn opgegeven in het script.

Uitvoerwaarden

Naam Type Description
Model ILearner-interface Een ongetraind model

Zie ook

R-Script uitvoeren
R-taalmodules