說明:目前 只記錄了 過采樣 和 欠采樣 的代碼部分
1 樣本分布不均衡描述:
樣本量差距過大會影響到建模結果
過抽樣:
from imblearn.over_sampling import SMOTE
又稱上采樣(over-sampling),通過增加分類中少數類樣本的數量來實現樣本均衡
import pandas as pd # 導入數據文件 df = pd.read_table('data.txt', sep='\t')
2 查看數據分布,發現分布不均衡
df.groupby('label').count()
3 切片,分開 特征x 和 目標y
x, y = df.iloc[:,:-1], df.iloc[:,-1]
4 使用 SMOTE 進行過抽樣處理
# 導包 from imblearn.over_sampling import SMOTE # 建立模型 smote_model = SMOTE() # 進行過抽樣處理 x_smote, y_smote = smote_model.fit_sample(x, y) # 將特征值和目標值組合成一個DataFrame smote_df = pd.concat([x_smote,y_smote], axis=1)
處理完成,查看分布情況
5 使用 RandomUnderSampler 方法進行欠抽樣處理
from imblearn.under_sampling import RandomUnderSampler # 建立模型 under_model = RandomUnderSampler() # 欠抽樣處理 x_under, y_under = under_model.fit_sample(x,y) # 合並數據 under_df = pd.concat([x_under, y_under],axis=1)
處理完成,查看分布情況