Алгоритмы машинного обучения: базовый курс - страница 38



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


Примеры использования линейной и логистической регрессии

Разберем два примера: первый – применение линейной регрессии для предсказания стоимости квартиры, второй – использование логистической регрессии для классификации пассажиров «Титаника» на выживших и погибших.

Пример 1: Линейная регрессия для предсказания стоимости квартиры

Допустим, у нас есть данные о квартирах, включая площадь, количество комнат и удаленность от центра города. Наша цель – предсказать стоимость квартиры на основе этих параметров.

Шаг 1: Загрузка данных и подготовка

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

```python

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

from sklearn.model_selection import train_test_split

from sklearn.linear_model import LinearRegression

from sklearn.metrics import mean_absolute_error, mean_squared_error

# Создадим искусственный набор данных

data = {

'Площадь': [30, 45, 50, 60, 75, 90, 110, 150, 200, 250],

'Комнат': [1, 1, 2, 2, 3, 3, 4, 5, 6, 7],

'Удаленность_от_центра': [10, 8, 7, 5, 4, 3, 2, 1, 1, 1],

'Цена': [3.5, 5.0, 6.0, 7.5, 9.0, 11.0, 13.5, 18.0, 24.0, 30.0]

}

df = pd.DataFrame(data)

# Разделим данные на входные признаки (X) и целевую переменную (y)

X = df[['Площадь', 'Комнат', 'Удаленность_от_центра']]

y = df['Цена']

# Разделим выборку на обучающую и тестовую

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

```

Шаг 2: Обучение модели линейной регрессии

Создадим и обучим модель.

```python

# Создаем модель линейной регрессии

model = LinearRegression()

# Обучаем модель

model.fit(X_train, y_train)

# Предсказываем цены квартир на тестовых данных

y_pred = model.predict(X_test)

```

Шаг 3: Оценка качества модели

Оценим точность предсказаний, используя метрики MSE и MAE.

```python

mse = mean_squared_error(y_test, y_pred)

mae = mean_absolute_error(y_test, y_pred)

print(f"Среднеквадратичная ошибка (MSE): {mse:.2f}")

print(f"Средняя абсолютная ошибка (MAE): {mae:.2f}")

```

Шаг 4: Визуализация результатов

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

```python

plt.scatter(y_test, y_pred)

plt.xlabel("Фактическая цена (млн)")

plt.ylabel("Предсказанная цена (млн)")

plt.title("Сравнение предсказанных и реальных цен")

plt.show()

```

Вывод: если модель обучилась хорошо, точки на графике будут близки к диагональной линии, что указывает на точность предсказаний.

Пример 2: Логистическая регрессия для предсказания выживания на «Титанике»

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

Шаг 1: Загрузка и подготовка данных

Загрузим и обработаем известный набор данных Titanic.

```python

from sklearn.linear_model import LogisticRegression

from sklearn.preprocessing import StandardScaler

from sklearn.metrics import accuracy_score, classification_report

import seaborn as sns

# Загружаем данные Titanic

url = "https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv"