我想學習樸素貝葉斯模型的問題,其中類是布爾值(需要兩個值之一)。某些功能是布爾型的,但其他功能是分類的,並且可以具有少量值(〜5)。如何使用具有(多個)分類功能的sklearn.naive_bayes?
如果我所有的功能都是布爾值,那麼我想使用sklearn.naive_bayes.BernoulliNB
。看來很清楚,sklearn.naive_bayes.MultinomialNB
是而不是我想要的。
一個解決方案是將我的分類特徵分成布爾特徵。例如,如果變量「X」的值爲「紅色」,「綠色」,「藍色」,我可以有三個變量:「X是紅色」,「X是綠色」,「X是藍色」。這違反了給定類的變量的條件獨立性的假設,所以它看起來完全不合適。
另一種可能性是將變量編碼爲實值變量,其中0.0表示紅色,1.0表示綠色,2.0表示綠色,2.0表示藍色。這似乎也完全不適合使用GaussianNB(出於顯而易見的原因)。
我想要做的事情似乎並不奇怪,但我不明白如何將它適合sklearn給我的樸素貝葉斯模型。編寫代碼很容易,但如果可能的話,我更喜歡使用sklearn,原因很明顯(大多數:爲了避免bug)。
[編輯解釋爲什麼我不認爲多項NB是我想要的東西]:
我的理解是,在多項NB特徵向量在於k
觀察到令牌多少次的計數IID樣本。
我的理解是,這適合於存在基礎文檔類的分類文檔,然後假定文檔中的每個詞都是從特定於該類的分類分佈中繪製的。一個文檔將具有k
標記,特徵向量的長度等於詞彙大小,並且特徵計數的總和將是k
。
在我的情況下,我有一些bernoulli變量,加上幾個分類的變量。但是這裏沒有「計數」的概念。
例如:班級是喜歡或不喜歡數學的人。預測因子是大學專業(絕對)和他們是否去研究生院(布爾)。
我不認爲這符合多項式,因爲這裏沒有任何計數。
你能詳細說明爲什麼Multinomial樸素貝葉斯不適合你嗎? –