from flask import Flask, render_template import pandas as pd from scipy.cluster.hierarchy import linkage, dendrogram import seaborn as sns import io import base64 app = Flask(__name__) # Загрузка данных из файла games.csv data = pd.read_csv('games.csv') # Загрузка данных из файла games.csv data = pd.read_csv('games.csv') # Реализация кластеризации dendrogram def generate_dendrogram_image(): # Выбираем интересующие нас переменные для кластеризации features = data[['genres', 'price', 'platform', 'developer']] # Преобразовываем категориальные переменные в числовые (например, с помощью One-Hot Encoding) features = pd.get_dummies(features, columns=['genres', 'price', 'platform', 'developer']) # Вычисляем матрицу расстояний и строим dendrogram с использованием seaborn linkage_matrix = linkage(features, method='ward') dendrogram_data = dendrogram(linkage_matrix, no_plot=True) # Создаем изображение dendrogram с использованием seaborn sns.set(style='white') g = sns.clustermap(features, row_linkage=linkage_matrix, col_cluster=False, figsize=(24, 16)) # Сохраняем изображение в буфер img_buffer = io.BytesIO() g.savefig(img_buffer, format='png') img_buffer.seek(0) # Преобразуем изображение в base64 строку img_base64 = base64.b64encode(img_buffer.read()).decode() return img_base64 @app.route('/') def index(): dendrogram_image = generate_dendrogram_image() return render_template('dendrogram.html', dendrogram_image=dendrogram_image) if __name__ == '__main__': app.run(port=5000)