41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
|
import pandas
|
|||
|
from sklearn.manifold import TSNE
|
|||
|
from sklearn.cluster import KMeans
|
|||
|
import matplotlib.pyplot as plt
|
|||
|
from sklearn.preprocessing import StandardScaler
|
|||
|
from matplotlib.colors import ListedColormap
|
|||
|
|
|||
|
#Данные
|
|||
|
data = pandas.read_csv('clean_data.csv')
|
|||
|
|
|||
|
#Приведение строчных значений к числовым
|
|||
|
#work
|
|||
|
factorized_data_work, unique_values_work = pandas.factorize(data['work'])
|
|||
|
data['work'] = factorized_data_work
|
|||
|
#gymtime
|
|||
|
factorized_data_gymtime, unique_values_gymtime = pandas.factorize(data['gymtime'])
|
|||
|
data['gymtime'] = factorized_data_gymtime
|
|||
|
|
|||
|
#Отбор нужных столбцов
|
|||
|
x = data[['age', 'weight', 'work', 'phy_health', 'phy_ex' 'gymtime']]
|
|||
|
|
|||
|
#Нормализация данных
|
|||
|
scaler = StandardScaler()
|
|||
|
x_norm = scaler.fit_transform(x)
|
|||
|
|
|||
|
#Выбор количества кластеров
|
|||
|
n_clusters = 3
|
|||
|
|
|||
|
#Кластеризация с использованием KMeans
|
|||
|
kmeans = KMeans(n_clusters=n_clusters, init='k-means++', random_state=42)
|
|||
|
target = kmeans.fit_predict(x_norm)
|
|||
|
|
|||
|
#t-SNE для визуализации результатов и кластеризации
|
|||
|
tsne = TSNE(n_components=2, random_state=42)
|
|||
|
x_tsne = tsne.fit_transform(x_norm)
|
|||
|
|
|||
|
# Вывод результатов
|
|||
|
plt.scatter(x_tsne[:, 0], x_tsne[:, 1], c=target, cmap=ListedColormap(['#8b00ff', '#ff294d', '#77dd77']))
|
|||
|
plt.title('t-SNE кластеризация')
|
|||
|
plt.savefig("t-SNE.png")
|