bayes

package
v0.0.0-...-e5f6589 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 23, 2024 License: MIT Imports: 8 Imported by: 0

Documentation

Overview

Package bayes implements a simple Naive Bayes classifier.

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func OptionLaplaceSmoothing

func OptionLaplaceSmoothing[C, V cmp.Ordered](classifier *Classifier[C, V])

func OptionLogScore

func OptionLogScore[C, V cmp.Ordered](classifier *Classifier[C, V])

func OptionProbScore

func OptionProbScore[C, V cmp.Ordered](classifier *Classifier[C, V])

Types

type Classifier

type Classifier[C, V cmp.Ordered] struct {
	// contains filtered or unexported fields
}
Example
package main

import (
	"fmt"
	"maps"

	"github.com/xuender/aime/bayes"
)

func main() {
	classifier := bayes.NewClassifier[string, int]()

	classifier.Train(maps.All(map[string][]int{
		"a": {7, 8, 9, 6},
		"c": {1, 2, 3, 4},
		"b": {4, 5, 6, 7},
	}))

	for key, val := range classifier.Scores([]int{1, 2, 3}) {
		fmt.Println(key, val)
	}

}
Output:

c -1.0986122886681098
a -77.08392035747161
b -77.08392035747161
Example (LaplaceSmoothing)
package main

import (
	"fmt"
	"maps"

	"github.com/xuender/aime/bayes"
)

func main() {
	classifier := bayes.NewClassifier[string, int](bayes.OptionLaplaceSmoothing)

	classifier.Train(maps.All(map[string][]int{
		"a": {7, 8, 9, 6},
		"c": {1, 2, 3, 4},
		"b": {4, 5, 6, 7},
	}))

	for key, val := range classifier.Scores([]int{1, 2, 3}) {
		fmt.Println(key, val)
	}

}
Output:

c -0.5516476182862461
a -77.08392035747161
b -77.08392035747161
Example (ProbScore)
package main

import (
	"fmt"
	"maps"

	"github.com/xuender/aime/bayes"
)

func main() {
	classifier := bayes.NewClassifier[string, int](bayes.OptionProbScore)

	classifier.Train(maps.All(map[string][]int{
		"a": {7, 8, 9, 6},
		"c": {1, 2, 3, 4},
		"b": {4, 5, 6, 7},
	}))

	for key, val := range classifier.Scores([]int{1, 2, 3}) {
		fmt.Println(key, val)
	}

}
Output:

c 1
a 9.999999999999999e-34
b 9.999999999999999e-34

func Load

func Load[C, V cmp.Ordered](input *pb.Classifier) *Classifier[C, V]

func NewClassifier

func NewClassifier[C, V cmp.Ordered](opts ...Option[C, V]) *Classifier[C, V]

func (*Classifier[C, V]) Learned

func (p *Classifier[C, V]) Learned() float64

func (*Classifier[C, V]) Predict

func (p *Classifier[C, V]) Predict(items []V) (C, bool)
Example
package main

import (
	"fmt"
	"maps"

	"github.com/xuender/aime/bayes"
)

func main() {
	classifier := bayes.NewClassifier[string, int]()

	classifier.Train(maps.All(map[string][]int{
		"a": {7, 8, 9, 6},
		"c": {1, 2, 3, 4},
		"b": {4, 5, 6, 7},
	}))
	fmt.Println(classifier.Predict([]int{1, 2, 3}))

}
Output:

c true
Example (LaplaceSmoothing)
package main

import (
	"fmt"
	"maps"

	"github.com/xuender/aime/bayes"
)

func main() {
	classifier := bayes.NewClassifier[string, int](bayes.OptionLaplaceSmoothing)

	classifier.Train(maps.All(map[string][]int{
		"a": {7, 8, 9, 6},
		"c": {1, 2, 3, 4},
		"b": {4, 5, 6, 7},
	}))
	fmt.Println(classifier.Predict([]int{1, 2, 3}))

}
Output:

c true
Example (LaplaceSmoothing_false)
package main

import (
	"fmt"
	"maps"

	"github.com/xuender/aime/bayes"
)

func main() {
	classifier := bayes.NewClassifier[string, int](bayes.OptionLaplaceSmoothing)

	classifier.Train(maps.All(map[string][]int{
		"a": {7, 8, 9, 6},
		"c": {1, 2, 3, 4},
		"b": {4, 5, 6, 7},
	}))
	fmt.Println(classifier.Predict([]int{1, 2, 3, 4, 5}))

}
Output:

c false

func (*Classifier[C, V]) Proto

func (p *Classifier[C, V]) Proto() *pb.Classifier

nolint: cyclop

Example
package main

import (
	"fmt"
	"maps"

	"github.com/xuender/aime/bayes"
)

func main() {
	class := bayes.NewClassifier[int, int]()
	class.Train(maps.All(map[int][]int{1: {1, 2, 3}, 2: {3, 3}, 3: {4, 5}}))

	newClass := bayes.Load[int, int](class.Proto())
	fmt.Println(newClass.Learned())

}
Output:

3

func (*Classifier[C, V]) Scores

func (p *Classifier[C, V]) Scores(items []V) iter.Seq2[C, float64]

func (*Classifier[C, V]) Train

func (p *Classifier[C, V]) Train(seq iter.Seq2[C, []V])

type Option

type Option[C, V cmp.Ordered] func(*Classifier[C, V])

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL