3 Решение задачи классификации. Алгоритм классификации k ближайших соседей Задача на практику
Скачать 374.33 Kb.
|
Алгоритм классификации k ближайших соседейЗадача на практикуПродолжая изучать материалы, привезенные ассистентом из экспедиции в Африку, профессор Буковски обнаружил результаты похожих исследований японского ученого Какая Икота. Профессор Икота, изучая обезьян, выделил 4 класса: Лемуры, Шимпанзе, Гориллы, Орангутанги. Каждый вид характеризуется определенным средним значением роста и веса. Экспериментальные данные профессора Икота представлены в виде таблицы:
Профессору Буковски требуется определить, к какому виду относятся обезьяны, изученные его ассистентом во время экспедиции. Для решения этой задачи Буковски собирается использовать алгоритм k ближайших соседей. Алгоритм k ближайших соседейПусть у нас имеется матрица объектов X. Каждая строка таблицы описывает отдельный объект. Каждый столбец таблицы описывает определенный признак объекта (рост, вес и т.п.). Кроме того, в матрице есть еще один столбец, описывающий класс, к которому принадлежит объект (см. рисунок ниже). Пусть имеется объект obj, обладающий набором признаков, который необходимо отнести к заданному классу. Например, в нашем случае, obj будет представлять собой отдельную особь с признаками «рост» и «вес». Чтобы определить, к какому классу принадлежит объект, нужно найти k ближайших к нему соседей (точек) и посмотреть, какой класс у этих соседей встречается чаще всего. Этому классу и будет принадлежать наш классифицируемый объект. Измеряем расстояние от объекта obj до каждого объекта в матрице X. Сортируем полученные значения в порядке увеличения расстояния (в начале будут объекты наиболее близкие к obj, в конце – наиболее удаленные). Берем первые k объектов из отсортированного списка, определяем, какой класс встречается там чаще всего. Именно этому классу и принадлежит наш объект obj. Порядок решения задачиОткрыть для редактирования файл run.py. Заполнить матрицу X экспериментальными данными, собранными профессором Икота. Следует обратить внимание, что последним столбцом в этой матрице будет столбец с номером класса (от 1 до 4), к которому принадлежит данная особь. Пользуясь функцией input, попросить пользователя ввести рост и вес особи, которую необходимо классифицировать. Результаты пользовательского ввода сохранить в переменных height и weight соответственно. Открыть для редактирования файл kNN.py. Необходимо полностью реализовать функцию k_nearest, основываясь на комментариях TODO, приведенных в файле. Перед реализацией ознакомиться с алгоритмом классификации k ближайших соседей. В комментариях приведены функции, которые могут потребоваться для решения задачи. Следует использовать команду help(‘<функция>’) для получения справки по функции и использовать командное окно для экспериментов. Взять результаты, собранные ассистентом профессора Буковски (см. предыдущую практику), и выполнить классификацию не менее 5 особей с помощью реализованного алгоритма классификации. Убедиться в достоверности результатов. Продемонстрировать. |