From 4c08267e74d3af7043d65ec78755c28e1053e8e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D0=B8=D1=8F=20=D0=A8?= Date: Tue, 28 Nov 2023 21:24:32 +0300 Subject: [PATCH] shestakova_maria_lab_2 is ready --- shestakova_maria_lab_2/README.md | 30 +++++++++ shestakova_maria_lab_2/result.png | Bin 0 -> 72527 bytes .../shestakova_maria_lab_2.py | 60 ++++++++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 shestakova_maria_lab_2/README.md create mode 100644 shestakova_maria_lab_2/result.png create mode 100644 shestakova_maria_lab_2/shestakova_maria_lab_2.py diff --git a/shestakova_maria_lab_2/README.md b/shestakova_maria_lab_2/README.md new file mode 100644 index 0000000..690f2d8 --- /dev/null +++ b/shestakova_maria_lab_2/README.md @@ -0,0 +1,30 @@ +### Задание: + +Лассо (Lasso), Сокращение признаков Случайными деревьями (Random Forest Regressor), Линейная корреляция (f_regression) + +### Технологии: + +Библиотека numpy, sklearn + +### Что делает лабораторная работа: + +Лабораторная работа примененяет регрессионне модели для определения важности признаков. +Программа ранжирует признаки по их значимости для задачи, сортирует средние ранги признаков в порядке убывания. Чем больше значение ранга, тем более значим признак. + +### Как запустить: + +Лабораторная работа запускается в файле shestakova_maria_lab_2.py через Run: результат выводится в консоль + +### Примеры выходных значений + +![result](result.png) + +Вывод: +4 наиболее значимых признака - 'x4', 'x14', 'x2', 'x12' + +Более подробный разбор: + +1. Признаки 'x4', 'x14' имеют наивысшие ранги, они наиболее значимы в решении задачи +2. Признаки 'x2', 'x12', 'x11', 'x1' имеют средние ранги, они средне значимы +3. Признаки 'x5', 'x7' и 'x8' имеют низкие ранги, они относительно значимы +4. Признаки 'x9', 'x3', 'x10', 'x13' и 'x6' имеют крайне низкие ранги, они практически не значимы diff --git a/shestakova_maria_lab_2/result.png b/shestakova_maria_lab_2/result.png new file mode 100644 index 0000000000000000000000000000000000000000..3c3ee04a294e66955e3028a4db8b2ebe8edf8319 GIT binary patch literal 72527 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 z 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 C4@SZO literal 0 HcmV?d00001 diff --git a/shestakova_maria_lab_2/shestakova_maria_lab_2.py b/shestakova_maria_lab_2/shestakova_maria_lab_2.py new file mode 100644 index 0000000..a110530 --- /dev/null +++ b/shestakova_maria_lab_2/shestakova_maria_lab_2.py @@ -0,0 +1,60 @@ +from sklearn.linear_model import Lasso +from sklearn.ensemble import RandomForestRegressor +from sklearn.feature_selection import f_regression +from sklearn.preprocessing import MinMaxScaler +import numpy as np + +np.random.seed(0) + +# размер входных данных Х +size = 1000 + +# входные данные +X = np.random.uniform(0, 1, (size, 14)) + +# целевая переменная Y на основе математической функции от входных данных X +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)) + +names = ["x%s" % i for i in range(1,15)] + +# пустой словарь для хранения рангов признаков +ranks = {} + +# экземпляр модели лассо-регрессии +lasso = Lasso(alpha=.05) + +# модель подгоняется под входные данные X и целевую переменную Y +lasso.fit(X, Y) +ranks["Lasso"] = dict(zip(names, lasso.coef_)) + +rf = RandomForestRegressor(n_estimators=100, random_state=0) +rf.fit(X, Y) +ranks["Random Forest"] = dict(zip(names, rf.feature_importances_)) + +f, _ = f_regression(X, Y, center=True) +ranks["f_regression"] = dict(zip(names, f)) + +def rank_to_dict(ranks, names): + ranks = np.abs(ranks) + minmax = MinMaxScaler() + + # масштабирование рангов + ranks = minmax.fit_transform(np.array(ranks).reshape(-1, 1)).ravel() + ranks = map(lambda x: round(x, 2), ranks) + return dict(zip(names, ranks)) + +# словарь для хранения средних рангов признаков +mean = {} +for key, value in ranks.items(): + for item in value.items(): + if item[0] not in mean: + mean[item[0]] = 0 + mean[item[0]] += item[1] + +sorted_mean = sorted(mean.items(), key=lambda x: x[1], reverse=True) +result = {} +for item in sorted_mean: + result[item[0]] = item[1] + print(f'{item[0]}: {item[1]}') -- 2.25.1