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

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"

df = pd.read_csv(url)

# Оставляем только нужные колонки

df = df[['Survived', 'Pclass', 'Age', 'SibSp', 'Parch']]

# Удаляем строки с пропущенными значениями

df.dropna(inplace=True)

# Разделяем на признаки и целевую переменную

X = df[['Pclass', 'Age', 'SibSp', 'Parch']]

y = df['Survived']

# Стандартизация данных для улучшения качества модели

scaler = StandardScaler()

X_scaled = scaler.fit_transform(X)

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

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

```

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

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

```python

# Создаем модель логистической регрессии

log_model = LogisticRegression()

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

log_model.fit(X_train, y_train)

# Предсказываем выживаемость пассажиров

y_pred = log_model.predict(X_test)

```

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

Выведем метрики точности и классификационный отчет.

```python

accuracy = accuracy_score(y_test, y_pred)

print(f"Точность модели: {accuracy:.2f}")

print(classification_report(y_test, y_pred))

```

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

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

```python

feature_names = ['Pclass', 'Age', 'SibSp', 'Parch']

coefficients = log_model.coef_[0]

# Визуализируем влияние факторов

plt.figure(figsize=(8, 5))

sns.barplot(x=feature_names, y=coefficients)

plt.xlabel("Признаки")

plt.ylabel("Коэффициенты модели")

plt.title("Влияние факторов на вероятность выживания")

plt.show()

```

Вывод: если коэффициент у какого-то признака положительный, значит, этот фактор увеличивает вероятность выживания, а если отрицательный – снижает.

Сравнение и выводы

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

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

– Логистическая регрессия применяется в задачах классификации. Она предсказывает вероятность принадлежности к определенному классу, что полезно для медицинской диагностики, оценки риска отказа клиентов, предсказания выживаемости пассажиров и других задач.