簡體   English   中英

不使用任何機器學習的 Python 分層采樣

[英]Stratified Sampling in Python without using any Machine Learning

我有一個包含:(“wordsList”和“classList”文件)的數據集。

wordsList 文件包含 72 個預處理的電子郵件。 每行都是從每封電子郵件中提取的單詞列表。

classList 文件包含指示電子郵件是普通郵件還是廣告的類標簽(0 代表普通郵件,1 代表廣告)。

我的任務是在 Python 中開發一個朴素貝葉斯分類器作為電子郵件過濾器。 即,分類器預測電子郵件是普通郵件還是廣告。

為了開發這個,我需要使用分層抽樣從 72 行中選擇 66 行用於訓練,其余 6 行用於測試。 然后返回這 6 條記錄的分類概率。 但對我來說壞消息是我不能使用任何機器學習庫,只能使用 NumPy 和 SciPy。

有什么方法可以實現嗎? 如果是這樣,是否有任何示例代碼可以從頭開始實現此方法? 先感謝您!

類列表文件

單詞列表文件

最簡單的解決方案是使用 pandas 的groupby方法,然后應用frac=0.91采樣,以在您的情況下從 72 行中獲取 66 行:

cL2=cL.groupby(['classList']).apply(lambda x: x.sample(frac=0.91)) 

這將創建一個 MultiIndex 數據幀,通過重置索引,刪除與groupby方法關聯的列“classList”,並可選地刪除一個額外的列(根據分組變量的數量命名,此處為level_1 ):

cL3=cL2.drop(columns=['classList']).reset_index().drop(columns=['level_1'])

暫無
暫無

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

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