【问题标题】:Recursive Feature Elimination with LinearRegression Python使用 LinearRegression Python 进行递归特征消除
【发布时间】:2017-09-29 06:54:29
【问题描述】:

所以我正在做一个项目,该项目使用 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)

带有“ValueError:X 的形状与拟合期间不同。”不知道是什么导致了错误。

感谢任何帮助/见解!

谢谢!

【问题讨论】:

    标签: python recursion scikit-learn linear-regression


    【解决方案1】:

    transform 方法用于“将 X 减少到选定的特征”。此方法的目的是创建一个仅包含与拟合相关的变量的新 X。

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

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

    【讨论】:

    • 这是有道理的。我们没有得到很多关于这个的解释,我还在纠结这个问题。大声笑
    • 是的,这只是一小部分。除此之外,代码还有很多问题。但肯定回答了那部分。
    • 如果您对答案感到满意,请将其标记为已接受答案。如果您觉得这不能完全回答问题,请告诉我有什么不清楚/遗漏的地方。
    猜你喜欢
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 2016-03-16
    • 2020-10-27
    • 2020-04-05
    • 2019-05-29
    • 2014-07-12
    • 2014-07-30
    相关资源
    最近更新 更多