Цель
-
Объясните формулу расстояния для алгоритма K-ближайших соседей.
-
Объясните значение гиперпараметра K и проблему значения алгоритма K-ближайшего соседа.
-
Объясните преимущества и недостатки алгоритма K-ближайшего соседа.
-
Классификация с использованием KNeighborsClassifier
-
Понимать точность критериев оценки алгоритмов классификации
-
Приложение: предсказание местоположения регистрации в Facebook.
K-ближайшие соседи (KNN)
определение
Если большинство из k наиболее похожих выборок в пространстве признаков (то есть ближайших соседей в пространстве признаков) принадлежат к определенной категории, то выборка также принадлежит к этой категории, то есть из ваших «соседей» делается вывод, что ты из категории
Источник: Алгоритм KNN был впервые предложен Ковером и Хартом в качестве алгоритма классификации.
формула расстояния
Расстояние между двумя образцами можно рассчитать по следующей формуле, также называемой евклидовым расстоянием.
Манхэттенское расстояние Абсолютное расстояние
расстояние Минковского
анализ жанра кино
Предположим, у нас есть несколько фильмов
в? Нет. Фильмы не знаю категории, как предсказать? Мы можем использовать идею алгоритма K-ближайших соседей
проблема
Что делать, если количество последних снятых фильмов отличается? Каков будет результат?
Если значение k слишком велико, влияние дисбаланса выборки
Если значение k слишком мало, на него легко влияют аномальные точки.
В сочетании с предыдущими данными объекта знакомств проанализируйте, какую обработку должен выполнять алгоритм k-ближайшего соседа.
Безразмерная обработка
Рекомендуемый стандарт также
Обработка инженерных признаков данных алгоритма K-ближайших соседей
В сочетании с предыдущими данными объекта знакомств проанализируйте, какую обработку должен выполнять алгоритм K-ближайшего соседа.
API алгоритма K-ближайших соседей
-
sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,algorithm='auto')
-
n_neighbors : int, необязательный (по умолчанию = 5), k_neighbors запрашивает количество используемых по умолчанию соседей
-
алгоритм: {'auto', 'ball_tree', 'kd_tree', 'brute'}, необязательный алгоритм для вычисления ближайших соседей: 'ball_tree' будет использовать BallTree, 'kd_tree' будет использовать KDTree. 'auto' попытается выбрать наиболее подходящий алгоритм на основе значения, переданного методу подгонки. (разные реализации влияют на эффективность)
-
Случай 1 Прогноз видов ириса
Введение в набор данных
Набор данных Iris — это широко используемый классификационный экспериментальный набор данных, собранный Фишером в 1936 году. Ирис, также известный как набор данных цветка ириса, представляет собой тип набора данных для многомерного анализа. Конкретное введение в набор данных:
шаг
-
получить данные
-
Разделение набора данных
-
разработка функций
- стандартизация
-
Обучение машинному обучению Процесс прогнозирования KNN
-
Оценка модели
код
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler
def knn_iris():
# 1) 获取数据
iris = load_iris()
# 2) 数据集划分
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=22)
# 3) 特征工程 标准化
transfer = StandardScaler()
# 训练集做标准化
x_train = transfer.fit_transform(x_train)
# 测试集 标准化 转化
x_test = transfer.transform(x_test)
# 4) KNN 预估器流程
estimator = KNeighborsClassifier(n_neighbors=3)
estimator.fit(x_train, y_train)
# 5) 模型评估
# 方法一:直接比对真实值和预测值
y_predict = estimator.predict(x_test)
print("预测(y_predict):\n", y_predict)
print("直接比对真实值和预测值:\n", y_test == y_predict)
# 方法二:计算准确率
score = estimator.score(x_test, y_test)
print("准确率为:\n", score)
return None
if __name__ == '__main__':
knn_iris()
K-ближайший сосед
преимущество
Простой, понятный, простой в реализации, не требует обучения
недостаток
-
Ленивый алгоритм, большой объем вычислений и большие накладные расходы памяти при классификации тестовых образцов
-
Необходимо указать значение K. Если значение K выбрано неправильно, точность классификации не может быть гарантирована.
-
Сценарии использования: сценарии с небольшими данными, от тысяч до десятков тысяч образцов, конкретные сценарии и определенные сервисы для тестирования.