首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自scikit的RobustScaler -学习行为不正确

来自scikit的RobustScaler -学习行为不正确
EN

Stack Overflow用户
提问于 2021-05-09 15:00:47
回答 1查看 66关注 0票数 1

我想从我的数据中拟合和剪切离群值部分,所以我使用了RobustScaler (使用来自here的数据):

代码语言:javascript
复制
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)

但是当我画出盒子图的时候,

代码语言:javascript
复制
df_robust.boxplot(figsize=(25,25))
plt.show()

显然,分位数范围之外的一些数据仍然存在:

您是否已经遇到过此问题?

EN

回答 1

Stack Overflow用户

发布于 2021-09-30 21:08:33

RobustScaler不会删除异常值。当拟合时,它计算出对异常值具有鲁棒性的标度和平均值。然而,异常值稍后将像所有其他点一样使用这些参数进行转换。

换句话说,RobustScaler保留异常值,并尝试不让它们影响非异常值的缩放。

从文档中:

此缩放器根据分位数范围(默认为IQR:四分位数范围)删除中位数并缩放数据。

所以它所做的就是像这样计算:

代码语言:javascript
复制
iqr = np.nanpercentile(xs, 75) - np.nanpercentile(xs, 25)
median = xs.median()

并像这样标准化(查看源代码中的精确比例常数):

代码语言:javascript
复制
(xs - median) / iqr

不存在删除异常值的步骤。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67455085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档