savenkov_alexander_lab_1 is done
This commit is contained in:
parent
9613109f32
commit
adca415462
7
.idea/discord.xml
Normal file
7
.idea/discord.xml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="DiscordProjectSettings">
|
||||||
|
<option name="show" value="ASK" />
|
||||||
|
<option name="description" value="" />
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -1,4 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8 (venv)" project-jdk-type="Python SDK" />
|
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8 (venv)" project-jdk-type="Python SDK" />
|
||||||
|
<component name="PyCharmProfessionalAdvertiser">
|
||||||
|
<option name="shown" value="true" />
|
||||||
|
</component>
|
||||||
</project>
|
</project>
|
@ -1,7 +1,12 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
|
<component name="AutoImportSettings">
|
||||||
|
<option name="autoReloadType" value="SELECTIVE" />
|
||||||
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="0ceb130e-88da-4a20-aad6-17f5ab4226ac" name="Changes" comment="" />
|
<list default="true" id="0ceb130e-88da-4a20-aad6-17f5ab4226ac" name="Changes" comment="">
|
||||||
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||||
@ -15,23 +20,32 @@
|
|||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
<component name="Git.Settings">
|
<component name="Git.Settings">
|
||||||
|
<option name="RECENT_BRANCH_BY_REPOSITORY">
|
||||||
|
<map>
|
||||||
|
<entry key="$PROJECT_DIR$" value="main" />
|
||||||
|
</map>
|
||||||
|
</option>
|
||||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||||
</component>
|
</component>
|
||||||
<component name="MarkdownSettingsMigration">
|
<component name="MarkdownSettingsMigration">
|
||||||
<option name="stateVersion" value="1" />
|
<option name="stateVersion" value="1" />
|
||||||
</component>
|
</component>
|
||||||
|
<component name="ProjectColorInfo">{
|
||||||
|
"associatedIndex": 2
|
||||||
|
}</component>
|
||||||
<component name="ProjectId" id="2VlZqWiOX68aCf0o2y0AtYJWURS" />
|
<component name="ProjectId" id="2VlZqWiOX68aCf0o2y0AtYJWURS" />
|
||||||
<component name="ProjectViewState">
|
<component name="ProjectViewState">
|
||||||
<option name="hideEmptyMiddlePackages" value="true" />
|
<option name="hideEmptyMiddlePackages" value="true" />
|
||||||
<option name="showLibraryContents" value="true" />
|
<option name="showLibraryContents" value="true" />
|
||||||
</component>
|
</component>
|
||||||
<component name="PropertiesComponent"><![CDATA[{
|
<component name="PropertiesComponent">{
|
||||||
"keyToString": {
|
"keyToString": {
|
||||||
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
||||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||||
"last_opened_file_path": "D:/ulstukek/Course4/IIS/labs"
|
"last_opened_file_path": "D:/ulstukek/Course4/IIS/labs",
|
||||||
|
"settings.editor.selected.configurable": "reference.settings.ide.settings.new.ui"
|
||||||
}
|
}
|
||||||
}]]></component>
|
}</component>
|
||||||
<component name="RecentsManager">
|
<component name="RecentsManager">
|
||||||
<key name="CopyFile.RECENT_KEYS">
|
<key name="CopyFile.RECENT_KEYS">
|
||||||
<recent name="D:\ulstukek\Course4\IIS\IISLabs\IIS_2023_1\zavrazhnova_svetlana_lab_3" />
|
<recent name="D:\ulstukek\Course4\IIS\IISLabs\IIS_2023_1\zavrazhnova_svetlana_lab_3" />
|
||||||
|
3
savenkov_alexander_lab_1/.idea/.gitignore
vendored
Normal file
3
savenkov_alexander_lab_1/.idea/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
1
savenkov_alexander_lab_1/.idea/.name
Normal file
1
savenkov_alexander_lab_1/.idea/.name
Normal file
@ -0,0 +1 @@
|
|||||||
|
main.py
|
10
savenkov_alexander_lab_1/.idea/Lab_1_IIS.iml
Normal file
10
savenkov_alexander_lab_1/.idea/Lab_1_IIS.iml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="PYTHON_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager">
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
7
savenkov_alexander_lab_1/.idea/discord.xml
Normal file
7
savenkov_alexander_lab_1/.idea/discord.xml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="DiscordProjectSettings">
|
||||||
|
<option name="show" value="ASK" />
|
||||||
|
<option name="description" value="" />
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -0,0 +1,6 @@
|
|||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<settings>
|
||||||
|
<option name="USE_PROJECT_PROFILE" value="false" />
|
||||||
|
<version value="1.0" />
|
||||||
|
</settings>
|
||||||
|
</component>
|
7
savenkov_alexander_lab_1/.idea/misc.xml
Normal file
7
savenkov_alexander_lab_1/.idea/misc.xml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.11" project-jdk-type="Python SDK" />
|
||||||
|
<component name="PyCharmProfessionalAdvertiser">
|
||||||
|
<option name="shown" value="true" />
|
||||||
|
</component>
|
||||||
|
</project>
|
8
savenkov_alexander_lab_1/.idea/modules.xml
Normal file
8
savenkov_alexander_lab_1/.idea/modules.xml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/Lab_1_IIS.iml" filepath="$PROJECT_DIR$/.idea/Lab_1_IIS.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
62
savenkov_alexander_lab_1/app.py
Normal file
62
savenkov_alexander_lab_1/app.py
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
import numpy as np
|
||||||
|
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.linear_model import Ridge
|
||||||
|
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)
|
||||||
|
|
||||||
|
# Гребневая полиномиальная регрессия (степень 3, alpha=1.0)
|
||||||
|
ridge = Ridge(alpha=1.0)
|
||||||
|
ridge.fit(X_poly, y_train)
|
||||||
|
ridge_score = ridge.score(poly.transform(X_test), y_test)
|
||||||
|
|
||||||
|
# Создание графиков
|
||||||
|
plt.figure(figsize=(12, 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(ridge_score))
|
||||||
|
|
||||||
|
plt.tight_layout()
|
||||||
|
|
||||||
|
plt.savefig('static/models_comparison.png')
|
||||||
|
|
||||||
|
return render_template('index.html', result=True)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run(debug=True)
|
63
savenkov_alexander_lab_1/readme.md
Normal file
63
savenkov_alexander_lab_1/readme.md
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
Общее задание:
|
||||||
|
Используя код из пункта «Регуляризация и сеть прямого
|
||||||
|
распространения» из [1] (стр. 228), сгенерируйте определенный тип данных и
|
||||||
|
сравните на нем 3 модели (по варианту). Постройте графики, отобразите
|
||||||
|
качество моделей, объясните полученные результаты.
|
||||||
|
|
||||||
|
Задание по вариантам 1 вариант (22), взял 1 т.к. всего 21 вариант задания:
|
||||||
|
1. Данные: make_moons (noise=0.3, random_state=rs)
|
||||||
|
Модели:
|
||||||
|
· Линейную регрессию
|
||||||
|
· Полиномиальную регрессию (со степенью 3)
|
||||||
|
· Гребневую полиномиальную регрессию (со степенью 3, alpha = 1.0)
|
||||||
|
|
||||||
|
Запуск приложения осуществляется запуском файла app.py
|
||||||
|
|
||||||
|
Использованные технологии:
|
||||||
|
Среда программирования Pycharm
|
||||||
|
Версия языка python: 3.11
|
||||||
|
Flask: Flask - это микрофреймворк для создания веб-приложений на языке Python. Он используется для создания веб-сервера и определения маршрутов, таких как '/' и '/compare_models', для обработки запросов.
|
||||||
|
|
||||||
|
HTML: Ваш шаблон index.html использует язык разметки HTML для создания веб-страницы и отображения содержимого на веб-сайте.
|
||||||
|
|
||||||
|
Matplotlib: Matplotlib - это библиотека для создания графиков и визуализации данных. В этой программе она используется для создания трех графиков, представляющих результаты различных моделей.
|
||||||
|
|
||||||
|
NumPy: NumPy - это библиотека для вычислительных операций с массивами и матрицами. В этой программе она используется для генерации данных (make_moons) и работы с данными.
|
||||||
|
|
||||||
|
Scikit-Learn (sklearn): Scikit-Learn - это библиотека машинного обучения для Python. Она используется для обучения трех моделей машинного обучения: линейной регрессии, полиномиальной регрессии и гребневой полиномиальной регрессии.
|
||||||
|
|
||||||
|
Jinja2: Flask использует шаблонизатор Jinja2 для вставки динамических данных (например, параметра result) в HTML-шаблоны.
|
||||||
|
|
||||||
|
Файловая система и статические файлы: В программе используется файловая система для сохранения изображений графиков (static/models_comparison.png). Эти изображения затем отображаются на веб-странице как статические файлы.
|
||||||
|
|
||||||
|
Краткое описание работы программы:
|
||||||
|
В разделе HTML (index.html) определен шаблон для главной страницы. Этот шаблон содержит заголовок, форму для отправки POST-запроса на /compare_models и, если result истинно, отображает изображение графиков моделей.
|
||||||
|
|
||||||
|
В Python-скрипте (app.py) создается Flask-приложение, которое имеет два маршрута:
|
||||||
|
|
||||||
|
'/' отвечает за главную страницу и отображает шаблон index.html.
|
||||||
|
'/compare_models' обрабатывает POST-запрос, обучает различные модели и создает графики. После этого он возвращает результат в виде изображений и обновляет страницу с параметром result=True, чтобы отобразить изображения.
|
||||||
|
Для генерации данных используется make_moons, а затем данные разбиваются на обучающий и тестовый наборы.
|
||||||
|
|
||||||
|
Тренируются три модели: линейная регрессия, полиномиальная регрессия (степень 3) и гребневая полиномиальная регрессия (степень 3, alpha=1.0).
|
||||||
|
|
||||||
|
После обучения моделей создаются три графика, каждый из которых представляет собой точечное облако с цветной разметкой, а также заголовок, содержащий оценку (score) модели.
|
||||||
|
|
||||||
|
Графики сохраняются в файл static/models_comparison.png.
|
||||||
|
|
||||||
|
Наконец, приложение запускается с debug=True в режиме отладки.
|
||||||
|
|
||||||
|
Пример входных данных:
|
||||||
|
X = [[-0.5, 0.5],
|
||||||
|
[0.2, 1.2],
|
||||||
|
[1.5, -0.3],
|
||||||
|
...
|
||||||
|
] # Матрица признаков
|
||||||
|
|
||||||
|
y = [0, 1, 0, 1, 1, 0, 0, 1, ...] # Вектор меток классов
|
||||||
|
|
||||||
|
Пример выходных данных:
|
||||||
|
Графики моделей: Это изображения, на которых отображены точки данных с цветной разметкой в соответствии с предсказанными значениями моделей.
|
||||||
|
Оценки моделей: В заголовках графиков отображаются оценки моделей (например, Score: 0.85), которые показывают качество каждой модели на тестовых данных.
|
||||||
|
|
||||||
|
Обновленная главная страница: После генерации графиков, главная страница (index.html) обновляется, и на ней отображаются созданные графики моделей.
|
BIN
savenkov_alexander_lab_1/static/models_comparison.png
Normal file
BIN
savenkov_alexander_lab_1/static/models_comparison.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 35 KiB |
17
savenkov_alexander_lab_1/templates/index.html
Normal file
17
savenkov_alexander_lab_1/templates/index.html
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Сравнение моделей</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Сравнение моделей</h1>
|
||||||
|
<form action="/compare_models" method="POST">
|
||||||
|
<button type="submit">Сравнить модели</button>
|
||||||
|
</form>
|
||||||
|
<br>
|
||||||
|
{% if result %}
|
||||||
|
<h2>Графики моделей</h2>
|
||||||
|
<img src="static/models_comparison.png" alt="Графики моделей">
|
||||||
|
{% endif %}
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in New Issue
Block a user