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")
|