kamyshov_danila_lab_1 is done #262

Merged
Alexey merged 1 commits from kamyshov_danila_lab_1 into main 2023-12-07 15:06:06 +04:00
4 changed files with 114 additions and 0 deletions

View File

@ -0,0 +1,61 @@
from flask import Flask, request, render_template
from sklearn.datasets import make_moons
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.neural_network import MLPRegressor
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html')
@app.route('/compare_models', methods=['POST'])
def compare_models():
# Генерация данных
rs = 0
X, y = make_moons(noise=0.3, random_state=rs)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=rs)
# Линейная регрессия
lr = LinearRegression()
lr.fit(X_train, y_train)
lr_score = lr.score(X_test, y_test)
# Полиномиальная регрессия (степень 3)
poly = PolynomialFeatures(degree=3)
X_poly = poly.fit_transform(X_train)
poly_reg = LinearRegression()
poly_reg.fit(X_poly, y_train)
poly_score = poly_reg.score(poly.transform(X_test), y_test)
# Многослойный персептрон (100 нейронов в скрытом слое, alpha=0.01)
mlp = MLPRegressor(hidden_layer_sizes=(100,), alpha=0.01, random_state=rs)
mlp.fit(X_train, y_train)
mlp_score = mlp.score(X_test, y_test)
# Создание графиков
plt.figure(figsize=(15, 4))
plt.subplot(131)
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=plt.cm.RdBu)
plt.title('Линейная регрессия\n(Score: {:.2f})'.format(lr_score))
plt.subplot(132)
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=plt.cm.RdBu)
plt.title('Полиномиальная регрессия\n(Score: {:.2f})'.format(poly_score))
plt.subplot(133)
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=plt.cm.RdBu)
plt.title('Многослойный персептрон\n(Score: {:.2f})'.format(mlp_score))
plt.tight_layout()
plt.savefig('static/models_comparison.png')
return render_template('index.html', result=True)
if __name__ == '__main__':
app.run(debug=True)

View File

@ -0,0 +1,29 @@
Общее задание:
Используя код из пункта «Регуляризация и сеть прямого распространения» из [1] (стр. 228), сгенерируйте определенный тип данных и
сравните на нем 3 модели (по варианту). Постройте графики, отобразите качество моделей, объясните полученные результаты.
13 вариант:Данные: make_moons (noise=0.3, random_state=rs)
Модели:
· Линейную регрессию
· Полиномиальную регрессию (со степенью 3)
43
· Многослойный персептрон со 100-а нейронами в скрытом слое (alpha
= 0.01)
Чтобы Запустить приложение нужно запустить файл app.py
Технологии:
Язык программирования: Python
Фреймворк: Flask (для веб-приложения)
Библиотеки: NumPy, scikit-learn, Matplotlib
Описание программы:
Программа представляет собой веб-приложение, реализованное с использованием Flask. Она генерирует данные, используя make_moons из scikit-learn, и сравнивает три модели машинного обучения: линейную регрессию, полиномиальную регрессию степени 3 и многослойный персептрон с 100 нейронами в скрытом слое и параметром регуляризации alpha=0.01.
Входные данные:
Данные, сгенерированные с использованием make_moons (noise=0.3, random_state=0).
Выходные данные:
Веб-страница с кнопкой "Сравнить модели".
После нажатия кнопки выводятся графики, представляющие результаты трех моделей (линейной регрессии, полиномиальной регрессии и многослойного персептрона) с соответствующими оценками (score). Графики сохраняются и отображаются на веб-странице.

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

View File

@ -0,0 +1,24 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Сравнение моделей</title>
</head>
<body>
<h1>Сравнение моделей</h1>
<form action="/compare_models" method="POST">
<button type="submit">Сравнить модели</button>
</form>
<br>
{% if result %}
<h2>Графики моделей</h2>
<div style="display: flex; justify-content: space-around;">
<div>
<img src="static/models_comparison.png" alt="График линейной регрессии">
</div>
</div>
{% endif %}
</body>
</html>