kutygin_andrey_lab_2_ready #150
71
kutygin_andrey_lab_2/README.md
Normal file
71
kutygin_andrey_lab_2/README.md
Normal 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.
|
||||||
|
|
||||||
|
Эти признаки имеют наибольшее влияние на результат задачи регрессии и следует обратить на них особое внимание при анализе данных и принятии решений.
|
42
kutygin_andrey_lab_2/lab2.py
Normal file
42
kutygin_andrey_lab_2/lab2.py
Normal 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]}")
|
Loading…
Reference in New Issue
Block a user