从训练数据中移除异常值

Remove outliers from training data

假设我有一个 pandas 数据框,我使用以下方法删除异常值:

y = df['Label']
df = df.drop(['Label'], axis=1)
new_df = df[(np.abs(stats.zscore(df)) < 3).all(axis=1)]

由于我不想在过程中包含 'Label' 列,如何同时删除异常值标签?

谢谢

只需对具有数字数据类型的列执行 zscore 计算。无需事先删除“标签”列。

new_df = df[(np.abs(stats.zscore(df.select_dtypes("numeric"))) < 3).all(axis=1)]

您可以使用剩余的索引来匹配新的 df 和 Label 列:

new_df.join(y)

使用 autooptimizer 模块,您可以轻松地从数据集中删除异常值。 它使用四分位距方法去除异常值

pip install autooptimizer 

from autooptimizer.process import outlier_removal 

outlier_removal(data)