【问题标题】:Find outlier records considering in dataframe查找数据框中考虑的异常记录
【发布时间】:2021-08-20 21:55:20
【问题描述】:

我正在构建一个身体测量预测机器学习模型。

我想删除与年龄、体重和身高相关的脂肪、颈部、胸部、腹部、臀部、大腿、膝盖、脚踝、二头肌、F 型臂和手腕的异常集合的记录。

我的意思是,如果 25 岁、190 体重和 75 身高的记录在 %Fat 或 Neck 或 Chest 有一定的四分位数范围,那么这些列的所有值都应在四分位数范围内,并且任何异常值都可以替换为平均值。 this is what my dataset looks like

【问题讨论】:

    标签: python machine-learning statistics data-cleaning outliers


    【解决方案1】:

    我不完全确定,如果我知道你想如何清除异常值。我为一个项目编写了一个小公式,以根据给定的分位数清理数据集。这个公式的特别之处在于,它分两个阶段起作用。首先,它根据给定的百分比级别获取要清理的每列的分位数,其次,它删除所有值高于给定阈值的行。与遍历每一列相比,两步过程允许删除更少的值。代码如下:

    def clean_quantiles(dataset, variables=[], frame=[0.025, 0.975]):
        df = dataset.copy()
        quantiles = []
        
        for name in variables:
            quantiles.append([df[name].quantile(frame[0]), df[name].quantile(frame[1])])
        
        for i in range(0, len(variables)):
            df = df[df[variables[i]].between(quantiles[i][0], quantiles[i][1])]
        
        df.reset_index(drop=True, inplace=True)
        return df
    
    • “dataset”是您放置 pandas 数据框的位置
    • “变量”应该是要检查的列列表
    • “frame”包含您要排除的异常值百分比

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-16
      • 2020-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多