【问题标题】:Wrong data for cross-validation (doesn't work)交叉验证的错误数据(不起作用)
【发布时间】:2020-11-29 06:15:37
【问题描述】:

我想在5折交叉验证过程中确定回归问题中的最佳正则化系数α。

当我为此运行以下简单代码时,抛出错误

alphas = np.logspace(-6, 2, 200)
skf = StratifiedKFold(n_splits=5)
lasso_cv = LassoCV(alphas=alphas, random_state=17, max_iter=5000)

for k, (train, test) in enumerate(skf.split(X_train_scaled, y_train)):
    lasso_cv.fit(X_train_scaled[train], y_train[train])

    print("[fold {0}] alpha: {1:.5f}, score: {2:.5f}".
          format(skf, lasso_cv.alpha_, lasso_cv.score(X_train_scaled[test], y_train[test]))
         )
for k, (train, test) in enumerate(skf.split(X_train_scaled, y_train)):
----> 6     lasso_cv.fit(X_train_scaled[train], y_train[train])

ValueError: Input contains NaN, infinity or a value too large for dtype('float64').

我基本上重写了 here 的代码(非常底部)


我没有 nan 或 inf 值:

where_XNaNs = np.isnan(X_train_scaled)
where_yNaNs = np.isnan(y_train)
print(X_train_scaled[where_XNaNs])
print(y_train[where_yNaNs])

print()

where_Xinfs = np.isinf(X_train_scaled)
where_yinfs = np.isinf(y_train)
print(X_train_scaled[where_Xinfs])
print(y_train[where_yinfs])
[]
Series([], Name: quality, dtype: int64)

[]
Series([], Name: quality, dtype: int64)

【问题讨论】:

  • 在 x 和 y 上尝试 fillna
  • 嗯,我的数据没有非空值。无论如何,它没有帮助

标签: python scikit-learn regression cross-validation


【解决方案1】:

帮助的人不想写答案,所以是我。

需要将y_train[train] 更改为y_train.iloc[train]y_test 相同)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-07
    • 2020-12-05
    • 1970-01-01
    • 2023-03-15
    • 2021-04-11
    • 1970-01-01
    • 2020-03-09
    • 2021-02-26
    相关资源
    最近更新 更多