В наших предыдущих статьях мы обсуждали три системы машинного обучения и говорили о линейной регрессии. В этой статье мы сосредоточимся на простой линейной регрессии. Мы дадим краткое объяснение этого, а затем продемонстрируем, как применить его к реальным данным. К концу этой статьи у вас будет четкое представление о простой линейной регрессии и о том, как ее можно использовать для прогнозирования наборов данных.

Если вы не читали предыдущую статью, пришло время взглянуть на нее «Линейная регрессия стала проще: все, что вам нужно знать, чтобы начать»

Что такое регрессия?

Регрессионный анализ – это метод прогнозного моделирования, который исследует взаимосвязь между зависимой и независимой переменной.

Типы регрессии

Линейная регрессия

Логистическая регрессия

Полиномиальная регрессия

Пошаговая регрессия

В простой линейной регрессии, описанной в предыдущей статье, если вы нарисуете связь между зависимой и независимой переменной в двумерном пространстве, вы получите прямую линию.

Давайте рассмотрим сценарий, в котором мы хотим определить линейную зависимость между площадью дома в квадратных футах и ​​ценой продажи дома. Когда нам даны квадратные футы дома, можем ли мы оценить, сколько денег можно продать?

Мы знаем, что формула линии регрессии в основном выглядит следующим образом: y = mx + b,где y – прогнозируемая целевая метка, m – наклон линии, а b – точка пересечения y.

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

Линейная регрессия в Python с помощью Scikit-Learn:

В этом разделе мы узнаем, как использовать библиотеку Python Scikit-Learn для машинного обучения для реализации функций регрессии. Мы начнем с простой линейной регрессии, включающей две переменные. В этой задаче регрессии мы будем прогнозировать цену продажи на основе квадратных футов дома. Это простая задача линейной регрессии, поскольку в ней участвуют всего две переменные.

Используемые библиотеки:

Scikit-Learn. Это библиотека машинного обучения с открытым исходным кодом, используемая для различных алгоритмов, таких как регрессия, классификация и кластеризация.

seaborn :Seaborn означает визуализацию статистических данных, используемую для интерактивной визуализации.

NumPy — это библиотека Python, используемая для работы с массивами. Он также имеет функции для работы в области линейной алгебры, преобразования Фурье и матриц.

Pandas — это библиотека с открытым исходным кодом, предназначенная в основном для простой и интуитивно понятной работы с реляционными или размеченными данными. Он предоставляет различные структуры данных и операции для обработки числовых данных и временных рядов.

Matplotlib — это комплексная библиотека для создания статических, анимированных и интерактивных визуализаций в Python.

Установите библиотеки:

Pip установить sklearn

pip install numpy

pip install seaborn

pip install pandas

pip install matplotlib

Простая линейная регрессия:

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

Примечание. Прежде чем начать, я хотел бы поделиться своей ссылкой GITHUB, чтобы вы могли легко скопировать код и загрузить набор данных.

Импорт библиотек:

Импорт набора данных:

Чтение набора данных:

Чтение файла CSV (значения, разделенные запятыми) с именем «HousingPrices.csv» и создание объекта pandas DataFrame с именем «df» в Python. Объект DataFrame представляет собой двумерную таблицу, которая может хранить и обрабатывать данные в строках и столбцах.

Понимание данных:

Получите размеры объекта pandas DataFrame «df» в Python. Атрибут формы DataFrame возвращает кортеж, содержащий количество строк и столбцов DataFrame соответственно.

В нашем случае фрейм данных содержит 1460 строк и 2 столбца.

Отображать несколько строк :

Команда "df.head()" используется для отображения первых нескольких строк объекта pandas DataFrame "df" в Python. По умолчанию метод head() отображает первые 5 строк DataFrame, но мы можем передать количество строк в качестве аргумента, чтобы отобразить больше или меньше строк.

Этот метод полезен для быстрой проверки данных и проверки правильности их загрузки. Это также может помочь в выявлении любых потенциальных проблем или аномалий в данных, которые, возможно, необходимо устранить.

Пример выявления проблем с помощью этого метода:

Предположим, у нас есть DataFrame df, содержащий данные о населении разных городов страны, со столбцами для названия города, населения и площади. Предположим, что после отображения первых 5 строк мы заметили, что столбец населения содержит запятые и имеет строковый формат, что впоследствии может вызвать проблемы при вычислениях. Возможно, нам потребуется очистить данные, удалив запятые и преобразовав значения совокупности в целые числа или числа с плавающей запятой.

Расчет статистики нашего фрейма данных:

Метод «describe()» вычисляет различные статистические данные, такие как количество, среднее значение, стандартное отклонение, минимальное и максимальное значения и процентили для каждого числового столбца DataFrame.

По умолчанию метод describe() включает только числовые столбцы, но мы можем передать аргумент" include='all' ", чтобы включить все столбцы, включая нечисловые. столбцы.

Этот метод полезен для получения быстрого обзора данных и понимания распределения переменных. Мы можем использовать его для выявления потенциальных выбросов, проверки пропущенных значений и понимания центральной тенденции и изменчивости данных.

Визуализация данных:

