From cc1802b4f0dfd1a4dcc1fcc5351d6245cb873b68 Mon Sep 17 00:00:00 2001 From: altteam Date: Wed, 22 Nov 2023 22:52:44 +0400 Subject: [PATCH] laba 2 ready!!! --- verina_daria_lab_2/README.md | 35 ++++++++++++++++ verina_daria_lab_2/main.py | 71 +++++++++++++++++++++++++++++++++ verina_daria_lab_2/result1.png | Bin 0 -> 17643 bytes verina_daria_lab_2/result2.png | Bin 0 -> 22043 bytes 4 files changed, 106 insertions(+) create mode 100644 verina_daria_lab_2/README.md create mode 100644 verina_daria_lab_2/main.py create mode 100644 verina_daria_lab_2/result1.png create mode 100644 verina_daria_lab_2/result2.png diff --git a/verina_daria_lab_2/README.md b/verina_daria_lab_2/README.md new file mode 100644 index 0000000..e037536 --- /dev/null +++ b/verina_daria_lab_2/README.md @@ -0,0 +1,35 @@ +# IIS_2023_1 +

Задание

+

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

+

+7 Вариант. +

+

Как запустить программу

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

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

+

+

+ +

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

+

+Программа выполняет ранжирование и сравнение признаков с использованием трех различных методов: LassoCV, Lasso и Random Forest для последующего их ранжирования и обрабатывает тремя моделями по варианту. +Таким образом можно легко определить наиважнейшие признаки. +

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

+

+

\ No newline at end of file diff --git a/verina_daria_lab_2/main.py b/verina_daria_lab_2/main.py new file mode 100644 index 0000000..339b6df --- /dev/null +++ b/verina_daria_lab_2/main.py @@ -0,0 +1,71 @@ +from sklearn.linear_model import LassoCV +from sklearn.ensemble import RandomForestRegressor +from sklearn.feature_selection import RFE +from sklearn.preprocessing import MinMaxScaler +import numpy as np +import pandas as pd + +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)) + +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)) + +lasso_cv = LassoCV(alphas=np.linspace(0.001, 1, 100), cv=5) +lasso_cv.fit(X, Y) + +rf = RandomForestRegressor(n_estimators=100) +rfe = RFE(estimator=rf, n_features_to_select=1, step=1) +rfe.fit(X, Y) + +# названия признаков +names = ["x%s" % i for i in range(1, 15)] + +# Stable Randomized Lasso Simulation +n_resampling = 200 +rlasso_coefs = np.zeros((X.shape[1], n_resampling)) +for i in range(n_resampling): + Y_permuted = np.random.permutation(Y) + rlasso = LassoCV(alphas=np.linspace(0.001, 1, 100), cv=5) + rlasso.fit(X, Y_permuted) + rlasso_coefs[:, i] = rlasso.coef_ + +rlasso_scores = np.std(rlasso_coefs, axis=1) + +# словарь для ранжирования +ranks = {"Lasso": rank_to_dict(lasso_cv.coef_, names), + "RFE": rank_to_dict(rfe.ranking_, names), + "RandomizedLassoSim": rank_to_dict(rlasso_scores, names)} + +mean = {} +for method, values in ranks.items(): + for feature, score in values.items(): + # Если элемента с текущим ключом в mean нет - добавляем + if feature not in mean: + mean[feature] = 0 + # Суммируем значения по каждому ключу-имени признака + mean[feature] += score +df_ranks = pd.DataFrame(ranks) + +# Выводим ранжирование +print("ПО КАЖДОМУ МЕТОДУ:") +print(df_ranks) + +# Находим среднее по каждому признаку +for feature, score in mean.items(): + mean[feature] = round(score / len(ranks), 2) + +# Отсортированные средние значени +mean = sorted(mean.items(), key=lambda x: x[1], reverse=True) +print("СРЕДНИЕ") +print(mean) diff --git a/verina_daria_lab_2/result1.png b/verina_daria_lab_2/result1.png new file mode 100644 index 0000000000000000000000000000000000000000..9479691ae923ab3bdee9de86d9dc78e0d6bf6ffd GIT binary patch literal 17643 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 UX@0hl3jhEB07*qoM6N<$g5wT5Qvd(} literal 0 HcmV?d00001 diff --git a/verina_daria_lab_2/result2.png b/verina_daria_lab_2/result2.png new file mode 100644 index 0000000000000000000000000000000000000000..8650a675afebf27514b5b9c79a227385d406780d GIT binary patch literal 22043 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