Click or drag to resize
Accord.NET (logo)

NaiveBayesLearning Class

Naïve Bayes learning algorithm for discrete distribution models.
Inheritance Hierarchy
SystemObject
  Accord.MachineLearning.BayesNaiveBayesLearningBaseNaiveBayes, GeneralDiscreteDistribution, Int32, IndependentOptionsGeneralDiscreteOptions
    Accord.MachineLearning.BayesNaiveBayesLearningBaseNaiveBayes, GeneralDiscreteDistribution, Int32, IndependentOptionsGeneralDiscreteOptions, GeneralDiscreteOptions
      Accord.MachineLearning.BayesNaiveBayesLearning

Namespace:  Accord.MachineLearning.Bayes
Assembly:  Accord.MachineLearning (in Accord.MachineLearning.dll) Version: 3.8.0
Syntax
[SerializableAttribute]
public class NaiveBayesLearning : NaiveBayesLearningBase<NaiveBayes, GeneralDiscreteDistribution, int, IndependentOptions<GeneralDiscreteOptions>, GeneralDiscreteOptions>, 
	ISupervisedLearning<NaiveBayes, int[], double[]>, ISupervisedLearning<NaiveBayes, int[], int>
Request Example View Source

The NaiveBayesLearning type exposes the following members.

Constructors
  NameDescription
Public methodNaiveBayesLearning
Initializes a new instance of the NaiveBayesLearning class
Top
Properties
  NameDescription
Public propertyDistribution
Gets or sets the distribution creation function. This function can be used to specify how the initial distributions of the model should be created. By default, this function attempts to call the empty constructor of the distribution using Activator.CreateInstance().
(Inherited from NaiveBayesLearningBaseTModel, TDistribution, TInput, TOptions.)
Public propertyEmpirical
Gets or sets whether the class priors should be estimated from the data.
(Inherited from NaiveBayesLearningBaseTModel, TDistribution, TInput, TOptions.)
Public propertyModel
Gets or sets the model being learned.
(Inherited from NaiveBayesLearningBaseTModel, TDistribution, TInput, TOptions.)
Public propertyOptions
Gets or sets the fitting options to use when estimating the class-specific distributions.
(Inherited from NaiveBayesLearningBaseTModel, TDistribution, TInput, TOptions.)
Public propertyParallelOptions
Gets or sets the parallelization options for this algorithm.
(Inherited from NaiveBayesLearningBaseTModel, TDistribution, TInput, TOptions.)
Public propertyToken
Gets or sets a cancellation token that can be used to stop the learning algorithm while it is running.
(Inherited from NaiveBayesLearningBaseTModel, TDistribution, TInput, TOptions.)
Top
Methods
  NameDescription
Protected methodCreate
Creates an instance of the model to be learned.
(Overrides NaiveBayesLearningBaseTModel, TDistribution, TInput, TOptionsCreate(TInput, Int32).)
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Protected methodFit
Fits one of the distributions in the naive bayes model.
(Inherited from NaiveBayesLearningBaseTModel, TDistribution, TInput, TOptions, TInnerOptions.)
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodLearn(TInput, Double, Double)
Learns a model that can map the given inputs to the given outputs.
(Inherited from NaiveBayesLearningBaseTModel, TDistribution, TInput, TOptions.)
Public methodLearn(TInput, Int32, Double)
Learns a model that can map the given inputs to the given outputs.
(Inherited from NaiveBayesLearningBaseTModel, TDistribution, TInput, TOptions.)
Public methodLearn(TInput, Int32, Double)
Learns a model that can map the given inputs to the given outputs.
(Inherited from NaiveBayesLearningBaseTModel, TDistribution, TInput, TOptions.)
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Top
Extension Methods
  NameDescription
Public Extension MethodHasMethod
Checks whether an object implements a method with the given name.
(Defined by ExtensionMethods.)
Public Extension MethodIsEqual
Compares two objects for equality, performing an elementwise comparison if the elements are vectors or matrices.
(Defined by Matrix.)
Public Extension MethodTo(Type)Overloaded.
Converts an object into another type, irrespective of whether the conversion can be done at compile time or not. This can be used to convert generic types to numeric types during runtime.
(Defined by ExtensionMethods.)
Public Extension MethodToTOverloaded.
Converts an object into another type, irrespective of whether the conversion can be done at compile time or not. This can be used to convert generic types to numeric types during runtime.
(Defined by ExtensionMethods.)
Top
Examples

For basic examples on how to learn a Naive Bayes algorithm, please see NaiveBayes page. The following examples show how to set more specialized learning settings for discrete models.

// To test the effectiveness of the Laplace rule for when
// an example of a symbol is not present in the training set,
// lets create dataset where the second column could contain
// values 0, 1 or 2 but only actually contains examples with
// containing 1 and 2:

int[][] inputs =
{
    //      input     output
    new [] { 0, 1 }, //  0 
    new [] { 0, 2 }, //  0
    new [] { 0, 1 }, //  0
    new [] { 1, 2 }, //  1
    new [] { 0, 2 }, //  1
    new [] { 0, 2 }, //  1
    new [] { 1, 1 }, //  2
    new [] { 0, 1 }, //  2
    new [] { 1, 1 }, //  2
};

int[] outputs = // those are the class labels
{
    0, 0, 0, 1, 1, 1, 2, 2, 2,
};

// Since the data is not enough to determine which symbols we are
// expecting in our model, we will have to specify the model by
// hand. The first column can assume 2 different values, whereas
// the third column can assume 3:
var bayes = new NaiveBayes(classes: 3, symbols: new[] { 2, 3 });

// Now we can create a learning algorithm
var learning = new NaiveBayesLearning()
{
    Model = bayes
};

// Enable the use of the Laplace rule
learning.Options.InnerOption.UseLaplaceRule = true;

// Learn the Naive Bayes model
learning.Learn(inputs, outputs);

// Estimate a sample with 0 in the second col
int answer = bayes.Decide(new int[] { 0, 1 });
See Also