Это простое руководство по созданию простой модели машинного обучения с использованием набора данных Boston и линейной регрессии в R. Итак, давайте начнем!
1. Загрузка библиотек
Мы будем использовать следующие библиотеки:
library(mlbench) # Contains the Boston Housing Dataset library(dplyr) # Basic manipulation functions library(ggplot2) # Graphs and plots library(reshape2) # To reshape data library(caret) # Creating train test sets
2. Загрузка набора данных
Функция data() используется для загрузки набора данных, доступного в загруженных библиотеках. Если вы вызовете data() без аргументов, вы получите список всех доступных наборов данных.
data() # View all available datasets # Load the Boston Housing dataset in the object named # 'BostonHousing' data(“BostonHousing”) # For simplicity, lets call it 'housing' housing = BostonHousing
3. Понимание структуры
Функция str() предоставляет подробную информацию о типах переменных (атрибутов). Необходимо, чтобы вы понимали значение этих атрибутов. Подробнее о значении атрибутов можно узнать здесь.
> str(housing) 'data.frame': 506 obs. of 14 variables: $ crim : num 0.00632 0.02731 0.02729 0.03237 0.06905 ... $ zn : num 18 0 0 0 0 0 12.5 12.5 12.5 12.5 ... $ indus : num 2.31 7.07 7.07 2.18 2.18 2.18 7.87 7.87 7.87 7.87 ... . .
4. Заговор
График плотности медианного значения цен на жилье
ggplot(housing, aes(x = medv)) + stat_density() + labs(x = “Median Value x $1000”, y = “Density”, title = “Density Plot of Median Value House Price”) + theme_minimal()
График плотности дает распределение числового атрибута. Мы видим, что большинство домов находятся в ценовом диапазоне от 20 000 до 25 000 долларов.
Атрибуты и средняя цена дома
Теперь мы построим несколько атрибутов в зависимости от цены дома.
selected.attributes = select(housing, c(crim, rm, age, rad, tax, lstat, medv)) melted = melt(selected.attributes,id="medv") ggplot(melted, aes(x = value, y = medv, colour = variable)) + geom_point(alpha = 0.7) + geom_smooth(color='black') + facet_wrap(~variable, scales = "free", ncol = 2) + # Divide the plots based on variable in 2 columns with a free scale that adjusts labs(x = "Variable Value", y = "Median House Price x $1000") + theme_minimal()
Здесь мы создаем расплавленную версию данных. Мы выберем () несколько атрибутов из «жилья» и расплавим () их. Функция Melt() принимает 2 аргумента: один — это данные, второй — «id». Он берет атрибут «id», повторяет его для выбранных атрибутов и создает связанную переменную, столбцы значений.
Я предлагаю вам просмотреть «расплавленный» фрейм данных, чтобы получить представление о том, что делает Melt().
ggplot() создает график с указанными атрибутами x и y. geom_point() используется для построения данных в виде точек. «альфа» указывает прозрачность точек. geom_smooth() строит черную кривую, которую вы можете видеть на графике ниже. facet_wrap() используется для разделения графиков на несколько графиков в 2 столбцах на основе переменной. labs() используется для маркировки графика.
5. Создание наборов обучающих тестов
set.seed(387) train.idx = createDataPartition(y = housing$medv, p = 0.75, list = FALSE) test.idx =createDataPartition(y=housing$medv, p=0.25,list=FALSE) train = housing[train.idx, ] test = housing[test.idx, ]
createDataPartition() возвращает случайные номера индексов для выбора набора поездов и тестов. Строки, соответствующие этим индексам, используются для получения набора «поезд» и «тест».
6. Построение модели
model = lm( medv ~ crim + rm + tax + lstat, data = train)
Функция lm() создает линейную модель. В первом аргументе переменные слева от «~» — это целевая переменная, а справа — независимые переменные.
summary(model) # Obtain coefficients, Residuals and statistics rsquare = summary(model)$r.squared # R-squared value
Я получил значение r-квадрата 0,699.
7. Прогнозирование по модели и построение графика
predictions = predict(model, newdata = test) predicted.vs.original = data.frame(predicted = predictions, original = test$medv) # Create a new data frame ggplot(predicted.vs.original, aes(x = predicted, y = original)) + geom_point() + geom_smooth(color='blue') + labs(x = “Predicted Values”, y = “Original Values”, title = “Predicted vs. Original Values”) + theme_minimal()
Здесь мы создаем фрейм данных, который содержит исходные и предсказанные значения, и строим график.
8. Заключение
Мы только что построили базовую модель линейной регрессии. Вы можете повысить точность модели, масштабируя, преобразовывая и нормализуя данные.
Спасибо за чтение!