Сегодня мы получили вторую лабораторную работу по курсу Python, содержащую два набора данных. Один со 150 записями ширины, высоты и метки. Один с 4 записями одних и тех же данных, без метки. И мы предполагаем реализовать упрощенный алгоритм машинного обучения, чтобы определить, Пичу это или Пикачу?

Сначала я испугался. Видимо, вчера в понедельник у нас был урок, на котором мы рассматривали словари, наборы и Matplotlib. Обычно у нас нет занятий в понедельник или среду, поэтому я устроился поудобнее и не стал проверять календарь. И сегодня нам предстоит «реализовать упрощенный алгоритм машинного обучения». Почему все так спокойно относились к этому заданию? Сколько я действительно пропустил? Неужели я недооценил первые несколько недель? Неужели я переоценил себя? Я нервничал, тревожился и немного боялся.

Я болел с воскресенья, поэтому присоединился к командам, и как только урок закончился, я отправился в лабораторию. Я методично начал перебирать шаги и довольно скоро понял, что преувеличил. Задание было сформулировано и представлено как расширенное, но оно было довольно простым:

  1. Я импортировал данные обучения из txt-файла с управлением контекстом и удалил символы новой строки. Разделение значений на списки внутри другого списка с возможностью понимания списка.
  2. Вставлен каждый список в список как строки во фрейме данных. Преобразуйте значения столбца в целые числа или числа с плавающей запятой.

3. Построили фрейм данных с помощью реляционного графика Сиборна. Отличительная этикетка по цвету. (Спасибо stackoverflow)

4. Повторил шаги 1 и 2 с тестовыми данными.

5. Рассчитали расстояние, вычитая значение каждого столбца тестовых данных из каждого значения столбца обучающих данных и возводя различия в степень 2. Складывая произведения друг с другом и возводя в половинную степень, квадратный корень.

6. Присвоение этих столбцов значений расстояний отдельным новым кадрам данных рядом с обучающими данными и выполнение метода .nsmallest() для поиска 10 ближайших соседей. Размещение этих 4 новых фреймов данных внутри списка.

7. Цикл по списку с перечислением и условием проверки количества заданных меток. Если у 5 или более соседей метка 1, он классифицируется как Пикачу. В противном случае это Пичу.

Процесс занял у меня чуть больше 7 часов. Это не самое эффективное решение. Но сейчас я почти прошел лабораторию. Оставшиеся 9 дней уйдут на то, чтобы научиться автоматизировать и оптимизировать алгоритм для более высокой оценки.

Спокойной ночи