Алгоритмы машинного обучения: базовый курс. Тайлер Венс
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"
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()
```
Вывод: если коэффициент у какого-то признака положительный, значит, этот фактор увеличивает вероятность выживания, а если отрицательный – снижает.
Сравнение и выводы
Линейная и логистическая регрессия применяются в разных задачах, но оба метода имеют