資料探勘學習之路四 Python去極值方法

2021-10-03 01:44:53 字數 1706 閱讀 7309

#mad(mean absolute deviation)又稱為絕對值差中位數法,是一種先需計算所有因子與平均值之間的距離總和來檢測離群值的方法.

#處理的邏輯:

#第一步,找出所有因子的中位數 xmedian

#第二步:得到每個因子與中位數的絕對偏差值 xi?xmedian

#第三步:得到絕對偏差值的中位數 mad

#第四步:確定引數 n,從而確定合理的範圍為 [xmedian?nmad,xmedian+nmad],並針對超出合理範圍的因子值做如下的調整

#超出最大值的用最大值代替,小於最小值的用最小值代替。

def filter_extreme_mad(series,n): #mad:中位數去極值

median = series.quantile(0.5)

new_median = ((series - median).abs()).quantile(0.50)

max_range = median + n*new_median

min_range = median - n*new_median

return np.clip(series,min_range,max_range)

data6=series([18,18,19,19,20,20,100])

data7 = filter_extreme_mad(data6,7)

print(data7)

#3σ法又稱為標準差法。標準差本身可以體現因子的離散程度,是基於因子的平均值 xmean而定的。

#在離群值處理過程中,可通過用 xmean±nσ來衡量因子與平均值的距離。

#標準差法處理的邏輯與mad法類似:

#第一步:計算出因子的平均值與標準差

#第二步:確認引數 n(這裡選定 n = 3)

#第三步:確認因子值的合理範圍為 [xmean?nσ,xmean nσ],並對因子值作如下的調整:

#超出最大值的用最大值代替,小於最小值的用最小值代替。

def filter_extreme_3sigma(series,n=3): #3 sigma

mean = series.mean()

std = series.std()

max_range = mean + n*std

min_range = mean - n*std

print(max_range)

print(min_range)

return np.clip(series,min_range,max_range)

data8 = filter_extreme_3sigma(data6)

print(data8)

#將因子值進行公升序的排序,對排位百分位高於97.5%或排位百分位低於2.5%的因子值,進行類似於 mad 、 3σ 的方法進行調整。

def filter_extreme_percentile(series,min = 0.10,max = 0.90): #百分位法

series = series.sort_values()

q = series.quantile([min,max])

return np.clip(series,q.iloc[0],q.iloc[1])

data9 = filter_extreme_percentile(data6)

print(data9)

資料探勘學習筆記四

1.星型結構 star schema 將事實表和維表進行連線 join 可以得到資料的值以及對資料的多維描述.2.雪花模型 snowflake schema 由 星型模型 演變來的,某些維表是規範化的,以便減少冗餘.3.星座模型 在星型模型的基礎上,具有多個事實表.4.雪暴模型 在星座模型的基礎上,...

資料探勘學習筆記(四)

資料的屬性 1.資料物件 資料物件又稱為樣本 例項 資料點 物件或元組。資料物件用屬性描述。資料表的行對應資料物件,列對應屬性。2.屬性 attributes 3.屬性型別 二元屬性 binary attribute 布林屬性 序數屬性 ordinal attribute 數值屬性 numeric ...

python學習之路四 if語句

python if語句 1.簡單的使用if語句 li a b c d for l in li if l a print l.upper elif l b print l.title else l c print l 2 檢查是否相等時不考慮大小寫 在python中兩個大小寫不同的值會被視為不相等 如...