volkov_rafael_lab_1 is done
This commit is contained in:
parent
a8c58683dd
commit
5b27113150
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