Merge pull request 'volkov_rafael_lab_1 is done' (#249) from volkov_rafael_lab_1 into main
Reviewed-on: http://student.git.athene.tech/Alexey/IIS_2023_1/pulls/249
This commit is contained in:
commit
4748853b67
60
volkov_rafael_lab_1/app.py
Normal file
60
volkov_rafael_lab_1/app.py
Normal file
@ -0,0 +1,60 @@
|
||||
import numpy as np
|
||||
from flask import Flask, request, render_template
|
||||
from sklearn.datasets import make_circles
|
||||
from sklearn.neural_network import MLPClassifier
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.metrics import accuracy_score
|
||||
import matplotlib.pyplot as plt
|
||||
from mlxtend.plotting import plot_decision_regions
|
||||
|
||||
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_circles(noise=0.2, factor=0.5, random_state=rs)
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=rs)
|
||||
|
||||
# Персептрон
|
||||
perceptron = MLPClassifier(hidden_layer_sizes=(1,), max_iter=1000, alpha=0.01)
|
||||
perceptron.fit(X_train, y_train)
|
||||
perceptron_score = accuracy_score(y_test, perceptron.predict(X_test))
|
||||
|
||||
# Многослойный персептрон с 10-ю нейронами в скрытом слое
|
||||
mlp_10 = MLPClassifier(hidden_layer_sizes=(10,), max_iter=1000, alpha=0.01)
|
||||
mlp_10.fit(X_train, y_train)
|
||||
mlp_10_score = accuracy_score(y_test, mlp_10.predict(X_test))
|
||||
|
||||
# Многослойный персептрон со 100-ю нейронами в скрытом слое
|
||||
mlp_100 = MLPClassifier(hidden_layer_sizes=(100,), max_iter=1000, alpha=0.01)
|
||||
mlp_100.fit(X_train, y_train)
|
||||
mlp_100_score = accuracy_score(y_test, mlp_100.predict(X_test))
|
||||
|
||||
# Создание графиков
|
||||
plt.figure(figsize=(12, 4))
|
||||
|
||||
plt.subplot(131)
|
||||
plot_decision_regions(X_test, y_test, clf=perceptron, legend=2)
|
||||
plt.title('Персептрон\n(Accuracy: {:.2f})'.format(perceptron_score))
|
||||
|
||||
plt.subplot(132)
|
||||
plot_decision_regions(X_test, y_test, clf=mlp_10, legend=2)
|
||||
plt.title('MLP (10 нейронов)\n(Accuracy: {:.2f})'.format(mlp_10_score))
|
||||
|
||||
plt.subplot(133)
|
||||
plot_decision_regions(X_test, y_test, clf=mlp_100, legend=2)
|
||||
plt.title('MLP (100 нейронов)\n(Accuracy: {:.2f})'.format(mlp_100_score))
|
||||
|
||||
plt.tight_layout()
|
||||
|
||||
plt.savefig('static/models_comparison.png')
|
||||
|
||||
return render_template('index.html', result=True)
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(debug=True)
|
39
volkov_rafael_lab_1/readme.md
Normal file
39
volkov_rafael_lab_1/readme.md
Normal file
@ -0,0 +1,39 @@
|
||||
Общее задание:
|
||||
Используя код из пункта «Регуляризация и сеть прямого
|
||||
распространения» из [1] (стр. 228), сгенерируйте определенный тип данных и
|
||||
сравните на нем 3 модели (по варианту). Постройте графики, отобразите
|
||||
качество моделей, объясните полученные результаты.
|
||||
|
||||
8 вариант:
|
||||
Данные: make_circles (noise=0.2, factor=0.5, random_state=rs)
|
||||
Модели:
|
||||
- Персептрон
|
||||
· Многослойный персептрон с 10-ю нейронами в скрытом слое (alpha =
|
||||
0.01)
|
||||
· Многослойный персептрон со 100-а нейронами в скрытом слое (alpha
|
||||
= 0.01)
|
||||
|
||||
Запуск осуществляется через файл app.py
|
||||
|
||||
|
||||
Технологии:
|
||||
|
||||
Flask: Веб-фреймворк для Python, используется для создания веб-приложения.
|
||||
NumPy: Библиотека для работы с массивами и матрицами, используется для генерации данных.
|
||||
scikit-learn: Библиотека для машинного обучения, используется для построения и обучения моделей.
|
||||
Matplotlib: Библиотека для визуализации данных, используется для создания графиков.
|
||||
mlxtend: Библиотека для визуализации решающих границ.
|
||||
Описание работы программы:
|
||||
|
||||
При запуске приложения через Flask создается веб-сервер.
|
||||
Пользователь открывает веб-страницу, которая содержит кнопку "Compare Models".
|
||||
При нажатии на кнопку генерируются данные (make_circles) и тренируются три модели: Perceptron, MLP с 10 нейронами и MLP с 100 нейронами.
|
||||
Для каждой модели строятся графики с решающими границами и вычисляется точность модели на тестовых данных.
|
||||
Результаты (графики и точности) отображаются на веб-странице.
|
||||
Входные данные:
|
||||
|
||||
Нет явных входных данных от пользователя. Данные генерируются программой (make_circles).
|
||||
Выходные данные:
|
||||
|
||||
Визуализация решающих границ для трех моделей (Perceptron, MLP с 10 нейронами, MLP с 100 нейронами).
|
||||
Точность каждой модели на тестовых данных отображается на веб-странице.
|
BIN
volkov_rafael_lab_1/static/models_comparison.png
Normal file
BIN
volkov_rafael_lab_1/static/models_comparison.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 34 KiB |
38
volkov_rafael_lab_1/templates/index.html
Normal file
38
volkov_rafael_lab_1/templates/index.html
Normal file
@ -0,0 +1,38 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Model Comparison</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
}
|
||||
h1 {
|
||||
text-align: center;
|
||||
}
|
||||
.container {
|
||||
display: flex;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Model Comparison</h1>
|
||||
|
||||
{% if result %}
|
||||
<div class="container">
|
||||
<div class="model-container">
|
||||
<img src="{{ url_for('static', filename='models_comparison.png') }}" alt="Perceptron">
|
||||
</div>
|
||||
<div class="model-container">
|
||||
</div>
|
||||
<div class="model-container">
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<form action="/compare_models" method="post">
|
||||
<button type="submit">Compare Models</button>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user