IIS_2023_1/savenkov_alexander_lab_4/app.py

49 lines
1.8 KiB
Python
Raw Normal View History

2023-10-24 18:59:32 +04:00
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)