【问题标题】:Target Variable has Outliers : Machine Learning Regression目标变量有异常值:机器学习回归
【发布时间】:2019-06-07 13:05:16
【问题描述】:

我目前正在研究一个回归问题,其中目标变量有接近 2000 个异常值,而 54000 个非异常值。

我想知道我们如何处理目标变量有异常值的数据??

到目前为止我尝试过的事情:

  1. 获取包括异常值在内的整个列车数据 - 分数还可以
  2. 完全删除训练数据中的异常值 - 分数更差
  3. 在训练数据中采用 80% 的异常值组合 - 分数提高

【问题讨论】:

  • 我投票结束这个问题,因为它与编程无关。
  • 我不明白..异常值处理不是用编程完成的吗??
  • SO 是关于 programmingcoding 问题,而不是关于 methodology 问题(比如你的);有关 ML 方法的问题应发布至Cross ValidatedData Science。关于你的问题,当然,火星轨道飞行器的导航也是如此,但这并不意味着我们将开始回答有关星际导航的问题这里...
  • 感谢对其他网站的引用。我不同意你的观点。。当人们问他们有关火星轨道飞行器的问题时,一定要忽略它们。。stackoverflow 中的 p.s 新向导选项可以选择推荐。这就是我的问题。关于异常值处理的建议。
  • 非常欢迎您不同意;至于一般建议,请检查What topics can I ask about here? 中的第 4 点,以确认它们对于 SO 来说是明确的题外话(不太清楚你的意思,因为我无权访问向导)...

标签: python machine-learning scikit-learn linear-regression


【解决方案1】:

在我的建议中,如果目标变量中有大纲,那么不要简单地从数据集中删除行,而是尝试将它们置于边界范围内。

你可以确定上边界和下边界但绘制箱线图

import seaborn as sns     
sns.boxplot(x=dataset['target Variable'])

另外,您可以使用计算目标变量中每个值的总出现次数

dataset['target variable'].value_counts()

然后使用下面的代码设置上限和下限

dataset.loc[dataset['target variable'] > upper_bound, 'target variable'] = upper_limit
dataset.loc[dataset['target variable'] < Lower_bound, 'target variable'] = Lower_limit

【讨论】:

    猜你喜欢
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 2019-10-03
    • 2018-06-05
    • 2019-08-01
    • 2015-02-09
    • 2019-04-17
    • 2018-05-17
    相关资源
    最近更新 更多