import pandas as pd from sklearn.cluster import KMeans from sklearn.preprocessing import StandardScaler import matplotlib.pyplot as plt # Загрузка данных data = pd.read_csv("train_bikes.csv", sep=',').dropna() # Выделение признаков (временные интервалы и количество аренды) X = data[['datetime', 'count']].copy() # Создаем копию DataFrame # Преобразование формата времени X['datetime'] = pd.to_datetime(X['datetime']) X['hour'] = X['datetime'].dt.hour # Выполнение кластеризации features = ['hour', 'count'] X_cluster = X[features] scaler = StandardScaler() X_scaled = scaler.fit_transform(X_cluster) # Используйтся .loc для избежания SettingWithCopyWarning X.loc[:, 'cluster'] = KMeans(n_clusters=3, random_state=42, n_init=10).fit_predict(X_scaled) # Визуализация результатов plt.scatter(X['hour'], X['count'], c=X['cluster'], cmap='viridis') plt.xlabel('Hour of Day') plt.ylabel('Bike Rentals') plt.title('Clustering of Time Intervals based on Bike Rentals') plt.show() # Анализ результатов cluster_summary = X.groupby('cluster')['count'].describe() print(cluster_summary)