赞
踩
提示:sklearn.preprocessing.RobustScaler(解释和原理,分位数,四分位差)
提示:以下是本篇文章正文内容,下面案例可供参考
RobustScaler 的居中和缩放统计基于百分位数,因此不会受到少数非常大的边缘异常值的影响。
计算公式如下(具体计算公式以官网提供的代码为准):
value_result = (value-Media)/(Q1-Q3)
Q1的位置 = 1 * (n + 1) / 4
Q3的位置 = 3 *(n + 1) / 4
n : 表示数据的个数。
media : 中位数
Q1 : 是第 1 个四分位数(第 25 个分位数)
Q3 : 第 3 个四分位数(第 75 个分位数)
import pandas as pd from sklearn.preprocessing import RobustScaler data = pd.DataFrame( { 'a': [1, 2, 3, 4, 6, 5, 6], 'b': [5, 6, 6, 5, 6, 5, 6], 'c': [9, 100, 2, 6, 5, 6, 8] } ) print(data.values) robustlizer = RobustScaler(quantile_range=(25.0, 75.0)) robustlizer_data = robustlizer.fit_transform(data) print(robustlizer.get_params()) print(robustlizer_data)
[[ 1 5 9] [ 2 6 100] [ 3 6 2] [ 4 5 6] [ 6 6 5] [ 5 5 6] [ 6 6 8]] {'copy': True, 'quantile_range': (25.0, 75.0), 'unit_variance': False, 'with_centering': True, 'with_scaling': True} [[-1. -1. 1. ] [-0.66666667 0. 31.33333333] [-0.33333333 0. -1.33333333] [ 0. -1. 0. ] [ 0.66666667 0. -0.33333333] [ 0.33333333 -1. 0. ] [ 0.66666667 0. 0.66666667]]
第一列数据:【1,2,3,4,6,5,6】,重排列:1,2,3,4,5,6,6
media=4
Q1的位置 =(n + 1) / 4 = (7+1)/ 4 = 2,则Q1 = 2,同理Q3 =6
value_result[0] = (1-4)/(6-3)=-1
其他同理
1,由于中位数的选取和分位点的选取规则不一样,可能导致不同的结果,尤其在处理的数据较少时,可能影响较大。
2,根据Q1,Q3的计算公式可得,有时候计算的为分数,所以在这个时候Q1和Q3的取法可能有很大的不同。
3,当数据量足够,数据较密集时,可以看到和计算公式就很吻合。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。