IIS_2023_1/degtyarev_mikhail_lab_4/main.py

42 lines
1.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import pandas as pd
from sklearn.preprocessing import LabelEncoder
from sklearn.manifold import TSNE
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
import seaborn as sns
# Загрузка данных
data = pd.read_csv("ds_salaries.csv")
# Преобразование категориальных переменных в числовые
le = LabelEncoder()
data['company_location'] = le.fit_transform(data['company_location'])
data['company_size'] = le.fit_transform(data['company_size'])
# Выбор нужных признаков
features = ['company_location', 'company_size']
# Применение t-SNE для уменьшения размерности
tsne = TSNE(n_components=2, random_state=42)
data_tsne = tsne.fit_transform(data[features])
# Кластеризация данных
kmeans = KMeans(n_clusters=3, random_state=42)
labels = kmeans.fit_predict(data_tsne)
# Создание датафрейма с новыми координатами и метками кластеров
data_tsne_df = pd.DataFrame(data=data_tsne, columns=['Dimension 1', 'Dimension 2'])
data_tsne_df['Cluster'] = labels
# Добавление номера кластера в исходные данные
data['Cluster'] = labels
# Визуализация
plt.figure(figsize=(10, 6))
sns.scatterplot(x='Dimension 1', y='Dimension 2', hue='Cluster', data=data_tsne_df, palette='viridis', s=50)
plt.title('t-SNE Clustering of Companies')
plt.show()
# Вывод номера кластера в исходных данных
print(data[['company_location', 'company_size', 'Cluster']])