
Добавил:
renka1
Я за два дня прошел весь курс ТВиМС
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:3zad
.pyimport matplotlib.pyplot as plt
from sklearn.cluster import KMeans
import numpy as np
# Читаем данные из файла
data = []
with open("3_1.txt", "r") as f:
for line in f:
r, v = map(int, line.split())
data.append([r, v])
X = np.array(data)
# Кластеризация
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)
# Ввод новой точки
print("Введите координаты точки:")
x = float(input("x: "))
y = float(input("y: "))
# Определяем кластер для новой точки
cluster = kmeans.predict([[x, y]])[0]
# Визуализация
plt.figure(figsize=(8, 6))
# Цвета для кластеров
colors = ['#1f77b4', '#2ca02c', '#ff7f0e'] # голубой, зеленый, оранжевый
# Отображаем точки каждого кластера отдельно для создания легенды
for i in range(3):
mask = kmeans.labels_ == i
plt.scatter(X[mask, 0], X[mask, 1], c=colors[i], label=f'Кластер {i}')
# Центры кластеров
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1],
color='red', marker='x', s=200, label='Центры кластеров')
# Новая точка
plt.scatter(x, y, color='black', marker='*', s=200, label=f'Новая точка (кластер {cluster})')
plt.title('Результаты кластеризации')
plt.legend()
plt.show()