【问题标题】:Remove outliers withing training set in cross-validation在交叉验证中删除训练集的异常值
【发布时间】:2022-11-08 07:39:12
【问题描述】:

我正在尝试进行交叉验证,但我想删除训练集中的异常值(例如仅低于 0.95 年),同时保持测试集完整。我在用:

cv_scores = cross_validate(reg, X=X, y=y_tr, cv=GroupKFold(n_splits=3), groups=groups, scoring=scoring, return_train_score=True, verbose=0) 

对于交叉验证(来自 sklearn.model_selection 的函数),但是我不知道如何进行必要的更改。

样本:

date id x1  x2   y
1    a  10  15  100
2    a  20  30  150
3    a  12  10  130
2    b  15  13  1000
3    b  16  19  90
1    c  18  12  700
2    c  20  15  60

例如:其中一个培训文件夹将包含 id a 和 b。在这种情况下,我想删除异常值(日期 2 id b),同时将异常值保留在测试文件夹中(日期 1 id c)。同样,在 a 和 c 培训文件夹中,我应该删除 (date 1 id c),同时保留 (date 2 id b)。

【问题讨论】:

  • 请提供其他信息,例如 - 示例数据集以及要过滤离群值的列。

标签: python pandas cross-validation sklearn-pandas


【解决方案1】:

大多数统计学家不建议去除异常值。相反,您应该分析异常值,例如使用烹饪距离。重要的是,从训练数据中去除异常值会导致数据偏移。

【讨论】:

    猜你喜欢
    • 2021-12-10
    • 2019-12-23
    • 2018-05-03
    • 2011-12-16
    • 2019-05-18
    • 2021-01-16
    • 2016-01-29
    • 1970-01-01
    • 2018-04-03
    相关资源
    最近更新 更多