機器學習分類問題中 訓練資料類別不均衡怎麼解決

2022-03-18 13:03:04 字數 1093 閱讀 5307

碰到樣本資料類別不均衡怎麼辦?

如果有 10000個樣例, 做二分類,9990條資料 都屬於 正類1, 如果不處理的話 **全部結果為 1, 準確率也為 99%,但這顯然不是想要的結果。

碰到這樣樣本很不平衡的樣例,應該怎樣做。

def

down_sample(df):

df1=df[df['

label

']==1] #

正例df2=df[df['

label

']==0] #

#負例df3=df2.sample(frac=0.25) #

#抽負例

return pd.concat([df1,df3],ignore_index=true)

對樣本量很大的類,抽取更少的樣本,達到樣本平衡2.
def

up_sample(df):

df1=df[df['

label

']==1] #

正例df2=df[df['

label

']==0] #

#負例df3=pd.concat([df1,df1,df1,df1,df1],ignore_index=true)

return pd.concat([df2,df3],ignore_index=true)

對樣本量偏少的資料,採用重複取樣的策略

很多分類模型都有設定權重的引數

如 做二分類,0/1, 0:1 = 1:100 可以設定scale_pos_weight=100

可以指定, 但對於多分類問題需要注意:

threshold = 0.45

for j in

range(len(preds)):

if preds[j]>=threshold :

preds[j]=1

else

:    preds[j]=0

使用準確度 結果可能不準確。可以嘗試 confusion matrix, precision, recall, auc_roc

分類問題中類別加權和樣本加權

分類問題中常常會用到類別和樣本加權,具體應用場景如下 類別加權 當樣本 的結果影響不同時,一般會用到類別加權,比如進行癌症的檢測,這時我們更期望盡可能的發現真實患有癌症的患者,此時就要對癌症患者的類別進行加權,使得對癌症患者進行 時的結果對損失函式造成更大的影響。樣本加權 與上述同理,樣本加權指的是...

機器學習處理分類問題時的類別均衡問題

舉個例子,在極端情況下,在總體為1000的樣本,若中有999個樣本標記為a類,有1個樣本標記為b類。則很明顯,a類與b類的樣本數偏差極大。一般認為當類別比例超過4 1時,則認為類別不均衡。主要分為以下這兩種方式 1.從資料集入手改變樣本分佈,降低不平衡程度 2.從學習演算法入手,修改演算法來適應不平...

機器學習分類問題中,資料不均衡時的解決方法

資料不均衡是指資料集中每種類別的資料的數量相差比較大。比如乙個資料集s中,a類資料有100個,b類有1個,一般相差乙個以上數量級的就算是資料不均衡了,需要進行預處理。資料不均衡會導致最終的分類結果有偏差。同樣以資料集s作為說明,如果不作任何處理直接用s作為訓練資料,那麼用訓練模型對乙個新的資料進行測...