使用LinearRegression Python进行递归特征消除

时间:2017-05-01 20:40:53

标签: python recursion scikit-learn linear-regression

所以我正在开发一个项目,该项目使用RFECV进行特征选择,然后使用所选变量进行岭回归。

数据集的结构方式我有一个train_y =因变量,train_x =数据框中的其他所有内容(变量在其他模型中都很好)。

以下是我正在使用的代码:

# Variable Selection with RFECV
lr = LinearRegression()
rfecv = RFECV(estimator = lr, step = 1, cv=StratifiedKFold(train_y, 2), scoring='r2')
selector = rfecv.fit(train_x, train_y)
train_X_new = selector.transform(train_x)
train_Y_new = selector.transform(train_y)

param_grid = {'alpha': sp_rand()}
# create and fit a ridge regression model, testing random alpha values
model = Ridge()
rsearch = RandomizedSearchCV(estimator=model, param_distributions=param_grid, n_iter=100)
rsearch.fit(train_X_new, train_Y_new)
expected = train_X_new
predicted = model.predict(train_Y_new)
# summarize the fit of the model
mse = np.mean((predicted-expected)**2)
print "MSE and Model Score: "
print(mse)
print(model.score(train_X_new, train_Y_new))

此行代码错误:

train_Y_new = selector.transform(train_y)

with“ValueError:X的形状与拟合时的形状不同。”不知道导致错误的原因。

感谢任何帮助/见解!

谢谢!

1 个答案:

答案 0 :(得分:1)

变换方法用于“将X缩小为所选要素”。此方法的目的是创建一个仅包含与拟合相关的变量的新X.

您收到错误,因为转换只需要其形状与其所适合的X匹配的输入。 Y的形状不正确,不应该。

你的目标变量Y应该没有变化。在Y上调用变换是没有意义的,因为消除特征只意味着改变X.

相关问题