Compare commits
No commits in common. "35826f2461cc4daf3b70ca22ed22bddc9e325cf4" and "9613109f32a1cc22e6e2281fe3de051c3c711695" have entirely different histories.
35826f2461
...
9613109f32
7
.idea/discord.xml
generated
7
.idea/discord.xml
generated
@ -1,7 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="DiscordProjectSettings">
|
|
||||||
<option name="show" value="ASK" />
|
|
||||||
<option name="description" value="" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
32
.idea/workspace.xml
generated
32
.idea/workspace.xml
generated
@ -1,12 +1,7 @@
|
|||||||
<?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" />
|
||||||
@ -20,32 +15,23 @@
|
|||||||
</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">{
|
<component name="PropertiesComponent"><![CDATA[{
|
||||||
"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" />
|
||||||
@ -118,11 +104,9 @@
|
|||||||
</configuration>
|
</configuration>
|
||||||
<recent_temporary>
|
<recent_temporary>
|
||||||
<list>
|
<list>
|
||||||
|
<item itemvalue="Python.zavrazhnova_svetlana_lab3_2" />
|
||||||
<item itemvalue="Python.zavrazhnova_svetlana_lab_3_1" />
|
<item itemvalue="Python.zavrazhnova_svetlana_lab_3_1" />
|
||||||
<item itemvalue="Python.zavrazhnova_svetlana_lab_2" />
|
<item itemvalue="Python.zavrazhnova_svetlana_lab_2" />
|
||||||
<item itemvalue="Python.zavrazhnova_svetlana_lab3_2" />
|
|
||||||
<item itemvalue="Python.zavrazhnova_svetlana_lab3_2" />
|
|
||||||
<item itemvalue="Python.zavrazhnova_svetlana_lab_3_1" />
|
|
||||||
</list>
|
</list>
|
||||||
</recent_temporary>
|
</recent_temporary>
|
||||||
</component>
|
</component>
|
||||||
|
3
savenkov_alexander_lab_2/.idea/.gitignore
generated
vendored
3
savenkov_alexander_lab_2/.idea/.gitignore
generated
vendored
@ -1,3 +0,0 @@
|
|||||||
# Default ignored files
|
|
||||||
/shelf/
|
|
||||||
/workspace.xml
|
|
1
savenkov_alexander_lab_2/.idea/.name
generated
1
savenkov_alexander_lab_2/.idea/.name
generated
@ -1 +0,0 @@
|
|||||||
app.py
|
|
10
savenkov_alexander_lab_2/.idea/Lab_2_IIS.iml
generated
10
savenkov_alexander_lab_2/.idea/Lab_2_IIS.iml
generated
@ -1,10 +0,0 @@
|
|||||||
<?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="jdk" jdkName="Python 3.11" jdkType="Python SDK" />
|
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
|
||||||
</component>
|
|
||||||
</module>
|
|
7
savenkov_alexander_lab_2/.idea/discord.xml
generated
7
savenkov_alexander_lab_2/.idea/discord.xml
generated
@ -1,7 +0,0 @@
|
|||||||
<?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,6 +0,0 @@
|
|||||||
<component name="InspectionProjectProfileManager">
|
|
||||||
<settings>
|
|
||||||
<option name="USE_PROJECT_PROFILE" value="false" />
|
|
||||||
<version value="1.0" />
|
|
||||||
</settings>
|
|
||||||
</component>
|
|
7
savenkov_alexander_lab_2/.idea/misc.xml
generated
7
savenkov_alexander_lab_2/.idea/misc.xml
generated
@ -1,7 +0,0 @@
|
|||||||
<?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_2/.idea/modules.xml
generated
8
savenkov_alexander_lab_2/.idea/modules.xml
generated
@ -1,8 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ProjectModuleManager">
|
|
||||||
<modules>
|
|
||||||
<module fileurl="file://$PROJECT_DIR$/.idea/Lab_2_IIS.iml" filepath="$PROJECT_DIR$/.idea/Lab_2_IIS.iml" />
|
|
||||||
</modules>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
@ -1,94 +0,0 @@
|
|||||||
from flask import Flask, request, render_template
|
|
||||||
from sklearn.linear_model import LinearRegression
|
|
||||||
from sklearn.feature_selection import RFE
|
|
||||||
from sklearn.ensemble import RandomForestRegressor
|
|
||||||
from sklearn.preprocessing import MinMaxScaler
|
|
||||||
import pandas as pd
|
|
||||||
import numpy as np
|
|
||||||
|
|
||||||
app = Flask(__name__)
|
|
||||||
|
|
||||||
# Генерируем случайные данные
|
|
||||||
np.random.seed(0)
|
|
||||||
size = 750
|
|
||||||
X = np.random.uniform(0, 1, (size, 14))
|
|
||||||
Y = (10 * np.sin(np.pi * X[:, 0] * X[:, 1]) + 20 * (X[:, 2] - .5) ** 2 +
|
|
||||||
10 * X[:, 3] + 5 * X[:, 4] ** 5 + np.random.normal(0, 1, size))
|
|
||||||
X[:, 10:] = X[:, :4] + np.random.normal(0, .025, (size, 4))
|
|
||||||
|
|
||||||
# Определяем и обучаем модели
|
|
||||||
lr = LinearRegression()
|
|
||||||
rfe = RFE(lr, n_features_to_select=2)
|
|
||||||
rfe.fit(X, Y)
|
|
||||||
|
|
||||||
rf = RandomForestRegressor(n_estimators=100)
|
|
||||||
rf.fit(X, Y)
|
|
||||||
|
|
||||||
# Словарь для хранения результатов оценок
|
|
||||||
feature_rankings = {}
|
|
||||||
|
|
||||||
|
|
||||||
# Функция для ранжирования признаков с использованием линейной регрессии
|
|
||||||
def rank_lr():
|
|
||||||
lr.fit(X, Y)
|
|
||||||
coef = lr.coef_
|
|
||||||
ranking = np.abs(coef)
|
|
||||||
ranking = min_max_scale(ranking)
|
|
||||||
return ranking
|
|
||||||
|
|
||||||
|
|
||||||
# Функция для ранжирования признаков с использованием RFE
|
|
||||||
def rank_rfe():
|
|
||||||
ranking = rfe.ranking_
|
|
||||||
ranking = min_max_scale(ranking)
|
|
||||||
return ranking
|
|
||||||
|
|
||||||
|
|
||||||
# Функция для ранжирования признаков с использованием Random Forest
|
|
||||||
def rank_rf():
|
|
||||||
importances = rf.feature_importances_
|
|
||||||
importances = min_max_scale(importances)
|
|
||||||
return importances
|
|
||||||
|
|
||||||
|
|
||||||
# Функция для масштабирования оценок в диапазоне [0, 1]
|
|
||||||
def min_max_scale(arr):
|
|
||||||
scaler = MinMaxScaler()
|
|
||||||
scaled = scaler.fit_transform(np.array(arr).reshape(-1, 1))
|
|
||||||
return scaled
|
|
||||||
|
|
||||||
|
|
||||||
# Функция для выполнения ранжирования и вычисления средней оценки
|
|
||||||
def rank_features():
|
|
||||||
feature_rankings['Linear Regression'] = rank_lr()
|
|
||||||
feature_rankings['RFE'] = rank_rfe()
|
|
||||||
feature_rankings['Random Forest'] = rank_rf()
|
|
||||||
# Средняя оценка
|
|
||||||
mean_ranking = np.mean(list(feature_rankings.values()), axis=0)
|
|
||||||
feature_rankings['Mean Ranking'] = mean_ranking
|
|
||||||
|
|
||||||
# Получите индексы 4 самых важных признаков
|
|
||||||
top_4_indices = np.argsort(mean_ranking)[-4:][::-1]
|
|
||||||
|
|
||||||
# Получите названия признаков по индексам
|
|
||||||
top_4_feature_names = [f'Признак {i + 1}' for i in top_4_indices]
|
|
||||||
|
|
||||||
# Добавьте значения X и Y в контекст
|
|
||||||
return {
|
|
||||||
'feature_rankings': feature_rankings,
|
|
||||||
'X_values': X.tolist(),
|
|
||||||
'Y_values': Y.tolist(),
|
|
||||||
'top_4_feature_names': top_4_feature_names # Добавляем самые важные признаки
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@app.route('/', methods=['GET', 'POST'])
|
|
||||||
def index():
|
|
||||||
if request.method == 'POST':
|
|
||||||
context = rank_features()
|
|
||||||
return render_template('index.html', **context)
|
|
||||||
return render_template('index.html', feature_rankings=feature_rankings)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
app.run(debug=True)
|
|
@ -1,60 +0,0 @@
|
|||||||
Общее задание:
|
|
||||||
Используя код из [1] (пункт «Решение задачи ранжирования признаков»,
|
|
||||||
стр. 205), выполните ранжирование признаков с помощью указанных по
|
|
||||||
варианту моделей. Отобразите получившиеся значения\оценки каждого
|
|
||||||
признака каждым методом\моделью и среднюю оценку. Проведите анализ
|
|
||||||
получившихся результатов. Какие четыре признака оказались самыми
|
|
||||||
45
|
|
||||||
важными по среднему значению? (Названия\индексы признаков и будут
|
|
||||||
ответом на задание).
|
|
||||||
|
|
||||||
Задание по вариантам 2 вариант (22), взял 2 т.к. всего 20 вариант задания:
|
|
||||||
2. Линейная регрессия (LinearRegression), Рекурсивное сокращение
|
|
||||||
признаков (Recursive Feature Elimination – RFE), Сокращение признаков
|
|
||||||
Случайными деревьями (Random Forest Regressor)
|
|
||||||
|
|
||||||
Запуск приложения осуществляется запуском файла app.py
|
|
||||||
|
|
||||||
Использованные технологии:
|
|
||||||
Среда программирования Pycharm
|
|
||||||
Версия языка python: 3.11
|
|
||||||
Flask: Flask - это микрофреймворк для создания веб-приложений на языке Python. Он используется для создания веб-интерфейса и обработки HTTP-запросов и ответов.
|
|
||||||
|
|
||||||
scikit-learn: Scikit-learn - это библиотека для машинного обучения в Python. В вашей программе она используется для обучения моделей машинного обучения, таких как линейная регрессия, RFE и случайный лес, а также для выполнения ранжирования признаков.
|
|
||||||
|
|
||||||
NumPy: NumPy - это библиотека для научных вычислений в Python. Она используется для работы с массивами и матрицами данных.
|
|
||||||
|
|
||||||
Pandas: Pandas - это библиотека для анализа данных. Она используется для создания и обработки данных, включая таблицы и структуры данных.
|
|
||||||
|
|
||||||
MinMaxScaler: Это функция из библиотеки Scikit-learn, используемая для масштабирования оценок признаков в диапазоне [0, 1].
|
|
||||||
|
|
||||||
HTML и шаблоны Jinja2: HTML - это язык разметки для создания веб-страниц, а Jinja2 - это шаблонный движок для вставки данных в HTML-шаблоны.
|
|
||||||
|
|
||||||
HTTP и формы: Ваше приложение Flask обрабатывает HTTP-запросы и использует форму <form> для отправки данных при нажатии кнопки "Выполнить".
|
|
||||||
|
|
||||||
Краткое описание работы программы:
|
|
||||||
Сгенерированные данные: Программа создает случайные данные в виде матрицы X и вектора Y.
|
|
||||||
|
|
||||||
Обучение моделей: Обучаются три модели машинного обучения: линейная регрессия, RFE (рекурсивное исключение признаков) и случайные леса, используя сгенерированные данные.
|
|
||||||
|
|
||||||
Ранжирование признаков: Для каждой модели рассчитываются ранги признаков, отражающие их важность для прогнозирования целевой переменной Y.
|
|
||||||
|
|
||||||
Средний ранг: Вычисляется средний ранг для каждого признака на основе результатов всех трех моделей.
|
|
||||||
|
|
||||||
Вывод результатов: После нажатия кнопки "Выполнить" на веб-странице, программа отображает следующие результаты:
|
|
||||||
|
|
||||||
Ранги признаков для каждой модели (линейная регрессия, RFE, случайные леса).
|
|
||||||
Средний ранг признаков.
|
|
||||||
Значения признаков X.
|
|
||||||
Значения целевой переменной Y.
|
|
||||||
4 самых важных признака на основе среднего ранга (по названиям).
|
|
||||||
|
|
||||||
Пример входных данных:
|
|
||||||
Случайные данные в виде матрицы X и вектора Y.
|
|
||||||
|
|
||||||
Пример выходных данных:
|
|
||||||
Ранги признаков для каждой модели (линейная регрессия, RFE, случайные леса).
|
|
||||||
Средний ранг признаков.
|
|
||||||
Значения признаков X.
|
|
||||||
Значения целевой переменной Y.
|
|
||||||
4 самых важных признака на основе среднего ранга (по названиям).
|
|
@ -1,73 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>Feature Ranking</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>Feature Ranking</h1>
|
|
||||||
<form method="POST">
|
|
||||||
<button type="submit">Выполнить</button>
|
|
||||||
</form>
|
|
||||||
|
|
||||||
<h2>Результаты ранжирования признаков</h2>
|
|
||||||
<table>
|
|
||||||
<tr>
|
|
||||||
<th>Метод</th>
|
|
||||||
<th>Признак 1</th>
|
|
||||||
<th>Признак 2</th>
|
|
||||||
<!-- Добавьте остальные признаки -->
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>Линейная регрессия</td>
|
|
||||||
<td>{{ feature_rankings['Linear Regression'][0] if 'Linear Regression' in feature_rankings else '' }}</td>
|
|
||||||
<td>{{ feature_rankings['Linear Regression'][1] if 'Linear Regression' in feature_rankings else '' }}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>RFE</td>
|
|
||||||
<td>{{ feature_rankings['RFE'][0] if 'RFE' in feature_rankings else '' }}</td>
|
|
||||||
<td>{{ feature_rankings['RFE'][1] if 'RFE' in feature_rankings else '' }}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>Случайные деревья</td>
|
|
||||||
<td>{{ feature_rankings['Random Forest'][0] if 'Random Forest' in feature_rankings else '' }}</td>
|
|
||||||
<td>{{ feature_rankings['Random Forest'][1] if 'Random Forest' in feature_rankings else '' }}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>Средняя оценка</td>
|
|
||||||
<td>{{ feature_rankings['Mean Ranking'][0] if 'Mean Ranking' in feature_rankings else '' }}</td>
|
|
||||||
<td>{{ feature_rankings['Mean Ranking'][1] if 'Mean Ranking' in feature_rankings else '' }}</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<h2>Самые важные признаки</h2>
|
|
||||||
<ul>
|
|
||||||
{% for feature_name in top_4_feature_names %}
|
|
||||||
<li>{{ feature_name }}</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h2>Значения X</h2>
|
|
||||||
<table>
|
|
||||||
{% for row in X_values %}
|
|
||||||
<tr>
|
|
||||||
{% for value in row %}
|
|
||||||
<td>{{ value }}</td>
|
|
||||||
{% if loop.index % 10 == 0 %}</tr><tr>{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<h2>Значения Y</h2>
|
|
||||||
<table>
|
|
||||||
<tr>
|
|
||||||
{% for value in Y_values %}
|
|
||||||
<td>{{ value }}</td>
|
|
||||||
{% if loop.index % 10 == 0 %}</tr><tr>{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
Loading…
x
Reference in New Issue
Block a user