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