البرنامج التعليمي: تحليل البيانات باستخدام glm
تعرف على كيفية إجراء الانحدار الخطي واللوجستي باستخدام نموذج خطي معمم (GLM) في Azure Databricks. glm
يناسب نموذج خطي معمم، على غرار نموذج R glm()
.
بناء الجملة: glm(formula, data, family...)
المعلمات:
formula
: وصف رمزي للنموذج المراد تركيبه، على سبيل المثال:ResponseVariable ~ Predictor1 + Predictor2
. عوامل التشغيل المدعومة:~
و+
-
.
data
: أي SparkDataFramefamily
: سلسلة،"gaussian"
للتراجع الخطي أو"binomial"
للتراجع اللوجستيlambda
: رقمية، معلمة الانتظامalpha
: Numeric، Elastic-net mixing parameter
الإخراج: MLlib PipelineModel
يوضح هذا البرنامج التعليمي كيفية إجراء الانحدار الخطي واللوجستي على مجموعة بيانات الماس.
تحميل بيانات الماس وتقسيمها إلى مجموعات تدريب واختبار
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)
تدريب نموذج انحدار خطي باستخدام glm()
يوضح هذا القسم كيفية التنبؤ بسعر الماس من ميزاته من خلال تدريب نموذج انحدار خطي باستخدام بيانات التدريب.
هناك مزيج من الميزات الفئوية (قص - مثالي، متميز، جيد جدا...) والميزات المستمرة (العمق، قيراط). يقوم SparkR تلقائيا بترميز هذه الميزات بحيث لا تضطر إلى ترميز هذه الميزات يدويا.
# Family = "gaussian" to train a linear regression model
lrModel <- glm(price ~ ., data = trainingData, family = "gaussian")
# Print a summary of the trained model
summary(lrModel)
استخدم predict()
على بيانات الاختبار لمعرفة مدى جودة عمل النموذج على البيانات الجديدة.
بناء الجملة: predict(model, newData)
البارامترات:
model
: نموذج MLlibnewData
: SparkDataFrame، عادة ما تكون مجموعة الاختبار الخاصة بك
الناتج: SparkDataFrame
# Generate predictions using the trained model
predictions <- predict(lrModel, newData = testData)
# View predictions against mpg column
display(select(predictions, "price", "prediction"))
تقييم النموذج.
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")))
تدريب نموذج انحدار لوجستي باستخدام glm()
يوضح هذا القسم كيفية إنشاء انحدار لوجستي على نفس مجموعة البيانات للتنبؤ بقص الماس استنادا إلى بعض ميزاته.
يدعم الانحدار اللوجستي في MLlib التصنيف الثنائي. لاختبار الخوارزمية في هذا المثال، قم بتصنيف البيانات الفرعية للعمل مع تسميتين.
# 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"))
تقييم النموذج.
errorsLogR <- select(predictionsLogR, predictionsLogR$label, predictionsLogR$prediction, alias(abs(predictionsLogR$label - predictionsLogR$prediction), "error"))
display(errorsLogR)