# MultinomialNB

### *class* cuml.dask.naive_bayes.MultinomialNB(, client=None, verbose=False, \*\*kwargs)[[source]](https://github.com/NVIDIA/cuml/blob/93418baf5/python/cuml/cuml/dask/naive_bayes/naive_bayes.py#L23)

Distributed Naive Bayes classifier for multinomial models

### Methods

| [`fit`](#cuml.dask.naive_bayes.MultinomialNB.fit)(X, y[, classes])   | Fit distributed Naive Bayes classifier model                                              |
|-------------------------------------------------------------------------|-------------------------------------------------------------------------------------------|
| [`predict`](#cuml.dask.naive_bayes.MultinomialNB.predict)(X)             | Use distributed Naive Bayes model to predict the classes for a given set of data samples. |
| [`score`](#cuml.dask.naive_bayes.MultinomialNB.score)(X, y)            | Compute accuracy score                                                                    |

### Examples

Load the 20 newsgroups dataset from Scikit-learn and train a
Naive Bayes classifier.

```python
>>> import cupy as cp

>>> from sklearn.datasets import fetch_20newsgroups
>>> from sklearn.feature_extraction.text import CountVectorizer

>>> from dask_cuda import LocalCUDACluster
>>> from dask.distributed import Client
>>> import dask
>>> from cuml.dask.common import to_sparse_dask_array
>>> from cuml.dask.naive_bayes import MultinomialNB

>>> # Create a local CUDA cluster
>>> cluster = LocalCUDACluster()
>>> client = Client(cluster)

>>> # Load corpus
>>> twenty_train = fetch_20newsgroups(subset='train',
...                           shuffle=True, random_state=42)

>>> cv = CountVectorizer()
>>> xformed = cv.fit_transform(twenty_train.data).astype(cp.float32)
>>> X = to_sparse_dask_array(xformed, client)
>>> y = dask.array.from_array(twenty_train.target, asarray=False,
...                       fancy=False).astype(cp.int32)

>>> # Train model
>>> model = MultinomialNB()
>>> model.fit(X, y)
<cuml.dask.naive_bayes.naive_bayes.MultinomialNB object at 0x...>

>>> # Compute accuracy on training set
>>> model.score(X, y)
array(0.924...)
>>> client.close()
>>> cluster.close()
```

<!-- !! processed by numpydoc !! -->

#### fit(X, y, classes=None)[[source]](https://github.com/NVIDIA/cuml/blob/93418baf5/python/cuml/cuml/dask/naive_bayes/naive_bayes.py#L113)

Fit distributed Naive Bayes classifier model

* **Parameters:**
  **X**

  **y**

  **classes**
* **Returns:**
  cuml.dask.naive_bayes.MultinomialNB current model instance

<!-- !! processed by numpydoc !! -->

#### get_combined_model()[[source]](https://github.com/NVIDIA/cuml/blob/93418baf5/python/cuml/cuml/dask/common/base.py#L57)

Return single-GPU model for serialization

* **Returns:**
  **model**
  : yet been trained.

<!-- !! processed by numpydoc !! -->

#### predict(X)[[source]](https://github.com/NVIDIA/cuml/blob/93418baf5/python/cuml/cuml/dask/naive_bayes/naive_bayes.py#L178)

Use distributed Naive Bayes model to predict the classes for a
given set of data samples.

* **Parameters:**
  **X**
* **Returns:**
  dask.Array containing predicted classes

<!-- !! processed by numpydoc !! -->

#### score(X, y)[[source]](https://github.com/NVIDIA/cuml/blob/93418baf5/python/cuml/cuml/dask/naive_bayes/naive_bayes.py#L203)

Compute accuracy score

* **Parameters:**
  **X**
  : Features to predict. Note- it is assumed that chunk sizes and
    shape of X are known. This can be done for a fully delayed
    Array by calling X.compute_chunks_sizes()

  **y**
  : Labels to use for computing accuracy. Note- it is assumed that
    chunk sizes and shape of X are known. This can be done for a fully
    delayed Array by calling X.compute_chunks_sizes()
* **Returns:**
  **score**

<!-- !! processed by numpydoc !! -->
