日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

【机器学习】平衡你的数据集的几项技巧

發(fā)布時間:2025/3/12 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【机器学习】平衡你的数据集的几项技巧 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

作者 | Praveen Thenraj

編譯 | VK
來源 | Towards Data Science

“如果你被問題的規(guī)模所壓倒,把它分解成更小的部分……”

機器學(xué)習(xí)中的類不平衡是一個重要的問題,也是處理數(shù)據(jù)集時最受關(guān)注的問題之一。類不平衡的數(shù)據(jù)集往往更具欺騙性,如果處理不當(dāng),結(jié)果可能導(dǎo)致錯誤的決策。

最近我碰巧在一個數(shù)據(jù)集中工作,它有一個類不平衡的問題。我不太喜歡數(shù)據(jù)生成技術(shù),并且由于不平衡的嚴(yán)重性,我不想使用像分層K-fold這樣的技術(shù),所以我使用了另一種技術(shù),它幫助模型比傳統(tǒng)技術(shù)更好地學(xué)習(xí)數(shù)據(jù)。

也許我有點晚使用這個技術(shù),但我想在這里分享它。

import?pandas?as?pdtrain=pd.read_csv('/Desktop/Files/train_data.csv') print(train['Top-up?Month'].value_counts())No?Top-up?Service????106677>?48?Months???????????8366 36-48?Months???????????3656 24-30?Months???????????3492 30-36?Months???????????3062 18-24?Months???????????2368 12-18?Months???????????1034 Name:?Top-up?Month,?dtype:?int64

以上是訓(xùn)練數(shù)據(jù)中因變量的值計數(shù)。從上面可以清楚地看到,“No Top-up Service”類和其他類之間存在嚴(yán)重的類不平衡。


方法

所以我在這里采用的方法是將大多數(shù)類數(shù)據(jù)分成大小為“n”的小折。每個數(shù)據(jù)塊(折)都有與大多數(shù)類相關(guān)的“k”個數(shù)據(jù)點。所有其他次要類數(shù)據(jù)點都聚集在一起('m')

def?chunks(df,folds):df_no_topup=df.loc[df['Top-up?Month']==0]df_topup=df.loc[df['Top-up?Month']==1]recs_no_topup=int(df.loc[df['Top-up?Month']==0].shape[0]/folds)start_no_topup=0stop_no_topup=recs_no_topuplist_df=[]for?fold?in?range(0,folds):fold_n=df_no_topup.iloc[start_no_topup:stop_no_topup,:]start_no_topup=stop_no_topupstop_no_topup=start_no_topup+recs_no_topupdf=pd.concat([fold_n,df_topup],axis=0)list_df.append(df)return?list_df

上面的代碼片段將主要類數(shù)據(jù)劃分為多個折,每個折包含相同數(shù)量的數(shù)據(jù)點。然后大多數(shù)類數(shù)據(jù)的第一個折(在上面的代碼中被引用為fold_n)與次要類(df_topup)的所有數(shù)據(jù)連接在一起。

以上在一個循環(huán)中發(fā)生,循環(huán)將繼續(xù),直到等于折“n”的大小。可以看到,每次,大多數(shù)類數(shù)據(jù)的一個新塊與次要類的完整數(shù)據(jù)連接,從而允許模型在訓(xùn)練階段在比例相同的數(shù)據(jù)下進行訓(xùn)練。

Major?class?initially?-?106677 Fold?size(n)?-?5 Major?class?data(k)?per?fold=106677/5?-?21335 Minor?class(all?minor?classes?combined)?-?21978 Total?data?per?fold(major+minor)?-?43313

下面代碼片段中的代碼也可以驗證這一點。

list_data=chunks(df_train_main,5) list_data_shape=[df.shape?for?df?in?list_data] print(list_data_shape)[(43313,?6),?(43313,?6),?(43313,?6),?(43313,?6),?(43313,?6)]

現(xiàn)在可以看到,一個具有嚴(yán)重類不平衡問題的大數(shù)據(jù)集被劃分為5個小數(shù)據(jù)集

不過,以下是我從上述方法中認(rèn)識到的兩個問題:

  • 添加到每個折中的大多數(shù)類數(shù)據(jù)的分布。因為我們只是將整個大類數(shù)據(jù)劃分為折(n),折的分布與原有分布不同。

  • 不過,在所有需要解決的問題中,類(12-18個月)和主要類(“No Top-up Service”)之間仍然存在不平衡。但對于二類,這種方法效果更好。

這些折的數(shù)據(jù)然后被傳遞到一個模型,以訓(xùn)練模型使用更少的不平衡數(shù)據(jù)。這是一種通用的方法,不僅可以應(yīng)用于結(jié)構(gòu)化數(shù)據(jù),還可以應(yīng)用于圖像等非結(jié)構(gòu)化數(shù)據(jù)。

我個人在一個Kaggle競賽中應(yīng)用了同樣的方法進行圖像分類,并獲得了更好的準(zhǔn)確度。

往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機器學(xué)習(xí)在線手冊深度學(xué)習(xí)筆記專輯《統(tǒng)計學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載機器學(xué)習(xí)的數(shù)學(xué)基礎(chǔ)專輯溫州大學(xué)《機器學(xué)習(xí)課程》視頻 本站qq群851320808,加入微信群請掃碼:

總結(jié)

以上是生活随笔為你收集整理的【机器学习】平衡你的数据集的几项技巧的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。