簡體   English   中英

分層抽樣以模擬人口分布

[英]Stratified Sampling to mimic Population Distribution

我是 R 新手,我最近對訓練和測試拆分使用分層抽樣以確保目標標簽在兩者中的比例相等,現在我想對訓練數據進行下采樣,以使總體分布/訓練分布與新的相似下樣本分布。

我想下采樣的原因是我有 1100 萬行 56 列,通過網格/隨機/貝葉斯搜索進行參數調整需要幾天時間

我正在使用 XGboost,這是一個二元分類問題

如果有人可以幫助我,我將不勝感激。

下面是我的代碼

 train_rows = sample.split(df$ModelLabel, SplitRatio=0.7) ## Stratiefied sampling train = df[ train_rows,] test = df[!train_rows,]`enter code here`

實現此目標的最簡單方法是計算 2 個類之間的比率。 假設在 1100 萬個中有 300 萬個 0 和 800 萬個 1。 因此,您的 0:1 比率是 3:8。 現在,假設您想將其下采樣到 100 萬行,您可以隨機選擇 100 萬行保持相同的比例,即 3:8。 所以從數學上講,它大約有 27 萬(約)0 類樣本和 73 萬類 1 樣本(約)。 您可以自己計算確切的數字。 現在,您可以使用 Dataframe.sample() 函數來獲取下采樣數據。 我正在為此編寫 python 代碼。

df_class_0 = df[df.target == 0]
df_class_1 = df[df.target == 1]
df_class_0_under = df_class_0.sample(2.7 lakh)
df_class_1_under = df_class_1.sample(7.3 lakh)
df_test_under = pd.concat([df_class_0_under, df_class_1_under], axis=0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM