32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
|
import pandas as pd
|
|||
|
from sklearn.cluster import AgglomerativeClustering
|
|||
|
from sklearn.preprocessing import StandardScaler
|
|||
|
import matplotlib.pyplot as plt
|
|||
|
|
|||
|
# Чтение данных из датасета
|
|||
|
data = pd.read_csv("Clean Data_pakwheels.csv")
|
|||
|
# Уменьшение размера данных для оптимизации работы программы
|
|||
|
data = data.sample(frac=.01)
|
|||
|
|
|||
|
|
|||
|
# Для кластеризации выбираются признаки "Стоимость" и "Пробег"
|
|||
|
features = ['Price','Mileage']
|
|||
|
cluster_data = data[features]
|
|||
|
|
|||
|
X = data[features]
|
|||
|
|
|||
|
# Стандартизация данных
|
|||
|
standartSc = StandardScaler()
|
|||
|
X_scaled = standartSc.fit_transform(X)
|
|||
|
|
|||
|
# Кластеризация с разделением на 4 кластера
|
|||
|
cluster = AgglomerativeClustering(n_clusters=4, linkage='ward')
|
|||
|
data['cluster'] = cluster.fit_predict(X_scaled)
|
|||
|
|
|||
|
# Построение графика
|
|||
|
plt.scatter(X_scaled[:, 0], X_scaled[:, 1], c=data['cluster'])
|
|||
|
plt.xlabel('Стоимость')
|
|||
|
plt.ylabel('Пробег')
|
|||
|
plt.title('Кластеризация')
|
|||
|
plt.savefig(f"linkage.png")
|
|||
|
plt.show()
|