Menu
CoddyTech

Метод fit

Урок 10 из 19 курса Введение в машинное обучение на Coddy.

 

Источник: Википедия

challenge icon

Задание

Сложно

Реализуйте метод fit и метод find_cluster_centroid. Метод find_cluster_centroid находит центроид для заданного списка точек (кластера). Инструкции по поиску центроида находятся в предыдущем уроке. Чтобы реализовать fit, следуйте этим инструкциям:

  1. Инициализация центроидов: Сначала выберите k точек из набора данных в качестве начальных центроидов. Чтобы пройти тесты, выбирайте 3-ю, 5-ю, 7-ю, 9-ю, … точки в качестве начальных центроидов (в зависимости от количества k точек)
  2. Назначение кластеров: Для каждой точки в наборе данных найдите ближайший центроид (используя меры расстояния, такие как евклидово расстояние) и отнесите точку к этому кластеру.
  3. Обновление центроидов: Как только все точки будут распределены по кластерам, пересчитайте центроиды, вычислив среднее арифметическое всех точек в каждом кластере.
  4. Повторение шагов 2 и 3: Вышеуказанные шаги повторяются до тех пор, пока центроиды не перестанут существенно меняться. Если расстояние между новым центроидом и предыдущим центроидом меньше 0.01, остановитесь

Как пройти тесты:

  • Сохраняйте центроиды в переменной self.centroids.
  • Если после нахождения новых центроидов общее расстояние между новыми центроидами и предыдущими меньше 0.01, оставьте предыдущие центроиды.
  • Порядок центроидов важен. Всегда перебирайте центроиды от начала до конца.
  • Тесты выведут self.centroids и проверят их правильность.

Попробуйте сами

def euclidian_distance(point_a, point_b):
    return (sum([(point_a[i] - point_b[i])**2 for i in range(len(point_a))]))**0.5


    
class KMeans:
    def __init__(self, k):
        self.k = k

    def find_cluster_centroid(self, cluster_points):
    # Напишите ваш код здесь

    def fit(self, X_train):
        # Напишите ваш код здесь
        self.centroids = ...
    
    def predict(self, X_test):
        pass

Все уроки раздела Введение в машинное обучение

Потренируйтесь самостоятельно: Онлайн-компилятор Python