Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Informace, jak se provádí lineární a logistická regrese pomocí zobecněného lineárního modelu (GLM) v Azure Databricks
glm odpovídá generalizovanému lineárnímu modelu, podobně jako R glm().
Syntaxe: glm(formula, data, family...)
Parametry:
-
formula: Symbolický popis modelu, který se má namontovat, např:ResponseVariable ~ Predictor1 + Predictor2. Podporované operátory:~,+,-a. -
data: Libovolný sparkdataframe -
family: Řetězec pro"gaussian"lineární regresi nebo"binomial"logistickou regresi -
lambda: Číselný, parametr regularizace -
alpha: Číselný, mixovací parametr elastické sítě
Výstup: Model kanálu MLlib
V tomto kurzu se dozvíte, jak provádět lineární a logistickou regresi u datové sady diamantů.
Načti data o diamantech a rozděl je na trénovací a testovací sady
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)
Trénování lineárního regresního modelu pomocí glm()
Tato část ukazuje, jak předpovědět cenu diamantu z jejích funkcí trénováním modelu lineární regrese pomocí trénovacích dat.
Existuje kombinace kategorických funkcí (cut - Ideal, Premium, Very Good...) a souvislých funkcí (hloubka, karat). SparkR tyto funkce automaticky kóduje, takže tyto funkce nemusíte kódovat ručně.
# Family = "gaussian" to train a linear regression model
lrModel <- glm(price ~ ., data = trainingData, family = "gaussian")
# Print a summary of the trained model
summary(lrModel)
Pomocí predict() testovacích dat můžete zjistit, jak dobře model funguje s novými daty.
Syntaxe:predict(model, newData)
parametry :
-
model: Model MLlib -
newData: SparkDataFrame, obvykle vaše testovací sada
Výstup:SparkDataFrame
# Generate predictions using the trained model
predictions <- predict(lrModel, newData = testData)
# View predictions against mpg column
display(select(predictions, "price", "prediction"))
Vyhodnoťte model.
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")))
Trénování logistického regresního modelu pomocí glm()
Tato část ukazuje, jak na stejné datové sadě vytvořit logistickou regresi, která předpovídá brus diamantu na základě některých jeho vlastností.
Logistická regrese v MLlib podporuje binární klasifikaci. Chcete-li otestovat algoritmus v tomto příkladu, omezte data na dva štítky.
# 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"))
Vyhodnoťte model.
errorsLogR <- select(predictionsLogR, predictionsLogR$label, predictionsLogR$prediction, alias(abs(predictionsLogR$label - predictionsLogR$prediction), "error"))
display(errorsLogR)