IIS_2023_1/kutygin_andrey_lab_2/lab2.py

43 lines
1.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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]}")