Алгоритмы машинного обучения: базовый курс. Тайлер Венс

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


Скачать книгу
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()

      ```

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

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

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


Скачать книгу