Смешанные столбцы
Часть раздела Обучение с учителем путешествия по Machine Learning на Coddy. Урок 46 из 58.
В большинстве таблиц есть и слова, и числа, и для каждого типа нужен свой шаг. ColumnTransformer направляет каждый столбец на свой шаг и объединяет результаты:
Для магазина пластинок в коде:
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
prep = ColumnTransformer([
("words", OneHotEncoder(), ["genre", "condition"]),
("numbers", StandardScaler(), ["price", "year"]),
])
pipe = make_pipeline(prep, LogisticRegression(max_iter=1000))Каждая запись — это имя, шаг и его столбцы. В отличие от get_dummies, кодировщик запоминает категории обучающей выборки, поэтому новая запись получает те же 7 столбцов.
Задание
СреднеШахматный клуб хочет знать шанс на победу каждого игрока перед партией. В заготовке разделяется chess.csv и считываются данные сегодняшней партии.
- Закодируй
openingиcolor, масштабируйrating_gapиminutesи выведи, сколько столбцов получится из обучающих строк. - Объедини это с логистической регрессией, обучи модель и выведи точность на тестовой выборке.
- Выведи шанс на победу в сегодняшней партии.
Другой клуб, три дебюта и sicilian, black, 50, 15:
Columns after preparing: 7
Test accuracy: 0.805
Win chance: 0.66Попробуйте сами
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
# Партии шахматного клуба: дебют, цвет фигур игрока, разница между его рейтингом
# и рейтингом соперника, минуты на часах и выиграл ли игрок (1) или нет (0)
games = pd.read_csv("chess.csv")
X = games[["opening", "color", "rating_gap", "minutes"]]
y = games["won"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
# Сегодняшняя партия — одна строка с теми же столбцами
game = pd.DataFrame({"opening": [input()], "color": [input()],
"rating_gap": [int(input())], "minutes": [int(input())]})
# Напишите свой код ниже
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Обучение с учителем
1Ваша первая модель
Обучение на примерахОбучающая и тестовая выборкиОбучение и предсказаниеОценка моделиПовторение: сортировщик семян4Логистическая регрессия
Предсказания «да» или «нет»Порог принятия решенияВеса как свидетельстваНесколько классовПовторение: спам-фильтр7Переобучение
Недообучение и переобучениеКривые обученияРегуляризацияПроверочные выборкиПовторение: настройка дерева10Конвейеры
КонвейерыСмешанные столбцыЗаполнение пропусков в конвейереНастройка конвейераПовторение: очистка данных и прогнозирование2Метод ближайших соседей
Как работает k-NNВыбор kГраницы принятия решенийМасштабирование признаков для поиска соседейПовторение: соседи для вин5Оценка классификаторов
Матрица ошибокТочность и полнотаF1-мераНесбалансированные классыROC-кривыеПовторение: скрининговый тест8Кросс-валидация
K-блочная проверкаСправедливое сравнение моделейПоиск по сеткеПовторение: ремонт скейтбордов11Проект: виды пингвинов
Знакомство с пингвинамиПодготовка данныхВыбор моделиНастройка лучшей моделиЗапуск моделиПотренируйтесь самостоятельно: Онлайн-компилятор Python