Следующий код используется для создания точечной диаграммы с использованием библиотеки matplotlib в Python. Точечная диаграмма используется для визуализации связи между двумя переменными в DataFrame, в данном случае отношения между площадью недвижимости и ее продажной ценой.

Вот разбивка каждой строки кода:

df.plot(x=’SquareFeet’, y=’SalePrice’, style=’*’)

Эта строка кода создает точечную диаграмму, используя столбец SquareFeet в качестве оси X и столбец SalePrice в качестве оси Y. Параметр "style" используется для указания стиля маркера для каждой точки на графике, в данном случае это звездочка ("*").

plt.title('Квадратные футы против цены продажи')

Эта строка кода задает заголовок графика «Квадратные футы против цены продажи».

plt.xlabel('Квадратные футы')

plt.ylabel('Цена продажи')

Эти строки кода устанавливают метки для осей x и y соответственно.

plt.show()

Эта строка кода отображает график на экране.

Подготовка данных:

Разделение кадра данных pandas:

Этот код используется для разделения кадра данных pandas на два пустых массива — один массив, содержащий независимые переменные, и другой массив, содержащий зависимую переменную.

Первая строка кода создает пустой массив "X", содержащий все строки DataFrame, кроме последнего столбца, который считается зависимой переменной. Синтаксис «.iloc[:, :-1]» выбирает все строки (символ «:» перед запятой) и все столбцы, кроме последнего ( «:-1» после запятой).

Вторая строка кода создает пустой массив "y", содержащий значения зависимой переменной, которая считается вторым столбцом DataFrame (индекс 1). Синтаксис «.iloc[:, 1]» выбирает все строки (символ «:» перед запятой) и только второй столбец (индекс 1) кадра данных. .

Разделение тестовых и обучающих данных:

Этот код используется для разделения данных на наборы для обучения и тестирования в целях машинного обучения с помощью функции train_test_split из библиотеки Scikit-learn.

  • X и Y — независимые и зависимые переменные соответственно в формате массива numpy, которые должны быть разделены на наборы для обучения и тестирования.
  • test_size=0.2 указывает, что 20 % данных будут использоваться для тестирования, а 80 % — для обучения.
  • random_state=0 используется для обеспечения одинакового разделения данных при каждом запуске кода, что делает результаты воспроизводимыми.
  • X_train и y_train — это обучающие наборы для независимых и зависимых переменных соответственно.
  • X_test и y_test — это наборы тестов для независимых и зависимых переменных соответственно.

Получить оценку модели :

Оценка производительности модели машинного обучения является важным шагом в процессе машинного обучения. Это помогает нам гарантировать точность и надежность модели, сравнивать разные модели, настраивать параметры модели, обнаруживать переоснащение и сообщать другим о производительности модели.

Моделирование:

Эта строка кода создает экземпляр модели LinearRegression и сопоставляет ее с обучающими данными X_train и y_train с помощью метода fit(). Полученная подобранная модель сохраняется в переменной lr. Модель LinearRegression – это простая модель линейной регрессии, которая сопоставляет линейное уравнение с обучающими данными.
Затем подобранная модель передается в качестве аргумента функции get_cv_scores(), которая использует 10- сложите перекрестную проверку, чтобы оценить его производительность.

Найдите уравнение "y = mx + b":

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

Этап прогнозирования:

В этой строке кода используется обученная модель линейной регрессии (lr) для прогнозирования набора тестовых данных (X_test). Прогнозы хранятся в переменной y_pred.

Визуализация результатов обучения:

Эти три строки кода обеспечивают визуальное представление того, насколько хорошо обученная модель линейной регрессии соответствует обучающим данным и насколько хорошо она предсказывает тестовые данные. Если прогнозы точно соответствуют фактическим данным обучения, это говорит о том, что модель хорошо работает и на тестовых данных.

Сравнение фактических и прогнозируемых значений:

Эти две строки кода создают Pandas DataFrame, который сравнивает фактические и прогнозируемые значения целевой переменной для набора тестовых данных.

Первая строка кода создает новый кадр данных Pandas с именем df с двумя столбцами: фактический и прогнозируемый. Столбец Actual содержит фактические значения целевой переменной (y_test), а столбец Predicted содержит прогнозируемые значения целевой переменной (y_pred).

Во второй строке показаны первые 5 строк кадра данных с именем "df".

Ошибки вычисления:

Средняя абсолютная ошибка — это мера того, насколько прогнозируемые значения близки к фактическим значениям, при этом более низкие значения указывают на лучшую производительность.

Среднеквадратическая ошибка — это еще одна мера того, насколько близки прогнозируемые значения к фактическим значениям, при этом более низкие значения указывают на лучшую производительность. Однако, поскольку MSE возводится в квадрат, он имеет тенденцию придавать больший вес большим ошибкам.

Среднеквадратическая ошибка — это мера того, насколько близки прогнозируемые значения к фактическим значениям, при этом более низкие значения указывают на лучшую производительность. RMSE часто предпочтительнее MSE, потому что он находится в тех же единицах, что и целевая переменная, и его легче интерпретировать.

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

Это все для этой статьи, спасибо за чтение, надеюсь увидеть вас снова в следующей статье!