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



