Цель
Наша цель состоит в том, чтобы построить регрессионные и классификационные модели на базе данных Бостона, чтобы предсказать медианную стоимость домов, занимаемых владельцами, в разных частях города на основе различных характеристик, таких как уровень преступности, количество комнат и соотношение учеников и учителей среди населения. другие.
Фон
Набор данных Бостона содержит информацию, собранную Службой переписи населения США о жилье в районе Бостона, штат Массачусетс. Набор данных содержит 506 наблюдений и 14 атрибутов. Целевой переменной является «medv» (средняя стоимость домов, занимаемых владельцами, в 1000 долларов США).
Регрессионные модели
Модель линейной регрессии
Первая модель регрессии, которую мы построим, — это простая модель линейной регрессии с использованием функции lm() в R. Эта модель будет использовать все переменные-предикторы в наборе данных для прогнозирования среднего значения домов, занимаемых владельцами. Вот код:
# Load the Boston dataset data(Boston) # Fit a linear regression model lm_model <- lm(medv ~ ., data = Boston) # Print the model summary summary(lm_model)
Вывод функции summary() покажет нам информацию о коэффициентах, p-значениях и значении R-квадрата модели.
Модель гребневой регрессии
Вторая регрессионная модель, которую мы построим, — это гребневая регрессионная модель с использованием пакета glmnet в R. Эта модель поможет нам справиться с мультиколлинеарностью в наборе данных. Вот код:
# Load the glmnet package library(glmnet) # Split the data into training and testing sets set.seed(123) train_index <- sample(nrow(Boston), 0.7*nrow(Boston)) train <- Boston[train_index, ] test <- Boston[-train_index, ] # Fit a ridge regression model ridge_model <- glmnet(x = as.matrix(train[, -14]), y = train$medv, alpha = 0, lambda = 0.1) # Make predictions on the test set ridge_preds <- predict(ridge_model, newx = as.matrix(test[, -14])) # Calculate the root mean squared error rmse <- sqrt(mean((test$medv - ridge_preds)^2)) rmse
Вывод покажет нам среднеквадратичную ошибку модели на тестовом наборе.
Модель регрессии случайного леса
Третья модель регрессии, которую мы построим, — это модель регрессии случайного леса с использованием пакета randomForest в R. Эта модель поможет нам разобраться с нелинейными отношениями в наборе данных. Вот код:
# Load the randomForest package library(randomForest) # Fit a random forest regression model rf_model <- randomForest(medv ~ ., data = Boston) # Make predictions on the test set rf_preds <- predict(rf_model, newdata = test) # Calculate the root mean squared error rmse <- sqrt(mean((test$medv - rf_preds)^2)) rmse
Вывод покажет нам среднеквадратичную ошибку модели на тестовом наборе.
Модели классификации
Модель логистической регрессии
Первая модель классификации, которую мы создадим, — это модель логистической регрессии с использованием функции glm() в R. Эта модель поможет нам классифицировать районы как имеющие медианное значение дома выше или ниже медианного значения набора данных. Вот код:
# Create a binary variable indicating whether the median value is above or below the median Boston$medv_binary <- ifelse(Boston$medv >= median(Boston$medv), 1, 0) # Split the data into training and testing sets set.seed(123) train_index <- sample(nrow(Boston), 0.7*nrow(Boston)) train <- Boston[train_index, ] test <- Boston[-train_index, ] # Fit a logistic regression classification model logit_model <- glm(medv_binary ~ ., data = train, family = "binomial") # Make predictions on the test set logit_preds <- predict(logit_model, newdata = test, type = "response") logit_preds <- ifelse(logit_preds > 0.5, 1, 0) # Calculate the accuracy of the modelr accuracy <- sum(logit_preds == test$medv_binary)/nrow(test) accuracy
Вывод покажет нам точность модели логистической регрессии на тестовом наборе. Модель логистической регрессии полезна для прогнозирования бинарных результатов, например, имеет ли район медианное значение дома выше или ниже медианного значения набора данных. Мы использовали функцию glm() в R с параметром семейства, установленным на «биномиальный», чтобы соответствовать модели логистической регрессии. Для прогнозирования тестового набора использовалась функция predict(), а для параметра type было установлено значение «response», чтобы получить прогнозируемые вероятности. Затем мы использовали порог 0,5 для преобразования вероятностей в бинарные предсказания. Точность модели была рассчитана и отображена как результат.
Модель классификации случайного леса
Третья модель классификации, которую мы создадим, — это модель классификации случайного леса с использованием пакета randomForest в R. Эта модель поможет нам классифицировать районы как имеющие медианное значение дома выше или ниже медианного значения набора данных на основе значений переменные-предикторы. Вот код:
# Fit a random forest classification model rf_model <- randomForest(medv_binary ~ ., data = Boston) # Make predictions on the test set rf_preds <- predict(rf_model, newdata = test) # Calculate the accuracy of the model accuracy <- sum(rf_preds == test$medv_binary)/nrow(test) accuracy
Модель классификации KNN
мы построим модель классификации k-ближайших соседей (KNN) с использованием функции knn() в R. Эта модель поможет нам классифицировать районы как имеющие медианное значение дома выше или ниже медианного значения набора данных на основе значения переменных-предикторов. Вот код:
# Split the data into training and testing sets set.seed(123) train_index <- sample(nrow(Boston), 0.7*nrow(Boston)) train <- Boston[train_index, ] test <- Boston[-train_index, ] # Fit a KNN classification model knn_model <- knn(train[, -14], test[, -14], train$medv_binary, k = 5) # Calculate the accuracy of the model accuracy <- sum(knn_model == test$medv_binary)/nrow(test) accuracy
мы построили три регрессионные модели и три модели классификации для бостонского набора данных с использованием R. Построенные нами регрессионные модели представляли собой простую модель линейной регрессии, модель гребневой регрессии и модель регрессии случайного леса. Модели классификации, которые мы построили, представляли собой модель логистической регрессии, модель классификации k-ближайших соседей и модель классификации случайного леса. Мы использовали разные алгоритмы для решения разных проблем, таких как мультиколлинеарность, нелинейность и классификация. Мы также оценили модели, используя различные показатели, такие как RMSE для регрессионных моделей и точность для моделей классификации.
Оставайтесь с нами, чтобы узнать больше!
Я всегда рад общаться со своими подписчиками и читателями в LinkedIn. Если у вас есть какие-либо вопросы или вы просто хотите поздороваться, пожалуйста, не стесняйтесь обращаться к нам.
https://www.linkedin.com/in/sharmasaravanan/
Приятного обучения!
Прощай, мне нравится!! 🤗🤗