43 lines
1.6 KiB
Python
43 lines
1.6 KiB
Python
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]}")
|