MCPcopy Index your code
hub / github.com/lazyprogrammer/machine_learning_examples / MultinomialNB

Class MultinomialNB

supervised_class/multinomialnb.py:15–38  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13from datetime import datetime
14
15class MultinomialNB(object):
16 def fit(self, X, Y, smoothing=1.0):
17 # one-hot encode Y
18 K = len(set(Y)) # number of classes
19 N = len(Y) # number of samples
20 labels = Y
21 Y = np.zeros((N, K))
22 Y[np.arange(N), labels] = 1
23
24 # D x K matrix of feature counts
25 # feature_counts[d,k] = count of feature d in class k
26 feature_counts = X.T.dot(Y) + smoothing
27 class_counts = Y.sum(axis=0)
28
29 self.weights = np.log(feature_counts) - np.log(feature_counts.sum(axis=0))
30 self.priors = np.log(class_counts) - np.log(class_counts.sum())
31
32 def score(self, X, Y):
33 P = self.predict(X)
34 return np.mean(P == Y)
35
36 def predict(self, X):
37 P = X.dot(self.weights) + self.priors
38 return np.argmax(P, axis=1)
39
40
41if __name__ == '__main__':

Callers 3

spam2.pyFile · 0.85
nb.pyFile · 0.85
multinomialnb.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected