Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 02e673b

Browse files
committed
BUG: binary classification failed in MultinomialNB, +regression test
1 parent f120d2e commit 02e673b

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

scikits/learn/naive_bayes.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,9 @@ def fit(self, X, y, class_prior=None):
315315
self.intercept_ = np.zeros(n_classes) - np.log(n_classes)
316316

317317
Y = LabelBinarizer().fit_transform(y)
318+
if Y.shape[1] == 1:
319+
Y = np.concatenate((1 - Y, Y), axis=1)
320+
318321
N_c, N_c_i = self._count(X, Y)
319322

320323
self.coef_ = (np.log(N_c_i + self.alpha)

scikits/learn/tests/test_naive_bayes.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,11 +102,11 @@ def test_mnnb_pickle():
102102
def test_mnnb_predict_proba():
103103
'''Test multinomial NB's probability scores'''
104104

105-
clf = naive_bayes.MultinomialNB().fit([[0, 1], [0, 1], [1, 0]], [0, 0, 1])
106-
assert clf.predict([0, 1]) == 0
105+
clf = naive_bayes.MultinomialNB().fit([[0, 1], [1, 3], [4, 0]], [0, 0, 2])
106+
assert clf.predict([4, 1]) == 2
107107
assert clf.predict_proba([0, 1]).shape == (1, 2)
108-
assert np.sum(clf.predict_proba([0, 1])) == 1
109-
assert np.sum(clf.predict_proba([1, 0])) == 1
108+
assert np.sum(clf.predict_proba([1, 5])) == 1
109+
assert np.sum(clf.predict_proba([3, 0])) == 1
110110
assert np.sum(np.exp(clf.class_log_prior_)) == 1
111111
assert np.sum(np.exp(clf.intercept_)) == 1
112112

0 commit comments

Comments
 (0)