機器學習入門-數據過采樣(上采樣)1. SMOTE


from imblearn.over_sampling import SMOTE  # 導入

overstamp = SMOTE(random_state=0)

# 對訓練集的數據進行上采樣,測試集的數據不需要
SMOTE_train_x, SMOTE_train_y = overstamp.fit_sample(train_x, train_y)

由於數據分布的不均衡,因此對數據進行上采樣,上采樣的數據指的是將少數的樣本擴增到與多數樣本相同的樣本數

使用的方法:

            取少數樣本中的一個數據,求出該樣本與其他樣本的距離,根據歐式距離進行排序,取出前5個數據

           新數據的位置   X_new = X + rand(0, 1) * distance     X表示當前數據的位置, distance表示與另外一個數據的歐式距離,乘上了一個隨機值

# 進行數據過采樣操作
from imblearn.over_sampling import SMOTE
from sklearn.cross_validation import train_test_split

X = data.loc[:, data.columns != 'Class']
y = data.loc[:, data.columns == 'Class']

train_x, test_x, train_y, test_y = train_test_split(X, y, test_size=0.3, random_state=0)
overstamp = SMOTE(random_state=0)

SMOTE_train_x, SMOTE_train_y = overstamp.fit_sample(train_x, train_y)
# 統計數據的標簽0,1個數
print(pd.value_counts(SMOTE_train_y, sort=True).sort_index())

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM