Реализация алгоритма регрессии k-ближайших соседей

PythonPythonBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом проекте вы научитесь реализовывать алгоритм регрессии k-ближайших соседей (KNN) с использованием Python. KNN - это широко используемый метод машинного обучения, обычно применяемый для задач классификации. Однако он также может быть применен к задачам регрессии, где целью является предсказание непрерывного целевого значения.

🎯 Задачи

В этом проекте вы научитесь:

  • Как понять алгоритм регрессии KNN и его принцип работы
  • Как реализовать алгоритм регрессии KNN на Python
  • Как вычислять евклидовы расстояния между тестовыми данными и данными обучения
  • Как определить k ближайших соседей и получить их целевые значения
  • Как вычислить среднее значение целевых значений k ближайших соседей для предсказания выходных данных для тестовых данных

🏆 Достижения

После завершения этого проекта вы сможете:

  • Реализовать алгоритм регрессии KNN с нуля с использованием Python
  • Использовать евклидово расстояние в качестве меры расстояния в алгоритме KNN
  • Применить алгоритм регрессии KNN для предсказания непрерывных целевых значений
  • Показать практические навыки в реализации алгоритмов машинного обучения

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/DataScienceandMachineLearningGroup(["Data Science and Machine Learning"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python/DataStructuresGroup -.-> python/lists("Lists") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/ModulesandPackagesGroup -.-> python/using_packages("Using Packages") python/DataScienceandMachineLearningGroup -.-> python/numerical_computing("Numerical Computing") python/DataScienceandMachineLearningGroup -.-> python/machine_learning("Machine Learning") subgraph Lab Skills python/lists -.-> lab-300234{{"Реализация алгоритма регрессии k-ближайших соседей"}} python/function_definition -.-> lab-300234{{"Реализация алгоритма регрессии k-ближайших соседей"}} python/using_packages -.-> lab-300234{{"Реализация алгоритма регрессии k-ближайших соседей"}} python/numerical_computing -.-> lab-300234{{"Реализация алгоритма регрессии k-ближайших соседей"}} python/machine_learning -.-> lab-300234{{"Реализация алгоритма регрессии k-ближайших соседей"}} end

Реализация алгоритма регрессии KNN

В этом шаге вы научитесь реализовывать алгоритм регрессии k-ближайших соседей (KNN) с использованием Python. Следуйте шагам ниже, чтобы завершить этот шаг:

  1. Откройте файл knn_regression.py в предпочитаемом редакторе кода.
  2. Найдите функцию knn(train_data, train_labels, test_data, k). Эта функция будет основной реализацией алгоритма регрессии KNN.
  3. Параметр train_data - это признаковые данные известных образцов, train_labels - это целевые значения известных образцов, test_data - это признаковые данные одного неизвестного образца, а k представляет количество ближайших соседей, используемых в алгоритме k-ближайших соседей.
  4. Внутри функции knn() начните с вычисления евклидовых расстояний между test_data и всеми тренировочными примерами. Вы можете использовать функции numpy.sqrt() и numpy.sum() для вычисления евклидовых расстояний.
distances = np.sqrt(np.sum((train_data - test_data) ** 2, axis=1))
  1. Затем получите индексы k ближайших соседей, отсортировав расстояния и взяв первые k индексов.
nearest_indices = np.argsort(distances)[:k]
  1. Получите метки k ближайших соседей с использованием nearest_indices.
nearest_labels = train_labels[nearest_indices]
  1. Вычислите среднее значение меток k ближайших соседей, чтобы получить предсказанное целевое значение для одного неизвестного образца test_data.
predicted_label = np.mean(nearest_labels)
  1. Округлите предсказанную метку до максимум двух десятичных знаков с использованием функции round().
predicted_label = round(predicted_label, 2)
  1. Наконец, верните предсказанное целевое значение для одного неизвестного образца test_data.
return predicted_label
  1. Сохраните файл knn_regression.py.
✨ Проверить решение и практиковаться

Тестирование алгоритма регрессии KNN

В этом шаге вы будете тестировать реализацию алгоритма регрессии KNN, запустив предоставленный пример.

Откройте файл knn_regression.py в редакторе кода.

Добавьте следующие тестовые случаи в конец файла:

if __name__ == "__main__":
    train_data = np.array(
        [[1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9], [10, 10]]
    )
    train_labels = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
    test_data = np.array([[1.2, 1.3]])

    result = knn(train_data, train_labels, test_data, k=3)
    print(result)

Запустите следующую команду, чтобы выполнить пример:

python3 knn_regression.py

Выходные данные должны быть предсказанным целевым значением для одного неизвестного образца, округленным до максимум двух десятичных знаков.

2.0

Поздравляем! Вы успешно реализовали алгоритм регрессии KNN и протестировали его с помощью предоставленного примера.

✨ Проверить решение и практиковаться

Резюме

Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.