Добавил:
Я за два дня прошел весь курс ТВиМС Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3zad

.py
Скачиваний:
0
Добавлен:
20.06.2025
Размер:
1.52 Кб
Скачать
import 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()
Соседние файлы в предмете Программирование на Python