Parametric Naive Bayes Classifier
An implementation of the Naive Bayes Classifier, used for classification.
:- use_module('path/to/.../src/methods/naive_bayes_classifier/naive_bayes_classifier.pl').
%% usage example
TrainData = [5.1,3.5,1.4, 4.9,3.0,1.4, 4.7,3.2,1.3, 4.6,3.1,1.5],
TestData = [3,2,0, 5,1,4, 0,0,4, 3,3,5, 0,5,5, 2,5,5],
nbc_initModelWithTrain(TrainData, 3, [0,1,0,1], 2, 0, 0.000001),
nbc_classifyMatrix(TestData, 3, PredictionList, _, ProbabilitiesList).
Available Predicates
- nbc_initModelWithTrain/6
- nbc_initModelNoTrain/3
- nbc_classifyMatrix/5
- nbc_means/2
- nbc_probabilities/2
- nbc_trainMatrix/5
- nbc_trainPoint/2
- nbc_variances/2
nbc_initModelWithTrain/6
Initializes the classifier as per the input and then trains it by calculating the sample mean and variances.
%% predicate definition
nbc_initModelWithTrain(DataList, DataRows, LabelsList, NumClasses, IncrementalVar, Epsilon) :-
NumClasses >= 0,
Epsilon >= 0,
convert_list_to_float_array(DataList, DataRows, array(Xsize, Xrownum, X)),
convert_list_to_float_array(LabelsList, array(Ysize, Y)),
initModelWithTrainI(X, Xsize, Xrownum, Y, Ysize, NumClasses, IncrementalVar, Epsilon).
%% foreign c++ predicate definition
foreign(initModelWithTrain, c, initModelWithTrainI( +pointer(float_array), +integer, +integer,
+pointer(float_array), +integer,
+integer,
+integer,
+float32)).
Parameters
Name | Type | Description | Default |
---|---|---|---|
data | +matrix | Training data points. | - |
labels | +vector | Labels corresponding to training data points. | - |
numClasses | +integer | Number of classes in this classifier. | 0 |
incrementalVariance | +integer(bool) | If true, an incremental algorithm is used to calculate the variance; this can prevent loss of precision in some cases, but will be somewhat slower to calculate. | (0)false |
epsilon | +float | Small value to prevent log of zero. | 1e-10 |
nbc_initModelNoTrain/3
Initialize the Naive Bayes classifier without performing training.
All of the parameters of the model will be initialized to zero. Be sure to use train before calling classify, otherwise the results may be meaningless.
%% predicate definition
nbc_initModelNoTrain(Dimensionality, NumClasses, Epsilon) :-
Dimensionality > 0,
NumClasses >= 0,
Epsilon >= 0,
initModelNoTrainI(Dimensionality, NumClasses, Epsilon).
%% foreign c++ predicate definition
foreign(initModelNoTrain, c, initModelNoTrainI( +integer,
+integer,
+float32)).
Parameters
Name | Type | Description | Default |
---|---|---|---|
dimensionality | +integer | Dimensionality of of the Model for the Datapoints | 1 |
numClasses | +integer | Number of classes in this classifier. | 0 |
epsilon | +float | Small value to prevent log of zero. | 1e-10 |
nbc_classifyMatrix/5
Classify the given points using the trained NaiveBayesClassifier model and also return estimates of the probabilities for each class in the given matrix.
The predicted labels for each point are stored in the given vector.
%% predicate definition
nbc_classifyMatrix(DataList, DataRows, PredictionList, ProbsList, ZCols) :-
convert_list_to_float_array(DataList, DataRows, array(Xsize, Xrows, X)),
classifyMatrixI(X, Xsize, Xrows, Y, Ysize, Z, ZCols, ZRows),
convert_float_array_to_list(Y, Ysize, PredictionList),
convert_float_array_to_2d_list(Z, ZCols, ZRows, ProbsList).
%% foreign c++ predicate definition
foreign(classifyMatrix, c, classifyMatrixI( +pointer(float_array), +integer, +integer,
-pointer(float_array), -integer,
-pointer(float_array), -integer, -integer)).
Parameters
Name | Type | Description | Default |
---|---|---|---|
data | +matrix | Set of points to classify. | - |
predictions | -vector | Filled with predictions for each point. | - |
probabilities | -matrix | Filled with class probabilities for each point. Each row represents a point. | - |
nbc_means/2
Get the sample means for each class.
%% predicate definition
nbc_means(MeansList, XCols) :-
meansI(X, XCols, XRows),
convert_float_array_to_2d_list(X, XCols, XRows, MeansList).
%% foreign c++ predicate definition
foreign(means, c, meansI(-pointer(float_array), -integer, -integer)).
Parameters
Name | Type | Description | Default |
---|---|---|---|
means | -matrix | Get the sample means for each class. | - |
nbc_probabilities/2
Get the prior probabilities for each class.
%% predicate definition
nbc_probabilities(ProbabilitiesList, XCols) :-
probabilitiesI(X, XCols, XRows),
convert_float_array_to_2d_list(X, XCols, XRows, ProbabilitiesList).
%% foreign c++ predicate definition
foreign(probabilities, c, probabilitiesI(-pointer(float_array), -integer, -integer)).
Parameters
Name | Type | Description | Default |
---|---|---|---|
probabilities | -matrix | Get the prior probabilities for each class. | - |
nbc_trainMatrix/5
Train the Naive Bayes classifier on the given dataset. The data must be the same dimensionality as the existing model parameters.
%% predicate definition
nbc_trainMatrix(DataList, DataRows, LabelsList, NumClasses, IncrementalVar) :-
NumClasses >= 0,
convert_list_to_float_array(DataList, DataRows, array(Xsize, Xrownum, X)),
convert_list_to_float_array(LabelsList, array(Ysize, Y)),
trainMatrixI(X, Xsize, Xrownum, Y, Ysize, NumClasses, IncrementalVar).
%% foreign c++ predicate definition
foreign(trainMatrix, c, trainMatrixI( +pointer(float_array), +integer, +integer,
+pointer(float_array), +integer,
+integer,
+integer)).
Parameters
Name | Type | Description | Default |
---|---|---|---|
data | +matrix | Training data points. | - |
labels | +vector | Labels corresponding to training data points. | - |
numClasses | +integer | Number of classes in this classifier. | 0 |
incrementalVariance | +integer(bool) | If true, an incremental algorithm is used to calculate the variance; this can prevent loss of precision in some cases, but will be somewhat slower to calculate. | (1)true |
nbc_trainPoint/2
Train the Naive Bayes classifier on the given point.
This will use the incremental algorithm for updating the model parameters. The data must be the same dimensionality as the existing model parameters.
%% predicate definition
nbc_trainPoint(DataList, Label) :-
convert_list_to_float_array(DataList, array(Xsize, X)),
trainPointI(X, Xsize, Label).
%% foreign c++ predicate definition
foreign(trainPoint, c, trainPointI( +pointer(float_array), +integer,
+integer)).
Parameters
Name | Type | Description | Default |
---|---|---|---|
point | +vector | Data point to train on. | - |
label | +integer | Label of data point. | - |
nbc_variances/2
Get the sample variances for each class.
%% predicate definition
nbc_variances(VariancesList, XCols) :-
variancesI(X, XCols, XRows),
convert_float_array_to_2d_list(X, XCols, XRows, VariancesList).
%% foreign c++ predicate definition
foreign(variances, c, variancesI(-pointer(float_array), -integer, -integer)).
Parameters
Name | Type | Description | Default |
---|---|---|---|
variances | -matrix | Get the sample variances for each class. | - |
Connected Links/Resources
If you want a more detailed explanation, then go to the python documentation. There is most of the time a good explanation on how the methods work and what the parameters do.
- MLpack::naive_bayes_classifier_C++_documentation
- MLpack::naive_bayes_classifier_Python_documentation
added some of the links from the python documentation