目錄
NO.1 ---Pandas數(shù)據(jù)處理
NO.2 ---數(shù)值型數(shù)據(jù)的處理
NO.3 ---離散化、分箱维费、分桶
NO.4 ---分類(lèi)特征的處理
NO.5 ---處理樣本分布不均衡
NO.6 ---數(shù)據(jù)抽樣
NO.1 ---Pandas數(shù)據(jù)處理
? ? ? 一 .缺失值的處理
? ? ? ? ? ? ? ? API
? ? ? ? ????1.直接刪
? ??????????????????????如果缺失值比例比較大 30% ~40% 以上可以考慮刪除
? ? ? ? ????2.填充
? ??????????????????????統(tǒng)計(jì)值 均值恰画、加權(quán)均值踪少、中位數(shù)等方填充
????????????????????????統(tǒng)計(jì)法
????????????????????????模型法: 對(duì)缺失數(shù)據(jù)進(jìn)行預(yù)測(cè)
????????????????????????分類(lèi) 眾數(shù)
????????????????????????算法 LR 隨機(jī)森林
? ? ? ?????3.?數(shù)據(jù)缺失 有些時(shí)候也是一種特征批什,不見(jiàn)得一定要處理
? ??????????????????????以用戶(hù)性別字段為例哆窿,男 女 未知?
????????二. 異常值????
? ??????????判斷異常值方法:Z-Score : 一個(gè)值 距離平均數(shù)多少個(gè)標(biāo)準(zhǔn)差
? ??????????????????????Z-Score = X-μ/σ 其中μ為總體平均值链烈,X-μ為離均差,σ表示標(biāo)準(zhǔn)差
? ??????????如果是業(yè)務(wù)產(chǎn)生的異常值挚躯,根據(jù)具體的情況決定
????????????????????????刪除/替換
? ? ? ? ? ? 保留
????????????????????????異常值由運(yùn)營(yíng)活動(dòng)導(dǎo)致强衡,正常反映了業(yè)務(wù)運(yùn)營(yíng)結(jié)果
????????????????????????異常檢測(cè)模型
????????????????????????????????如異常客戶(hù)(羊毛黨)識(shí)別码荔,作弊流量檢測(cè)漩勤,信用卡詐騙識(shí)別等
????????????????????????對(duì)異常值不敏感的數(shù)據(jù)模型
????????????????????????如決策樹(shù)
????????三. 重復(fù)值處理
? ??dataframe.duplicated() ?# 判斷重復(fù)數(shù)據(jù)記錄
????dataframe.drop_duplicates() # 刪除數(shù)據(jù)記錄中所有列值相同的記錄
????樣本不均衡情況下
????????分類(lèi)模型,某個(gè)分類(lèi)訓(xùn)練數(shù)據(jù)過(guò)少缩搅,可以采取簡(jiǎn)單復(fù)制樣本的方法來(lái)增加樣本數(shù)量
????????需要故意重復(fù)值
????其它情況下 去重
NO.2 ---數(shù)值型數(shù)據(jù)的處理
????????一. 歸一化
? ? = (x-min)/(max-min)
????取值范圍 [0越败,1]
????容易受到極值(異常值)影響
? ??????**歸一化Max-Min : 建立MinMaxScaler模型對(duì)象---->minmax_scaler**
? ??????二. 標(biāo)準(zhǔn)化: x'=(x-mean)/std
? ??std是方差的算術(shù)平方根。離mean的實(shí)際距離,
????標(biāo)準(zhǔn)化之后的數(shù)據(jù)是以0為均值誉己,方差為1的正態(tài)分布眉尸。但是Z-Score方法是一種中心化方法
????中心化: 所有(X-mean)的和相加等于0.
????????????5人的工資,分別為12000、5000巨双、8000噪猾、3000、4000元筑累,這5個(gè)數(shù)據(jù)作為一個(gè)獨(dú)立的數(shù)據(jù)集袱蜡,平均值為6400元,每個(gè)人的工資依次減去平均水平6400慢宗,得到5600坪蚁、-1400奔穿、1600、-3400敏晤、-2400贱田,新的5個(gè)數(shù)據(jù)其平均值等于0,這個(gè)過(guò)程就是數(shù)據(jù)的中心化
????????標(biāo)準(zhǔn)化: StandardScaler對(duì)象--->zscore_scaler
????????三. 什么時(shí)候用 標(biāo)準(zhǔn)化 歸一化
knn或者樹(shù)模型 不需要標(biāo)準(zhǔn)化 歸一化
線性回歸,邏輯回歸 如果不同特征數(shù)據(jù)嘴脾,數(shù)量級(jí)不一樣 需要 就需要做標(biāo)準(zhǔn)化 歸一化
a0x0 + a1x1+a2x2+....=Y
NO.3 ---離散化男摧、分箱、分桶
對(duì)本來(lái)是連續(xù)的(數(shù)值型的)數(shù)據(jù)译打,分組耗拓,落在一組之內(nèi)的數(shù)據(jù),忽略差異
離散化/分箱需要注意
????盡量不要讓每個(gè)箱中的樣本差距過(guò)大
常見(jiàn)現(xiàn)針對(duì)連續(xù)數(shù)據(jù)化離散化的方法
????分位數(shù)法:使用四分位奏司、五分位乔询、十分位等分位數(shù)
????距離區(qū)間法:可使用等距區(qū)間或自定義區(qū)間的方式進(jìn)行離散化
????頻率區(qū)間法:將數(shù)據(jù)按照不同數(shù)據(jù)的頻率分布進(jìn)行排序,然后按照等頻率或指定頻率離散化韵洋,這種方法會(huì)把數(shù)據(jù)變換成均勻分布
????聚類(lèi)法:例如使用K均值將樣本集分為多個(gè)離散化的簇竿刁。
pandas.cut 自己制定分箱的邊界pandas.qcut 等頻分箱 盡量讓每個(gè)箱的樣本量一致
????????API
????1.針對(duì)時(shí)間數(shù)據(jù)的離散化
2.針對(duì)連續(xù)數(shù)據(jù)的離散化:自定義分箱區(qū)間實(shí)現(xiàn)離散化
3.針對(duì)連續(xù)數(shù)據(jù)的離散化:使用聚類(lèi)法實(shí)現(xiàn)離散化
5. 針對(duì)連續(xù)數(shù)據(jù)的二值化
NO.4 ---分類(lèi)特征的處理
????one-hot編碼
分類(lèi)的特征中有一些字符串的數(shù)據(jù),需要把字符串轉(zhuǎn)換成數(shù)值型
使用one-hot 來(lái)表示分類(lèi)特征麻献,而不是用0们妥,1猜扮,2來(lái)表示分類(lèi)勉吻,避免算法把分類(lèi)特征當(dāng)做連續(xù)特征處理
????onehot處理
sklearn model_enc = OneHotEncoder()
fit_transform # 標(biāo)志轉(zhuǎn)換
只要丟進(jìn)去的數(shù)據(jù)都會(huì)做onehot處理
????get_dummies (啞變量)處理非數(shù)值型的變量
get_dummies 只處理非數(shù)值型的特征
????時(shí)間類(lèi)型數(shù)據(jù)處理
轉(zhuǎn)換成pandas datetime類(lèi)型
pd.to_datetime(car_sales['date_t'])
????利用datetime可以方便取出各種維度的時(shí)間信息
取出幾月份: car_sales['date'].dt.month
取出來(lái)是幾號(hào): car_sales['date'].dt.day
取出一年當(dāng)中的第幾天: car_sales['date'].dt.dayofyear
取出星期幾: car_sales['date'].dt.dayofweek
NO.5 ---處理樣本分布不均衡
????樣本分布不均衡易出現(xiàn)場(chǎng)景
????異常檢測(cè)
????客戶(hù)流失
????偶發(fā)事件
? ??過(guò)采樣: 使用imblearn中的SMOTE
其通過(guò)增加分類(lèi)中少數(shù)類(lèi)樣本的數(shù)量來(lái)實(shí)現(xiàn)樣本均衡
model_smote.fit_sample(x, y) # 輸入數(shù)據(jù)并作過(guò)抽樣處理
返回特征和目標(biāo)過(guò)采樣之后的結(jié)果
處理之后需要把x,y拼成新的dataframe
? ??欠采樣: 使用imblearn中RandomUnderSampler做
通過(guò)減少分類(lèi)中多數(shù)類(lèi)樣本的數(shù)量來(lái)實(shí)現(xiàn)樣本均衡
NO.6 ---數(shù)據(jù)抽樣
(1)簡(jiǎn)單隨機(jī)抽樣
(2)等距抽樣
????????????????numpy.random.choice(a, size=None, replace=True, p=None)
(3)分層抽樣?