这是我的代码 它不会输出组合名字的
import numpy as np
from sklearn.model_selection import train_test_split, KFold, cross_val_score
from sklearn.linear_model import LinearRegression
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import make_scorer, r2_score
# 假设有以下形状的数据
np.random.seed(42)
X = np.random.rand(100, 10, 5) # 100个样本, 每个样本10个时间步, 每个时间步5个特征
Y = np.random.rand(100, 3) # 100个样本, 每个样本3个输出
# 定义评估函数
def evaluate_feature_combinations(X, Y, max_features=3):
n_samples, n_timesteps, n_features = X.shape
results = []
# 展开不同特征组合
feature_indices = list(range(n_features))
for r in range(1, max_features + 1):
for combination in itertools.combinations(feature_indices, r):
X_subset = X[:, :, combination]
X_flattened = X_subset.reshape(n_samples, -1) # 展平为二维数组
# 初始化模型
model = make_pipeline(StandardScaler(), LinearRegression())
# 交叉验证
scores = cross_val_score(model, X_flattened, Y, cv=5, scoring=make_scorer(r2_score, multioutput='uniform_average'))
mean_score = scores.mean()
std_dev = scores.std()
# 记录结果
results.append((combination, mean_score, std_dev))
return results
# 评估特征组合
results = evaluate_feature_combinations(X, Y, max_features=3)
# 输出结果
for combination, mean_score, std_dev in results:
feature_names = ', '.join([f'Feature_{i}' for i in combination])
print(f'Features: ({feature_names}), Mean R2 Score: {mean_score:.4f}, Std Dev: {std_dev:.4f}')