我想知道是否可以使用带有sklearn
包的多变量估计器进行 RFE。我检查了文档,找不到任何支持或反对它的东西。这是最小的代码:
import sklearn.linear_model as skl
from sklearn.feature_selection import RFE
from scat import *
from sklearn import metrics, model_selection
# -- params
n_folds = 5
N = 5000
# -- regressor
regress = skl.RidgeCV(alphas=[1e-6, 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1])
# -- cross-validation
P = np.random.permutation(N).reshape((n_folds, -1))
cross_val_folds = []
for i_fold in range(n_folds):
fold = (np.concatenate(P[np.arange(n_folds) != i_fold], axis=0), P[i_fold])
cross_val_folds.append(fold)
my_X = np.random.normal(0,1,[N, 315])
my_y = np.random.normal(0,1,[N, 2])
my_pred = model_selection.cross_val_predict(regress, X=my_X, y=my_y, cv=cross_val_folds)
MAE = metrics.mean_absolute_error(my_y, my_pred)
RMSE = np.sqrt(metrics.mean_squared_error(my_y, my_pred))
print('MAE: {}, RMSE: {}'.format(round(MAE, 5), round(RMSE, 5)))
rfe = RFE(regress, 300)
feature_final = rfe.fit_transform(my_X, my_y)
但我在测试时收到以下错误
ValueError: 错误的输入形状 (5000, 2)
这并没有提供太多信息。
编辑:
显然,使用 RFE 功能, y 经历
y = column_or_1d(y, warn=True)
这要求 y 是一个向量。有解决方法吗?