看板 DataScience 關於我們 聯絡資訊
問題類別: Dummy variable vs numeric 使用工具: python 問題內容: 板上各位好! 小弟有個小問題想請教, 在Sklearn中,如果遇到類別型變數都須透過轉dummy的形式來fit model, 那轉成0/1之後程式如何知道這是dummy variable呢? 怎麼不會跟其他numeric變數混為計算呢? 以naive bayes為例,x本就能是類別也能是數值, 那sklearn中的naive_bayes仍須先將類別轉成dummy, 這樣python不會將dummy視為一般數值處理嗎? 這個問題小弟困惑了一下,目前沒看到相關的說明,於是上來請教各位大大! 還希望各位大大解惑! 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.72.235.158 ※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1526604656.A.8AB.html
yoyololicon: 有點看不懂你的問題...轉成0/1就是要讓程式對所有的05/18 09:05
yoyololicon: 變數一視同仁05/18 09:05
因為我看naive bayes對於類別型跟數值型變數計算機率的方式不一樣,然而數值型計算 需要用到平均數跟標準差,這樣如果把類別轉成0/1不就會以數值型方式計算機率,而非 類別嗎? 不好意思!這問題好像好難解釋QQ ※ 編輯: chienjens (42.72.235.158), 05/18/2018 09:10:42
yoyololicon: 我是看不出有甚麼問題 冏05/18 09:35
yoyololicon: 我不知道sklearn是怎麼做的 不過通常類別轉成0/1後還05/18 09:35
yoyololicon: 還要做smoothing 不然直接算機率好像會有問題05/18 09:35
先感謝y大回答! 因為轉成dummy後,從dataframe看是數值,如果y大說還要做smoothing,那我的問題應該 就是sklearn怎麼判斷這個column是dummy轉的0/1,進而做smoothing呢? 對於程式來說,0/1與其他數值變數不都是數值型嗎@@ ※ 編輯: chienjens (42.72.235.158), 05/18/2018 10:28:17
yoyololicon: 類別的型別通常是int吧 覺得判斷這個沒什麼難05/18 10:44
yoyololicon: 你不用先轉成dummy sklearn都會自動幫你處理惹05/18 10:53
因為類別型的資料(string) fit model就會出現錯誤,所以我是透過pd.get_dummies的方 式轉,轉過後是int沒錯,所以sklearn「有可能」是用int跟float判斷的囉? ※ 編輯: chienjens (42.72.235.158), 05/18/2018 11:16:35
yoyololicon: 其實你可以用labelencoder就不用轉one hot了 05/18 13:36