Метод fit
Урок 10 из 19 курса Введение в машинное обучение на Coddy.
Задание
СложноРеализуйте метод fit и метод find_cluster_centroid. Метод find_cluster_centroid находит центроид для заданного списка точек (кластера). Инструкции по поиску центроида находятся в предыдущем уроке. Чтобы реализовать fit, следуйте этим инструкциям:
- Инициализация центроидов: Сначала выберите
kточек из набора данных в качестве начальных центроидов. Чтобы пройти тесты, выбирайте 3-ю, 5-ю, 7-ю, 9-ю, … точки в качестве начальных центроидов (в зависимости от количестваkточек) - Назначение кластеров: Для каждой точки в наборе данных найдите ближайший центроид (используя меры расстояния, такие как евклидово расстояние) и отнесите точку к этому кластеру.
- Обновление центроидов: Как только все точки будут распределены по кластерам, пересчитайте центроиды, вычислив среднее арифметическое всех точек в каждом кластере.
- Повторение шагов 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
