Линейная регрессия — один из самых известных алгоритмов в статистике и машинном обучении. В этой статье мы собираемся исследовать линейную регрессию с помощью набора данных Boston Housing.

В модели линейной регрессии мы пытаемся изучить взаимосвязь между входными переменными и выходной переменной (одной) в данном наборе данных. Если набор данных пытается продемонстрировать линейную тенденцию, мы можем решить ее с помощью линейной регрессии.

Итак, приступим.

Сначала мы импортируем все необходимые библиотеки и загрузим набор данных.

Далее мы исследуем набор данных:

boston.keys()
## output
dict_keys(['data', 'target', 'feature_names', 'DESCR', 'filename'])
  • data: содержит информацию о домах
  • цель: цена данных
  • feature_names: характеристики набора данных
  • DESCR: описание данных

Проверьте функции набора данных по boston.feature_names

array(['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD','TAX', 'PTRATIO', 'B', 'LSTAT'], dtype='<U7')

с помощью print(boston.DESCR) мы можем получить больше информации о функциях набора данных. Есть 13 признаков и 506 наблюдений.

.. _boston_dataset:

Boston house prices dataset
---------------------------
**Data Set Characteristics:**  
Number of Instances: 506 
Number of Attributes: 13 numeric/categorical predictive. Median Value (attribute 14) is usually the target.

Attribute Information (in order):
CRIM:per capita crime rate by town
ZN:proportion of residential land zoned for lots over 25,000 sq.ft.
INDUS:proportion of non-retail business acres per town
CHAS:Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)
NOX:nitric oxides concentration (parts per 10 million)
RM:average number of rooms per dwelling
AGE:proportion of owner-occupied units built prior to 1940
DIS:weighted distances to five Boston employment centres
RAD:index of accessibility to radial highways
TAX:full-value property-tax rate per $10,000
PTRATIO:pupil-teacher ratio by town
B:1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town
LSTAT:% lower status of the population
MEDV:Median value of owner-occupied homes in $1000's

Missing Attribute Values: None

Creator: Harrison, D. and Rubinfeld, D.L.

This is a copy of UCI ML housing dataset.
https://archive.ics.uci.edu/ml/machine-learning-databases/housing/


This dataset was taken from the StatLib library which is maintained at Carnegie Mellon University.

The Boston house-price data of Harrison, D. and Rubinfeld, D.L. 'Hedonic
prices and the demand for clean air', J. Environ. Economics & Management,
vol.5, 81-102, 1978.   Used in Belsley, Kuh & Welsch, 'Regression diagnostics
...', Wiley, 1980.   N.B. Various transformations are used in the table on
pages 244-261 of the latter.

The Boston house-price data has been used in many machine learning papers that address regression
problems.   
     
.. topic:: References

   - Belsley, Kuh & Welsch, 'Regression diagnostics: Identifying Influential Data and Sources of Collinearity', Wiley, 1980. 244-261.
   - Quinlan,R. (1993). Combining Instance-Based and Model-Based Learning. In Proceedings on the Tenth International Conference of Machine Learning, 236-243, University of Massachusetts, Amherst. Morgan Kaufmann.

Теперь давайте создадим фрейм данных, используя pd.Dataframe.

Мы видим, что целевое значениеMEDV отсутствует в наборе данных. Итак, мы добавляем новый столбец в набор данных для цели.

Теперь наш набор данных готов к предварительной обработке данных.

Предварительная обработка данных. При предварительной обработке данных мы проверяем, есть ли в наборе данных какое-либо значение NAN, нулевое значение или отсутствующее значение. Для этого мы посчитаем недостающее значение для каждой функции следующим образом:

Теперь перейдем к статистическому и графическому анализу данных. На этом этапе с помощью визуализации мы попытаемся изучить связь между целевой переменной и функциями.

Давайте сначала проверим, нормально ли распределены данные нашей целевой переменной?

Теперь мы можем ясно видеть, что наши данные нормально распределены, но имеют некоторые выбросы. Что такое выброс???

Википедия: В статистике выброс — это точка наблюдения, удаленная от других наблюдений.

По определению мы можем видеть, что есть некоторые данные, которые отделены от толпы.

Далее мы проверяем корреляцию между переменными с помощью матрицы корреляции. Эта матрица отображает корреляцию между всеми возможными парами значений в таблице. Его можно сформировать с помощью функции corr(). Для построения корреляционной матрицы мы будем использовать функцию heatmap() из библиотеки seaborn.

Коэффициент корреляции лежит в пределах от -1 до +1. Он количественно определяет силу и направление связи между двумя числовыми переменными. Если значение близко к 1, это просто означает, что существует сильная положительная корреляция между двумя переменными, а если значение близко к -1, переменные имеют сильную отрицательную корреляцию.

Глядя на корреляционную матрицу, мы можем наблюдать следующее:

  • Функции значений RAM и MEDV сильно коррелируют друг с другом, поэтому мы не можем выбрать обе функции вместе для обучения модели.
  • Признаки AGE и DIS имеют отрицательную корреляцию со значением -0,75.
  • RM имеет сильную положительную корреляцию с MEDV (0,7), а STATS имеет сильную отрицательную корреляцию с MEDV(-0,74)

Наконец, мы выбираем две функции: RM, STATS. Теперь нарисуем точечный график с линейной моделью.

Подготовьте данные для обучения модели

Теперь подготовьте данные с двумя функциями.

Разделите данные на наборы для обучения и тестирования.

Здесь мы собираемся разделить набор данных на наборы для обучения и тестирования. Мы протестируем модель с 20% набора данных, а остальные будем использовать для обучения модели.

Тестирование и обучение модели

Мы будем использовать линейную регрессию для обучения модели.

Точность модели со статистикой R2

Точность модели будем проверять по R2 — баллу. Он обеспечивает меру соответствия. Это просто означает, насколько набор данных подходит для нашей модели.

The model performance for training set
--------------------------------------
R2 score is 0.6300745149331701


The model performance for testing set
--------------------------------------
R2 score is 0.6628996975186954

Спасибо за прочтение 🙏

Приятного обучения 😃

Вы можете оставить комментарий или поделиться этим сообщением. Подпишитесь на меня для будущих публикаций….

Если вам понравилась эта статья, вам могут понравиться и другие статьи.