Назад к вопросам
JuniorТеорияЧасто
Что выведет эта программа?
import numpy as np
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler
X_train = np.array([[60, 40500], [27, 46000], [30, 90000], [65, 80000]])
y_train = np.array([0, 1, 1, 0])
x = np.array([[25, 40000]])
raw = KNeighborsClassifier(n_neighbors=1).fit(X_train, y_train)
scaler = StandardScaler().fit(X_train)
scaled = KNeighborsClassifier(n_neighbors=1).fit(scaler.transform(X_train), y_train)
print(raw.predict(x)[0], scaled.predict(scaler.transform(x))[0])0 1
- Ждать
0 0: масштабирование меняет расстояния, после него разница в 35 лет весит больше разницы в 6000, и ближайшей становится[27, 46000]класса1. - Ждать
1без масштабирования: разности дохода исчисляются тысячами, а возраста — десятками, поэтому соседа выбирает доход:[60, 40500]класса0.
- Почему масштабатор обучают только на обучающей выборке, а к новой точке лишь применяют?
- Изменится ли после такого же масштабирования предсказание дерева решений и почему?