提示:sklearn.preprocessing.RobustScaler(解釋和原理,分位數,四分位差)
文章目錄
- @[TOC](文章目錄)
- 一、RobustScaler 是什么?
- 二、代碼
- 1.代碼
- 2.輸出結果
- 總結
文章目錄
- @[TOC](文章目錄)
- 一、RobustScaler 是什么?
- 二、代碼
- 1.代碼
- 2.輸出結果
- 總結
提示:以下是本篇文章正文內容,下面案例可供參考
一、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 個分位數)
二、代碼
1.代碼
import pandas as pd
from sklearn.preprocessing import RobustScalerdata = 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)
2.輸出結果
[[ 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,當數據量足夠,數據較密集時,可以看到和計算公式就很吻合。