From 565b4f171f3a538d3d942906437466224c90ff41 Mon Sep 17 00:00:00 2001 From: a-shdv Date: Fri, 3 Nov 2023 14:17:51 +0400 Subject: [PATCH] Add lab2 --- shadaev_anton_lab_2/README.md | 46 ++++++++++++++++++++++- shadaev_anton_lab_2/img.png | Bin 0 -> 70106 bytes shadaev_anton_lab_2/main.py | 67 +++++++++++++++++++++++++++++++++- 3 files changed, 111 insertions(+), 2 deletions(-) create mode 100644 shadaev_anton_lab_2/img.png diff --git a/shadaev_anton_lab_2/README.md b/shadaev_anton_lab_2/README.md index 00592cb..61236ec 100644 --- a/shadaev_anton_lab_2/README.md +++ b/shadaev_anton_lab_2/README.md @@ -1 +1,45 @@ -# IIS_2023_1 \ No newline at end of file +# IIS_2023_1 +

Задание

+

+Используя код из [1](пункт «Решение задачи ранжирования признаков», стр. 205), выполните ранжирование признаков с помощью указанных по варианту моделей. Отобразите получившиеся значения\оценки каждого признака каждым методом\моделью и среднюю оценку. Проведите анализ получившихся результатов. Какие четыре признака оказались самыми важными по среднему значению? (Названия\индексы признаков и будут ответом на задание). +

+

+9. +

+

+

Способок запуска программы

+Запустить скрипт shadaev_anton_lab_2/main.py, после чего в консоль будут выведены результаты выполнения программы. +

Стек технологий

+

+

+

+

Описание кода

+

+В этом коде мы генерируем 500 наблюдений с 15 признаками. Затем создается словарь для хранения рангов признаков для каждого метода (Lasso, Random Forest, f_regression). + +Функция calculate_ranks() используется для вычисления рангов признаков для каждого метода. Для этого она обучает модель (Lasso или Random Forest) на данных и затем возвращает словарь, где ключами являются имена признаков, а значениями - коэффициенты признаков модели. + +Если используется метод f_regression, функция возвращает словарь с f-статистиками признаков. + +Затем функция create_normalized_rank_dict() используется для нормализации рангов признаков. Она принимает ранги и имена признаков, приводит ранги к абсолютному значению, нормализует их с использованием MinMaxScaler из sklearn.preprocessing и возвращает словарь, где ключами являются имена признаков, а значениями - нормализованные ранги. + +Наконец, код вычисляет среднее значение рангов для каждого признака, сортирует признаки по средним значениям рангов в порядке убывания и выводит признаки и их ранги. +

+
Результат:
+ +

+

+

\ No newline at end of file diff --git a/shadaev_anton_lab_2/img.png b/shadaev_anton_lab_2/img.png new file mode 100644 index 0000000000000000000000000000000000000000..b0b5e3d96808ac4e0a312ef58182c7587db9a40e GIT binary patch literal 70106 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�}_HX7A=T~q;!WgNF&{dAl*GM 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 P;E(D9O<2)=vw;5rcnKPJ literal 0 HcmV?d00001 diff --git a/shadaev_anton_lab_2/main.py b/shadaev_anton_lab_2/main.py index e0369f7..9f81af7 100644 --- a/shadaev_anton_lab_2/main.py +++ b/shadaev_anton_lab_2/main.py @@ -1 +1,66 @@ -print('test') \ No newline at end of file +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 = 500 +X = np.random.uniform(0, 1, (size, 15)) +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[:, :5] + np.random.normal(0, .025, (size, 5)) + +# Имена признаков +names = ["x%s" % i for i in range(1, 16)] + +# Ранги признаков +ranks = {} + + +# Функция для расчета рангов +def calculate_ranks(method, X, Y): + if method == "Lasso": + model = Lasso(alpha=0.5) + elif method == "Random Forest": + model = RandomForestRegressor(n_estimators=100) + elif method == "f_regression": + f_scores, _ = f_regression(X, Y) + return dict(zip(names, f_scores)) + model.fit(X, Y) + return dict(zip(names, model.coef_ if method == "Lasso" else model.feature_importances_)) + + +# Ранг для каждого метода +for method in ["Lasso", "Random Forest", "f_regression"]: + ranks[method] = calculate_ranks(method, X, Y) + + +# Нормализация рангов +def create_normalized_rank_dict(ranks, names): + ranks = np.abs(ranks) + minmax = MinMaxScaler() + ranks = minmax.fit_transform( + np.array(ranks).reshape(15, 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]}')