Menu
CoddyTech

Предсказания «да» или «нет»

Часть раздела Обучение с учителем путешествия по Machine Learning на Coddy. Урок 16 из 58.

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

Восемь электронных писем в виде столбцов, показывающих вероятность того, что они являются спамом: от 0.02 для «Мамы» до 0.97 для «КУПИ СЕЙЧАС». Столбцы выше пунктирной линии на отметке 0.5 окрашены в красный цвет: спам

Будет ли отменено бронирование в ресторане? LogisticRegression учится на 60 прошлых бронированиях: за сколько дней бронировали заранее и было ли бронирование отменено (1) или состоялось (0):

Шестьдесят бронирований в виде точек на уровнях 0 (состоялось) и 1 (отменено) в зависимости от числа дней до бронирования, а также оранжевая S-образная кривая, поднимающаяся от 0.07 до 0.93. Она показывает 0.09 для 3 дней и 0.72 для 40 дней

from sklearn.linear_model import LogisticRegression

model = LogisticRegression(max_iter=1000)  # достаточно шагов для завершения обучения
model.fit(X, cancelled)  # X: количество дней до события, один столбец
print(np.round(model.predict_proba([[3], [40]]), 2))

Это выводит:

[[0.91 0.09]
 [0.28 0.72]]

В строке каждого бронирования указана вероятность класса 0, а затем класса 1. [:, 1] оставляет вероятности класса 1 — отмены.

Они следуют S-образной кривой: никогда не опускаются ниже 0 и не поднимаются выше 1, как и положено вероятностям.

challenge icon

Задание

Средне

Клуб любителей воздушных змеев бронирует три временных интервала для запусков на завтра. В kites.csv содержатся данные о 90 прошлых запусках: wind_kmh и flew — 1, если воздушный змей взлетел. Программа считывает прогноз ветра для каждого интервала в slots.

  1. Обучи LogisticRegression (max_iter=1000) на данных о скорости ветра.
  2. Выведи вероятность полёта для каждого интервала в целых процентах.
  3. Выведи ожидаемое количество полётов: сумму вероятностей (с точностью до 1 знака после запятой).

Для другого клуба:

6 km/h: 9% chance the kite flies
18 km/h: 64% chance the kite flies
30 km/h: 97% chance the kite flies
Expected flights: 1.7 of 3

Попробуйте сами

import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression

# 90 прошлых запусков: скорость ветра в km/h и flew (1, если воздушный змей поднялся в воздух)
kites = pd.read_csv("kites.csv")
# Три времени запуска на завтра с учётом прогноза ветра
winds = []
for i in range(3):
    winds.append(int(input()))
slots = pd.DataFrame({"wind_kmh": winds})

# Напишите свой код ниже
quiz iconПроверьте себя

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

Все уроки раздела Обучение с учителем

Потренируйтесь самостоятельно: Онлайн-компилятор Python