diff --git a/zhukova_alina_lab_2/flask-server.py b/zhukova_alina_lab_2/flask-server.py
new file mode 100644
index 0000000..c872a23
--- /dev/null
+++ b/zhukova_alina_lab_2/flask-server.py
@@ -0,0 +1,139 @@
+import pandas
+import numpy as np
+from flask import Flask
+from sklearn.feature_selection import RFE
+from sklearn.linear_model import Lasso, LinearRegression
+from sklearn.preprocessing import MinMaxScaler
+
+app = Flask(__name__)
+
+
+@app.route("/")
+def home():
+ return "" \
+ "
Жукова Алина ПИбд-41
" \
+ "Лабораторная работа №2
" \
+ "" \
+ "" \
+ "" \
+ " | " \
+ "
" \
+ ""
+
+# Ранжирование признаков
+# Линейная регрессия, Лассо, Рекурсивное сокращение признаков
+# Отобразить оценки/значения каждого признака каждым методом, и среднюю оценку
+# 4 самых важных признака (индексы/названия)
+@app.route("/k4_1_task_2", methods=['GET'])
+def k4_1_task_2():
+ # Генерация даных
+ 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))
+ # Зависимость признаков
+ X[:, 10:] = X[:, : 4] + np.random.normal(0, .025, (size, 4))
+
+ linear_Regr = LinearRegression()
+ linear_Regr.fit(X, Y)
+
+ lasso = Lasso(alpha=.05)
+ lasso.fit(X, Y)
+
+ recurs_sokr_RFE = RFE(linear_Regr, n_features_to_select=1)
+ recurs_sokr_RFE.fit(X, Y)
+
+ new_RFE = []
+ elem_ind = 0
+ for value in recurs_sokr_RFE.ranking_:
+ new_RFE.append(recurs_sokr_RFE.ranking_.max() - value + 1)
+ elem_ind += 1
+
+
+ names = ["x%s" % i for i in range(1, 15)]
+
+ ranks = {}
+ ranks["Linear"] = rank_to_dict(linear_Regr.coef_, names)
+ ranks["Lasso"] = rank_to_dict(lasso.coef_, names)
+ ranks["RFE"] = rank_to_dict(np.array(new_RFE), names)
+
+ mean = {}
+ # Пройти по словарю
+ for key, value in ranks.items():
+ # Пройти по списку значений которые являются парой имя:оценка
+ for item in value.items():
+ # Имя = ключ для mean
+ if(item[0] not in mean):
+ mean[item[0]] = 0
+ mean[item[0]] += item[1]
+
+ for key, value in mean.items():
+ res = value/len(ranks)
+ mean[key] = round(res, 2)
+
+ mean_1 = [None, None]
+ mean_2 = [None, None]
+ mean_3 = [None, None]
+ mean_4 = [None, None]
+
+ for key, value in mean.items():
+ if(mean_1[0] == None or value >= mean_1[0]):
+ mean_4 = mean_3
+ mean_3 = mean_2
+ mean_2 = mean_1
+ mean_1 = [value, key]
+ else :
+ if (mean_2[0] == None or value >= mean_2[0]):
+ mean_4 = mean_3
+ mean_3 = mean_2
+ mean_2 = [value, key]
+ else:
+ if (mean_3[0] == None or value >= mean_3[0]):
+ mean_4 = mean_3
+ mean_3 = [value, key]
+ else:
+ if (mean_4[0] == None or value >= mean_4[0]):
+ mean_4 = [value, key]
+
+ mean_mass = []
+ mass_linear = []
+ mass_lasso = []
+ mass_RFE = []
+ for key, value in mean.items():
+ mean_mass.append(value)
+ for key, value in ranks['Linear'].items():
+ mass_linear.append(value)
+ for key, value in ranks['Lasso'].items():
+ mass_lasso.append(value)
+ for key, value in ranks['RFE'].items():
+ mass_RFE.append(value)
+
+ data = {"Linear": mass_linear,
+ "Lasso": mass_lasso,
+ "RFE": mass_RFE,
+ "Mean": mean_mass}
+ df = pandas.DataFrame(data, index=names)
+
+ return "" \
+ "Ранжирование признаков
" \
+ "Вариант 10. Линейная регрессия, Лассо, Рекурсивное сокращение признаков
" \
+ "Отобразить оценки/значения каждого признака каждым методом, и среднюю оценку
" \
+ "4 самых важных признака: 1) " + mean_1[1] + "; 2) " + mean_2[1] + "; 3) " + mean_3[1] + "; 4) " + mean_4[1] + "
" \
+ "" + df.to_html() + "
" \
+ ""
+
+def rank_to_dict(ranks, names):
+ ranks = np.abs(ranks)
+
+ minmax = MinMaxScaler()
+
+ ranks = minmax.fit_transform(np.array(ranks).reshape(14, 1)).ravel()
+ ranks = map(lambda x: round(x, 2), ranks)
+ return dict(zip(names, ranks))
+
+if __name__ == "__main__":
+ app.run(debug=True)
\ No newline at end of file
diff --git a/zhukova_alina_lab_2/img_screen_1.png b/zhukova_alina_lab_2/img_screen_1.png
new file mode 100644
index 0000000..88ae649
Binary files /dev/null and b/zhukova_alina_lab_2/img_screen_1.png differ
diff --git a/zhukova_alina_lab_2/readme.md b/zhukova_alina_lab_2/readme.md
new file mode 100644
index 0000000..a7f9b9c
--- /dev/null
+++ b/zhukova_alina_lab_2/readme.md
@@ -0,0 +1,42 @@
+## Задание
+Выполнить ранжирование признаков с помощью указанных по варианту моделей.
+Отобразить получившиеся значения\оценки каждого признака каждым методом\моделью и среднюю оценку.
+Провести анализ получившихся результатов.
+Указать самые значимые четыре признака по среднему значению
+
+Вариант №10
+
+Методы:
++ Линейная регрессия
++ Лассо
++ Рекурсивное сокращение признаков
+
+## Используемые технологии
+В лабораторной были использованы библиотеки:
++ numpy - позволяет работать с массивами и матрицами
++ pandas - позволяет работать с наборами данных
++ sklearn - используется для работы с моделями и методами машинного обучения
++ Flask - предоставляет способ быстрого создания веб-страниц для визуализации работы приложения
+
+## Используемые компоненты
++ LinearRegression - библиотечная реализация модели линейной регрессии
++ Lasso - модификация линейной регрессии
++ RFE - модель рекурсивноего исключения признаков
+
+## Как запустить
+Запустить файл flask-server, который поднимет локальный сервер
+и позволит обратиться к программе через браузер по ссылке [http://127.0.0.1:5000/](http://127.0.0.1:5000/)
+
+## Что делает программа
+Генерирует набор данных с 14 признаками размером 750, делит его на обучающую и тестовую выборки.
+По очереди обучает на данных обучающей выборки 3 модели:
+модель линейной регрессии, модель лассо и модель рекурсивного сокращения признаков.
+
+После обучения из каждой модели берутся оценки значимостей признаков.
+Исходя из полученных оценок высчитываются средние оценки для признаков,
+полученные данные отражаеются в виде таблицы. Указываются самые значимые 4 признака
+
+## Скриншоты работы программы
+
+Полученные оценки значимости признаков
+![img.png](img_screen_1.png)