49 lines
1.8 KiB
Python
49 lines
1.8 KiB
Python
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)
|