Несколько классов
Часть раздела Обучение с учителем путешествия по Machine Learning на Coddy. Урок 19 из 58.
Лимон, лайм или апельсин? Логистическая регрессия справляется и с тремя классами. Вот новый фрукт, оказавшийся между лимонами и апельсинами:
model = LogisticRegression(max_iter=1000)
model.fit(X, kind) # X: диаметр, вес; kind: лимон, лайм или апельсин
print(model.classes_)
print(np.round(model.predict_proba([[6.7, 144]]), 2))
print(model.predict([[6.7, 144]]))Это выводит:
['lemon' 'lime' 'orange']
[[0.61 0. 0.39]]
['lemon']Каждая строка содержит по одной вероятности для каждого класса, в порядке classes_, и их сумма равна 1. predict выбирает наибольшую.
Итак, модель показывает, насколько она уверена: 61% для лимона — это спорный результат, который стоит перепроверить.
Задание
СреднеПриложение для подкастов относит новые выпуски к комедии, новостям или тру-крайму. В стартовом коде обучается LogisticRegression на данных из episodes.csv (длительность, число говорящих, смех в минуту), а новый выпуск считывается в episode — таблицу с одной строкой.
Заверши describe(episode):
- Выведи вероятность каждого типа шоу в порядке
model.classes_, округлив до целого процента. - Верни наиболее вероятный тип.
Для выпуска из другого приложения:
comedy: 12%
news: 70%
true crime: 18%
Best guess: newsПопробуйте сами
import pandas as pd
from sklearn.linear_model import LogisticRegression
episodes = pd.read_csv("episodes.csv")
features = ["length_min", "speakers", "laughs_per_min"]
model = LogisticRegression(max_iter=1000)
model.fit(episodes[features], episodes["show_type"])
# Выводит вероятность каждого типа шоу для одного эпизода (таблица с одной строкой), затем возвращает наиболее вероятный тип
def describe(episode):
# Напишите здесь свой код
return "unknown"
# Не изменяйте строки ниже: новый эпизод из входных данных
length = float(input())
speakers = int(input())
laughs = float(input())
episode = pd.DataFrame({"length_min": [length], "speakers": [speakers], "laughs_per_min": [laughs]})
best = describe(episode)
print(f"Best guess: {best}")
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Обучение с учителем
1Ваша первая модель
Обучение на примерахОбучающая и тестовая выборкиОбучение и предсказаниеОценка моделиПовторение: сортировщик семян4Логистическая регрессия
Предсказания «да» или «нет»Порог принятия решенияВеса как свидетельстваНесколько классовПовторение: спам-фильтр2Метод ближайших соседей
Как работает k-NNВыбор kГраницы принятия решенийМасштабирование признаков для поиска соседейПовторение: соседи для вин5Оценка классификаторов
Матрица ошибокТочность и полнотаF1-мераНесбалансированные классыROC-кривыеПовторение: скрининговый тест8Кросс-валидация
K-блочная проверкаСправедливое сравнение моделейПоиск по сеткеПовторение: ремонт скейтбордов11Проект: виды пингвинов
Знакомство с пингвинамиПодготовка данныхВыбор моделиНастройка лучшей моделиЗапуск моделиПотренируйтесь самостоятельно: Онлайн-компилятор Python