Алгоритм машинного обучения-классификации-алгоритм K-ближайшего соседа

машинное обучение

Цель

  • Объясните формулу расстояния для алгоритма 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 выбрано неправильно, точность классификации не может быть гарантирована.

  • Сценарии использования: сценарии с небольшими данными, от тысяч до десятков тысяч образцов, конкретные сценарии и определенные сервисы для тестирования.