kamyshov_danila_lab_1 is done
This commit is contained in:
parent
bcc00fa6a5
commit
c347dfc5b5
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