Merge pull request 'kamyshov_danila_lab_1 is done' (#262) from kamyshov_danila_lab_1 into main
Reviewed-on: http://student.git.athene.tech/Alexey/IIS_2023_1/pulls/262
This commit is contained in:
commit
3e7db1c1dd
61
kamyshov_danila_lab_1/app.py
Normal file
61
kamyshov_danila_lab_1/app.py
Normal 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)
|
29
kamyshov_danila_lab_1/readme.md
Normal file
29
kamyshov_danila_lab_1/readme.md
Normal 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). Графики сохраняются и отображаются на веб-странице.
|
BIN
kamyshov_danila_lab_1/static/models_comparison.png
Normal file
BIN
kamyshov_danila_lab_1/static/models_comparison.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 35 KiB |
24
kamyshov_danila_lab_1/templates/index.html
Normal file
24
kamyshov_danila_lab_1/templates/index.html
Normal 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>
|
Loading…
Reference in New Issue
Block a user