123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package multibayes
- import (
- "encoding/json"
- "io/ioutil"
- )
- type jsonableClassifier struct {
- Matrix *sparseMatrix `json:"matrix"`
- }
- func (c *Classifier) MarshalJSON() ([]byte, error) {
- return json.Marshal(&jsonableClassifier{c.Matrix})
- }
- func (c *Classifier) UnmarshalJSON(buf []byte) error {
- j := jsonableClassifier{}
- err := json.Unmarshal(buf, &j)
- if err != nil {
- return nil
- }
- *c = *NewClassifier()
- c.Matrix = j.Matrix
- return nil
- }
- // Initialize a new classifier from a JSON byte slice.
- func NewClassifierFromJSON(buf []byte) (*Classifier, error) {
- classifier := &Classifier{}
- err := classifier.UnmarshalJSON(buf)
- if err != nil {
- return nil, err
- }
- return classifier, nil
- }
- func LoadClassifierFromFile(filename string) (*Classifier, error) {
- buf, err := ioutil.ReadFile(filename)
- if err != nil {
- return nil, err
- }
- return NewClassifierFromJSON(buf)
- }
- func (s *sparseColumn) MarshalJSON() ([]byte, error) {
- return json.Marshal(s.Data)
- }
- func (s *sparseColumn) UnmarshalJSON(buf []byte) error {
- var data []int
- err := json.Unmarshal(buf, &data)
- if err != nil {
- return err
- }
- s.Data = data
- return nil
- }
|