Масштабирование признаков для поиска соседей
Часть раздела Обучение с учителем путешествия по Machine Learning на Coddy. Урок 9 из 58.
k-NN измеряет расстояние, поэтому признак с большими числовыми значениями перевешивает остальные, как предупреждалось в разделе 2. Здесь расстояние до реки в метрах затмевает высоту над уровнем моря:
Сначала выполните масштабирование. Обучите масштабировщик только на обучающих строках, затем преобразуйте оба набора:
scaler = StandardScaler()
X_train_s = scaler.fit_transform(X_train)
X_test_s = scaler.transform(X_test)
model = KNeighborsClassifier()
model.fit(X_train_s, y_train)
print(model.score(X_test_s, y_test))Это выводит 0.925, что больше, чем 0.6. Тестовые строки остаются невиданными: масштабировщик ничего у них не узнаёт.
Задание
ЛегкоУмный счётчик определяет работающий электроприбор по его мощности (в ваттах) и времени работы (в минутах), используя meter.csv. Стартовый код считывает k и выводит точность k-NN на необработанных признаках.
- Обучи
StandardScalerна строках обучающей выборки и преобразуй обе выборки. - Обучи модель k-NN с тем же k на масштабированных строках; выведи её точность с точностью до 3 знаков после запятой.
- Выведи прирост.
Для другого дома и k = 5:
Unscaled accuracy: 0.65
Scaled accuracy: 0.875
Scaling gains 0.225Попробуйте сами
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler
# Одна строка на каждый запуск прибора: мощность в ваттах, время работы в минутах, тип прибора
meter = pd.read_csv("meter.csv")
X = meter[["watts", "minutes"]]
y = meter["appliance"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
k = int(input())
# k-NN на исходных признаках
raw_model = KNeighborsClassifier(n_neighbors=k)
raw_model.fit(X_train, y_train)
raw = raw_model.score(X_test, y_test)
print(f"Unscaled accuracy: {round(raw, 3)}")
# Напишите свой код ниже
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Обучение с учителем
1Ваша первая модель
Обучение на примерахОбучающая и тестовая выборкиОбучение и предсказаниеОценка моделиПовторение: сортировщик семян4Логистическая регрессия
Предсказания «да» или «нет»Порог принятия решенияВеса как свидетельстваНесколько классовПовторение: спам-фильтр2Метод ближайших соседей
Как работает k-NNВыбор kГраницы принятия решенийМасштабирование признаков для поиска соседейПовторение: соседи для вин5Оценка классификаторов
Матрица ошибокТочность и полнотаF1-мераНесбалансированные классыROC-кривыеПовторение: скрининговый тест8Кросс-валидация
K-блочная проверкаСправедливое сравнение моделейПоиск по сеткеПовторение: ремонт скейтбордов11Проект: виды пингвинов
Знакомство с пингвинамиПодготовка данныхВыбор моделиНастройка лучшей моделиЗапуск моделиПотренируйтесь самостоятельно: Онлайн-компилятор Python