Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Lernprogramm wird gezeigt, wie SynapseML verwendet wird, um die beste Kombination von Hyperparametern für ausgewählte Klassifizierer zu identifizieren, um genauere und zuverlässigere Modelle zu erstellen. Das Lernprogramm zeigt, wie Sie die Hyperparameteroptimierung für verteilte randomisierte Rastersuche durchführen, um ein Modell zu erstellen, das Brustkrebs identifiziert.
Einrichten der Abhängigkeiten
Importieren Sie Pandas und richten Sie eine Spark-Sitzung ein:
import pandas as pd
from pyspark.sql import SparkSession
# Bootstrap Spark Session
spark = SparkSession.builder.getOrCreate()
Lesen Sie die Daten, und teilen Sie sie in Optimierungs- und Testsätze auf:
data = spark.read.parquet(
"wasbs://publicwasb@mmlspark.blob.core.windows.net/BreastCancer.parquet"
).cache()
tune, test = data.randomSplit([0.80, 0.20])
tune.limit(10).toPandas()
Definieren Sie die zu verwendenden Modelle:
from synapse.ml.automl import TuneHyperparameters
from synapse.ml.train import TrainClassifier
from pyspark.ml.classification import (
LogisticRegression,
RandomForestClassifier,
GBTClassifier,
)
logReg = LogisticRegression()
randForest = RandomForestClassifier()
gbt = GBTClassifier()
smlmodels = [logReg, randForest, gbt]
mmlmodels = [TrainClassifier(model=model, labelCol="Label") for model in smlmodels]
Verwenden von AutoML zum Auffinden des besten Modells
Importieren Sie die AutoML-Klassen von SynapseML aus synapse.ml.automl
. Geben Sie die Hyperparameter mit HyperparamBuilder
an. Fügen Sie entweder DiscreteHyperParam
oder RangeHyperParam
Hyperparameter hinzu. TuneHyperparameters
wählt zufällig Werte aus einer einheitlichen Verteilung aus:
from synapse.ml.automl import *
paramBuilder = (
HyperparamBuilder()
.addHyperparam(logReg, logReg.regParam, RangeHyperParam(0.1, 0.3))
.addHyperparam(randForest, randForest.numTrees, DiscreteHyperParam([5, 10]))
.addHyperparam(randForest, randForest.maxDepth, DiscreteHyperParam([3, 5]))
.addHyperparam(gbt, gbt.maxBins, RangeHyperParam(8, 16))
.addHyperparam(gbt, gbt.maxDepth, DiscreteHyperParam([3, 5]))
)
searchSpace = paramBuilder.build()
# The search space is a list of params to tuples of estimator and hyperparam
print(searchSpace)
randomSpace = RandomSpace(searchSpace)
Führen Sie TuneHyperparameter aus, um das beste Modell zu erhalten:
bestModel = TuneHyperparameters(
evaluationMetric="accuracy",
models=mmlmodels,
numFolds=2,
numRuns=len(mmlmodels) * 2,
parallelism=1,
paramSpace=randomSpace.space(),
seed=0,
).fit(tune)
Auswerten des Modells
Zeigen Sie die Parameter des besten Modells an, und rufen Sie die zugrunde liegende beste Modellpipeline ab:
print(bestModel.getBestModelInfo())
print(bestModel.getBestModel())
Vergleichen Sie Ihre Ergebnisse mit dem Testsatz und schauen Sie sich die Metriken an:
from synapse.ml.train import ComputeModelStatistics
prediction = bestModel.transform(test)
metrics = ComputeModelStatistics().transform(prediction)
metrics.limit(10).toPandas()