簡體   English   中英

Python:sci-kit中的特征選擇可以學習正態分布

[英]Python: feature selection in sci-kit learn for a normal distribution

我有一個pandas DataFrame,其索引是唯一的用戶標識符,對應於唯一事件的列,值1(有人值守),0(未參加)或NaN(未被邀請/不相關)。 相對於NaN,矩陣非常稀疏:有幾百個事件,大多數用戶最多只被邀請到幾十個。

我創建了一些額外的列來衡量“成功”,我將其定義為相對於邀請的參與率:

my_data['invited'] = my_data.count(axis=1)
my_data['attended'] = my_data.sum(axis=1)-my_data['invited']
my_data['success'] = my_data['attended']/my_data['invited']

假設以下情況屬實 :成功數據應正態分布,均值為0.80,sd為0.10。 當我查看my_data['success']的直方圖時,它不正常並向左傾斜。 如果在現實中這是真的,那就不重要了。 我只想解決下面提出的技術問題。

所以這就是我的問題 :有一些事件我不認為是“好”的,因為它們使成功數據偏離正常。 我想在我的事件上做“特征選擇”來挑選它們的一個子集,這使得my_data['success'] 分布在“分配收斂”的意義上盡可能接近正常。

我在這里查看了scikit-learn “特征選擇”方法,“單變量特征選擇”看起來很有意義。 但我對pandasscikit-learn都很新,並且可以真正使用如何在代碼中實際實現它的幫助。

half the original events. 約束:我需要保留原始事件的一半。

任何幫助將不勝感激。 請分享盡可能多的詳細信息,我對這些庫非常新,並且很想看看如何使用我的DataFrame執行此操作。

謝謝!

編輯 :在更多地scikit-learn特征選擇方法之后,“遞歸特征選擇”似乎也可能在這里有意義但我不確定如何構建它,我的“准確度”度量標准“接近正常”分布均值...“

請記住,功能選擇是選擇要素,而不是樣本,即(通常)數據DataFrame的列,而不是行。 因此,我不確定功能選擇是否符合您的要求:我了解您是否要刪除導致分布偏差的樣本?

此外,如何進行特征縮放,例如標准化,以便您的數據變為正態分布,均值= 0且sd = 1?

方程式只是z =(x - mean)/ sd

要將它應用於您的DataFrame,您可以這樣做

my_data['success'] = (my_data['success'] - my_data['success'].mean(axis=0)) / (my_data['success'].std(axis=0))

但是,不要忘記保留均值和SD參數來轉換測試數據。 或者,您也可以使用scikit-learn中的StandardScaler

暫無
暫無

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

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