#Питон #Python #K-means, К-средние Нужно написать алгоритм k-means для сортировки сгенерированных данных в питоне.
Перед этим заданием нужно было просто реализовать алгоритм в питоне. 1.Нужно было сгенерировать данные с функции random
2.выбрать два центра случайным образом
3.создать два начальных класса
4.Затем найти новые центры и перераспределить точки в соответствии с ними.
(это задание уже выполнено смотри код внизу)
Теперь нужно преобразовать код так, чтобы для класса была только одна переменная-список, то же самое касается центров и расстояний. То есть вместо distance1, distance2, должна быть только одна переменная distances (и для других тоже: classes, centers). Должен получиться код, в котором мы задаем только количество классов, а не создаем для каждого класса переменную.
Как нам объясняли, должно быть что-то типа такого:
k=3
centers = [ ]
for i in range(k):
centers[i]= points [random.randint(1, len(points)]
Всю эту красоту надо вывести на экран с matplotlib
Вот такой код надо преобразовать, или написать новый:
import matplotlib.pyplot as plt
import random
def main():
min_distance = 0.01
distance_center_1 = 10
distance_center_2 = 10
points = [(random.randint(1, 10), random.randint(1, 10)) for i in range(50)] + [(random.randint(15, 25), random.randint(15, 25)) for i in range(50)]
выбрать два центра случайным образом
class_center_1 = points[random.randint(1, len(points))]
class_center_2 = points[random.randint(1, len(points))]
i=0
while (distance_center_1 > min_distance) and (distance_center_2 > min_distance):
print(i)
class_1 = []
class_2 = []
pass
for e in range(len(points)):
distance_1 = euclidian_dist(class_center_1, points)
distance_2 = euclidian_dist(class_center_2, points)
if distance_1 <= distance_2:
class_1.append(points[e])
else:
class_2.append(points[e])
new_class_center_1 = get_centroid(class_1)
new_class_center_2 = get_centroid(class_2)
#расстояние между старым и новым центрами
distance_center_1 = euclidian_dist(class_center_1, new_class_center_1)
distance_center_2 = euclidian_dist(class_center_2, new_class_center_2)
class_center_1 = new_class_center_1
class_center_2 = new_class_center_2
plt.plot([p[0] for p in class1], [p[1] for p in class1], 'ro')
plt.plot([p[0] for p in class2], [p[1] for p in class2], 'go')
plt.show()
i += 1
plt.plot([p[0] for p in class1], [p[1] for p in class1], 'ro')
plt.plot([p[0] for p in class2], [p[1] for p in class2], 'go')
plt.show()
def euclidian_dist(p1, p2):
return ((p1[0] - p2[0]) ** 2 + (p1[1] - p2[1]) ** 2) ** (1 / 2)
def get_centroid(cluster):
centroids_id = [0,0]
for e in cluster:
centroids_id[0]= centroids_id [0]+ e[0]
centroids_id[1] = centroids_id[1] + e[1]
pass
centroids_id[0] = centroids_id[0]/len(cluster)
centroids_id[1] = centroids_id[1] /len(cluster)
return centroids_id
205
244
Ответы на вопрос:
Program n1; const n=13; var a: array [1..n] of integer; i,k,b: integer; begin randomize; k: =0; writeln('массив: '); for i: =1 to n do begin a[i]: =random(15); write(a[i],' '); end; writeln; write('введите b: '); readln(b); for i: =1 to n do if a[i]=b then k: =k+1; writeln('число ',b,' встречается в массиве ',k,' раз'); end.
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
nastyabel7227.06.2023 10:13
-
gavrilovanasta28.05.2023 23:05
-
катя12098106.11.2021 00:37
-
alik78103.12.2022 00:15
-
coolraynur12.02.2023 08:05
-
mskobetsnata19.09.2022 05:50
-
лилия58122.10.2022 02:57
-
inan22825.04.2020 23:19
-
ann0706kol01.01.2021 22:37
-
basovaolga6720.03.2022 04:29
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.