我想从我的数据中拟合和剪切离群值部分,所以我使用了RobustScaler (使用来自here的数据):
from sklearn.preprocessing import RobustScaler
scaler = RobustScaler(quantile_range = (25.0, 75.0))
df_robust = scaler.fit_transform(df)
df_robust = pd.DataFrame(df_robust,columns=df.columns)但是当我画出盒子图的时候,
df_robust.boxplot(figsize=(25,25))
plt.show()显然,分位数范围之外的一些数据仍然存在:

您是否已经遇到过此问题?
发布于 2021-09-30 21:08:33
RobustScaler不会删除异常值。当拟合时,它计算出对异常值具有鲁棒性的标度和平均值。然而,异常值稍后将像所有其他点一样使用这些参数进行转换。
换句话说,RobustScaler保留异常值,并尝试不让它们影响非异常值的缩放。
从文档中:
此缩放器根据分位数范围(默认为IQR:四分位数范围)删除中位数并缩放数据。
所以它所做的就是像这样计算:
iqr = np.nanpercentile(xs, 75) - np.nanpercentile(xs, 25)
median = xs.median()并像这样标准化(查看源代码中的精确比例常数):
(xs - median) / iqr不存在删除异常值的步骤。
https://stackoverflow.com/questions/67455085
复制相似问题