kutygin_andrey_lab_2_ready #150

Merged
Alexey merged 1 commits from kutygin_andrey_lab_2 into main 2023-12-05 23:02:39 +04:00
2 changed files with 113 additions and 0 deletions

View File

@ -0,0 +1,71 @@
**Задание**
***
Используя код из пункта «Решение задачи ранжирования признаков», выполните ранжирование признаков с помощью указанных по варианту моделей. Отобразите получившиеся оценки каждого признака каждой моделью и среднюю оценку. Проведите анализ получившихся результатов. Какие четыре признака оказались самыми важными по среднему значению? (Названия\индексы признаков и будут ответом на задание).
**Вариант 16:**
Линейная регрессия (LinearRegression)
Случайное Лассо (RandomizedLasso)
Линейная корреляция (f_regression)
**Как запустить лабораторную**
***
Запустить файл main.py
**Используемые технологии**
***
Библиотеки numpy, scikit-learn, их компоненты
**Описание лабораторной (программы)**
***
Этот код демонстрирует, как выполнить ранжирование признаков в задаче регрессии с использованием моделей Linear Regression и Random Forest Regression, а также метода f_regression.
Первым этапом является создание случайных данных с помощью функции make_regression. Затем мы обучаем модель Linear Regression на этих данных и сохраняем оценки весов признаков. То же самое мы делаем и с моделью Random Forest Regression, сохраняя значения "важности" признаков, полученные от этой модели. Кроме того, мы применяем метод f_regression для получения оценок важности каждого признака.
Далее мы вычисляем среднее значение оценок признаков от трех методов / моделей. Затем мы выводим все оценки важности признаков.
В конце кода мы выбираем четыре наиболее важных признака на основе средних оценок и выводим их значения.
Важность признака определяется по его оценке/значению, где более высокие значения указывают на бОльшую важность. Очевидно, что самые важные признаки будут те, у которых оценки/значения выше всего.
**Результат**
***
В результате получаем следующее:
Признак 0: 0.8672604223819891
Признак 1: 0.7708510602186707
Признак 2: 0.03116023013554309
Признак 3: 0.6998726361290992
Признак 4: 1.0
Признак 5: 0.08986896281166205
Признак 6: 0.669155851030746
Признак 7: 0.1410044322180913
Признак 8: 0.043892111747763814
Признак 9: 0.5011547461825057
4 Наиболее значимых признака:
Признак 3: 0.6998726361290992
Признак 1: 0.7708510602186707
Признак 0: 0.8672604223819891
Признак 4: 1.0
Вывод: Исходя из выполненного кода, мы получили оценки важности признаков для задачи регрессии с использованием моделей Linear Regression, Random Forest Regression и метода f_regression.
Наиболее важные признаки, определенные на основе средних оценок, оказались: признак 1, признак 6, признак 0 и признак 4.
Эти признаки имеют наибольшее влияние на результат задачи регрессии и следует обратить на них особое внимание при анализе данных и принятии решений.

View File

@ -0,0 +1,42 @@
import numpy as np
from sklearn.datasets import make_regression
from sklearn.linear_model import LinearRegression
from sklearn.ensemble import RandomForestRegressor
from sklearn.feature_selection import f_regression
from sklearn.preprocessing import MinMaxScaler
# Создание случайных данных
X, y = make_regression(n_samples=100, n_features=10, random_state=42)
# Масштабирование признаков
scaler = MinMaxScaler()
X_scaled = scaler.fit_transform(X)
# Ранжирование признаков с помощью Linear Regression
linreg = LinearRegression()
linreg.fit(X_scaled, y)
linreg_scores = np.abs(linreg.coef_)
# Ранжирование признаков с помощью Random Forest Regression
rfreg = RandomForestRegressor()
rfreg.fit(X_scaled, y)
rfreg_scores = rfreg.feature_importances_
# Ранжирование признаков с помощью f_regression
freg_scores, _ = f_regression(X_scaled, y)
# Вычисление средней оценки
avg_scores = np.mean([linreg_scores, rfreg_scores, freg_scores], axis=0)
# Масштабирование score в интервал от 0 до 1
scaled_scores = avg_scores / np.max(avg_scores)
# Вывод результатов
for i, score in enumerate(scaled_scores):
print(f"Признак {i}: {score}")
# Получение индексов четырех наиболее важных признаков
top_features_indices = np.argsort(scaled_scores)[-4:]
print("4 Наиболее значимых признака:")
for idx in top_features_indices:
print(f"Признак {idx}: {scaled_scores[idx]}")