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.
Erfahren Sie, wie Sie in Azure Databricks eine lineare und logistische Regression mit einem generalisierten linearen Modell (GLM) durchführen.
glm
passt zu einem generalisierten Linearmodell, ähnlich wie R' glm()
.
Syntax: glm(formula, data, family...)
Parameter:
-
formula
: Symbolische Beschreibung des Modells, das angepasst werden soll, z. B.:ResponseVariable ~ Predictor1 + Predictor2
. Unterstützte Operatoren:~
,+
,-
und.
-
data
: Beliebiger SparkDataFrame -
family
: Zeichenfolge,"gaussian"
für lineare Regression oder"binomial"
für logistische Regression -
lambda
: Numerisch, Abgrenzungsparameter -
alpha
: Numerisch, Elastischer Netzmischungsparameter
Ausgabe: MLlib PipelineModel
In diesem Tutorial erfahren Sie, wie Sie eine lineare und logistische Regression für das Diamonds-Dataset (Diamanten) durchführen.
Laden von Diamonds-Daten und Aufteilen in Trainings- und Testsätze
require(SparkR)
# Read diamonds.csv dataset as SparkDataFrame
diamonds <- read.df("/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv",
source = "com.databricks.spark.csv", header="true", inferSchema = "true")
diamonds <- withColumnRenamed(diamonds, "", "rowID")
# Split data into Training set and Test set
trainingData <- sample(diamonds, FALSE, 0.7)
testData <- except(diamonds, trainingData)
# Exclude rowIDs
trainingData <- trainingData[, -1]
testData <- testData[, -1]
print(count(diamonds))
print(count(trainingData))
print(count(testData))
head(trainingData)
Trainieren eines linearen Regressionsmodells mit glm()
In diesem Abschnitt wird gezeigt, wie Sie den Preis eines Diamanten anhand seiner Merkmale vorhersagen, indem Sie ein lineares Regressionsmodell mit den Trainingsdaten trainieren.
Es gibt eine Mischung aus kategorischen Funktionen (Schnitt – Ideal, Premium, Sehr gut...) und weiterführenden Funktionen (Tiefe, Karat). SparkR codiert diese Features automatisch, sodass Sie diese Features nicht manuell codieren müssen.
# Family = "gaussian" to train a linear regression model
lrModel <- glm(price ~ ., data = trainingData, family = "gaussian")
# Print a summary of the trained model
summary(lrModel)
Verwenden Sie predict()
mit den Testdaten, um festzustellen, wie gut das Modell mit neuen Daten funktioniert.
Syntax: predict(model, newData)
Parameter:
-
model
: MLlib-Modell -
newData
: SparkDataFrame, in der Regel Ihr Testsatz
Ausgabe:SparkDataFrame
# Generate predictions using the trained model
predictions <- predict(lrModel, newData = testData)
# View predictions against mpg column
display(select(predictions, "price", "prediction"))
Auswerten des Modells.
errors <- select(predictions, predictions$price, predictions$prediction, alias(predictions$price - predictions$prediction, "error"))
display(errors)
# Calculate RMSE
head(select(errors, alias(sqrt(sum(errors$error^2 , na.rm = TRUE) / nrow(errors)), "RMSE")))
Trainieren eines logistischen Regressionsmodells mit glm()
In diesem Abschnitt wird gezeigt, wie Sie eine logistische Regression auf demselben Datensatz erstellen, um den Schliff eines Diamanten basierend auf einigen seiner Merkmale vorherzusagen.
Die logistische Regression in MLlib unterstützt die binäre Klassifizierung. Um den Algorithmus in diesem Beispiel zu testen, erstellen Sie aus den Daten Teilmengen, damit mit 2 Bezeichnungen gearbeitet wird.
# Subset data to include rows where diamond cut = "Premium" or diamond cut = "Very Good"
trainingDataSub <- subset(trainingData, trainingData$cut %in% c("Premium", "Very Good"))
testDataSub <- subset(testData, testData$cut %in% c("Premium", "Very Good"))
# Family = "binomial" to train a logistic regression model
logrModel <- glm(cut ~ price + color + clarity + depth, data = trainingDataSub, family = "binomial")
# Print summary of the trained model
summary(logrModel)
# Generate predictions using the trained model
predictionsLogR <- predict(logrModel, newData = testDataSub)
# View predictions against label column
display(select(predictionsLogR, "label", "prediction"))
Auswerten des Modells.
errorsLogR <- select(predictionsLogR, predictionsLogR$label, predictionsLogR$prediction, alias(abs(predictionsLogR$label - predictionsLogR$prediction), "error"))
display(errorsLogR)