IIS_2023_1/kutygin_andrey_lab_2/lab2.py

43 lines
1.6 KiB
Python
Raw Normal View History

2023-11-13 20:34:13 +04:00
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]}")