Предсказания «да» или «нет»
Часть раздела Обучение с учителем путешествия по Machine Learning на Coddy. Урок 16 из 58.
В этой главе мы отвечаем на вопросы «да» или «нет» с помощью вероятностей. В конце вас ждёт созданный вами спам-фильтр, который ранжирует электронные письма так:
Будет ли отменено бронирование в ресторане? LogisticRegression учится на 60 прошлых бронированиях: за сколько дней бронировали заранее и было ли бронирование отменено (1) или состоялось (0):
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, как и положено вероятностям.
Задание
СреднеКлуб любителей воздушных змеев бронирует три временных интервала для запусков на завтра. В kites.csv содержатся данные о 90 прошлых запусках: wind_kmh и flew — 1, если воздушный змей взлетел. Программа считывает прогноз ветра для каждого интервала в slots.
- Обучи
LogisticRegression(max_iter=1000) на данных о скорости ветра. - Выведи вероятность полёта для каждого интервала в целых процентах.
- Выведи ожидаемое количество полётов: сумму вероятностей (с точностью до 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})
# Напишите свой код ниже
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Обучение с учителем
1Ваша первая модель
Обучение на примерахОбучающая и тестовая выборкиОбучение и предсказаниеОценка моделиПовторение: сортировщик семян4Логистическая регрессия
Предсказания «да» или «нет»Порог принятия решенияВеса как свидетельстваНесколько классовПовторение: спам-фильтр2Метод ближайших соседей
Как работает k-NNВыбор kГраницы принятия решенийМасштабирование признаков для поиска соседейПовторение: соседи для вин5Оценка классификаторов
Матрица ошибокТочность и полнотаF1-мераНесбалансированные классыROC-кривыеПовторение: скрининговый тест8Кросс-валидация
K-блочная проверкаСправедливое сравнение моделейПоиск по сеткеПовторение: ремонт скейтбордов11Проект: виды пингвинов
Знакомство с пингвинамиПодготовка данныхВыбор моделиНастройка лучшей моделиЗапуск моделиПотренируйтесь самостоятельно: Онлайн-компилятор Python