import numpy as np import pandas as pd from sklearn.cluster import KMeans import matplotlib.pyplot as plt from sklearn.metrics import silhouette_score # Загрузка данных data = pd.read_csv("F1DriversDataset.csv") # Выбор признаков для кластеризации features = ['Championships', 'Race_Entries', 'Race_Starts', 'Pole_Positions', 'Race_Wins', 'Podiums', 'Fastest_Laps'] X = data[features] # Применение алгоритма K-means k = 3 # количество кластеров kmeans = KMeans(n_clusters=k) kmeans.fit(X) # Оценка качества кластеризации (Индекс силуэта) silhouette_avg = silhouette_score(X, kmeans.labels_) print("Средний индекс силуэта: ", silhouette_avg, "\n") # Анализ полученных кластеров cluster_centers = kmeans.cluster_centers_ labels = kmeans.labels_ for i in range(k): cluster_indices = np.where(labels == i)[0] cluster_size = len(cluster_indices) print(f"Кластер {i+1}: {cluster_size} гонщиков") print("Средние значения признаков:") for j, feature in enumerate(features): print(f"{feature}: {cluster_centers[i][j]}") print() # Визуализация результатов кластеризации plt.scatter(X['Championships'], X['Race_Wins'], c=kmeans.labels_) plt.xlabel('Championships') plt.ylabel('Race_Wins') plt.title('K-means Clustering of F1 Drivers') plt.show()