trees

package
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Jun 12, 2019 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ClassProba

type ClassProba struct {
	Probability float64
	ClassValue  string
}

type ClassesProba

type ClassesProba []ClassProba

func (ClassesProba) Len

func (o ClassesProba) Len() int

func (ClassesProba) Less

func (o ClassesProba) Less(i, j int) bool

func (ClassesProba) Swap

func (o ClassesProba) Swap(i, j int)

type DecisionTreeNode

type DecisionTreeNode struct {
	Type      NodeType                     `json:"node_type"`
	Children  map[string]*DecisionTreeNode `json:"children"`
	ClassDist map[string]int               `json:"class_dist"`
	Class     string                       `json:"class_string"`
	ClassAttr base.Attribute               `json:"-"`
	SplitRule *DecisionTreeRule            `json:"decision_tree_rule"`
}

DecisionTreeNode represents a given portion of a decision tree.

func InferID3Tree

func InferID3Tree(from base.FixedDataGrid, with RuleGenerator) *DecisionTreeNode

InferID3Tree builds a decision tree using a RuleGenerator from a set of Instances (implements the ID3 algorithm)

func (*DecisionTreeNode) Load

func (d *DecisionTreeNode) Load(filePath string) error

Load reads from the classifier from an output file

func (*DecisionTreeNode) LoadWithPrefix

func (d *DecisionTreeNode) LoadWithPrefix(reader *base.ClassifierDeserializer, prefix string) error

LoadWithPrefix reads from the classifier from part of another model

func (*DecisionTreeNode) Predict

Predict outputs a base.Instances containing predictions from this tree

func (*DecisionTreeNode) Prune

func (d *DecisionTreeNode) Prune(using base.FixedDataGrid)

Prune eliminates branches which hurt accuracy

func (*DecisionTreeNode) Save

func (d *DecisionTreeNode) Save(filePath string) error

Save sends the classification tree to an output file

func (*DecisionTreeNode) SaveWithPrefix

func (d *DecisionTreeNode) SaveWithPrefix(writer *base.ClassifierSerializer, prefix string) error

func (*DecisionTreeNode) String

func (d *DecisionTreeNode) String() string

String returns a human-readable representation of a given node and it's children

type DecisionTreeRule

type DecisionTreeRule struct {
	SplitAttr base.Attribute `json:"split_attribute"`
	SplitVal  float64        `json:"split_val"`
}

DecisionTreeRule represents the "decision" in "decision tree".

func (*DecisionTreeRule) MarshalJSON

func (d *DecisionTreeRule) MarshalJSON() ([]byte, error)

func (*DecisionTreeRule) String

func (d *DecisionTreeRule) String() string

String prints a human-readable summary of this thing.

func (*DecisionTreeRule) UnmarshalJSON

func (d *DecisionTreeRule) UnmarshalJSON(data []byte) error

type GiniCoefficientRuleGenerator

type GiniCoefficientRuleGenerator struct {
}

GiniCoefficientRuleGenerator generates DecisionTreeRules which minimize the Geni impurity coefficient at each node.

func (*GiniCoefficientRuleGenerator) GenerateSplitRule

GenerateSplitRule returns the non-class Attribute-based DecisionTreeRule which maximises the information gain.

IMPORTANT: passing a base.Instances with no Attributes other than the class variable will panic()

func (*GiniCoefficientRuleGenerator) GetSplitRuleFromSelection

func (g *GiniCoefficientRuleGenerator) GetSplitRuleFromSelection(consideredAttributes []base.Attribute, f base.FixedDataGrid) *DecisionTreeRule

GetSplitRuleFromSelection returns the DecisionTreeRule which maximises the information gain amongst consideredAttributes

IMPORTANT: passing a zero-length consideredAttributes parameter will panic()

type ID3DecisionTree

type ID3DecisionTree struct {
	base.BaseClassifier
	Root       *DecisionTreeNode
	PruneSplit float64
	Rule       RuleGenerator
}

ID3DecisionTree represents an ID3-based decision tree using the Information Gain metric to select which attributes to split on at each node.

func NewID3DecisionTree

func NewID3DecisionTree(prune float64) *ID3DecisionTree

NewID3DecisionTree returns a new ID3DecisionTree with the specified test-prune ratio and InformationGain as the rule generator. If the ratio is less than 0.001, the tree isn't pruned.

func NewID3DecisionTreeFromRule

func NewID3DecisionTreeFromRule(prune float64, rule RuleGenerator) *ID3DecisionTree

NewID3DecisionTreeFromRule returns a new ID3DecisionTree with the specified test-prun ratio and the given rule gnereator.

func (*ID3DecisionTree) Fit

Fit builds the ID3 decision tree

func (*ID3DecisionTree) GetMetadata

func (t *ID3DecisionTree) GetMetadata() base.ClassifierMetadataV1

func (*ID3DecisionTree) Load

func (t *ID3DecisionTree) Load(filePath string) error

func (*ID3DecisionTree) LoadWithPrefix

func (t *ID3DecisionTree) LoadWithPrefix(reader *base.ClassifierDeserializer, prefix string) error

func (*ID3DecisionTree) Predict

Predict outputs predictions from the ID3 decision tree

func (*ID3DecisionTree) PredictProba

func (t *ID3DecisionTree) PredictProba(what base.FixedDataGrid) (ClassesProba, error)

Predict class probabilities of the input samples what, returns a sorted array (by probability) of classes, and another array representing it's probabilities

func (*ID3DecisionTree) Save

func (t *ID3DecisionTree) Save(filePath string) error

func (*ID3DecisionTree) SaveWithPrefix

func (t *ID3DecisionTree) SaveWithPrefix(writer *base.ClassifierSerializer, prefix string) error

func (*ID3DecisionTree) String

func (t *ID3DecisionTree) String() string

String returns a human-readable version of this ID3 tree

type InformationGainRatioRuleGenerator

type InformationGainRatioRuleGenerator struct {
}

InformationGainRatioRuleGenerator generates DecisionTreeRules which maximise the InformationGain at each node.

func (*InformationGainRatioRuleGenerator) GenerateSplitRule

GenerateSplitRule returns a DecisionTreeRule which maximises information gain ratio considering every available Attribute.

IMPORTANT: passing a base.Instances with no Attributes other than the class variable will panic()

func (*InformationGainRatioRuleGenerator) GetSplitRuleFromSelection

func (r *InformationGainRatioRuleGenerator) GetSplitRuleFromSelection(consideredAttributes []base.Attribute, f base.FixedDataGrid) *DecisionTreeRule

GetSplitRuleFromSelection returns the DecisionRule which maximizes information gain, considering only a subset of Attributes.

IMPORTANT: passing a zero-length consideredAttributes parameter will panic()

type InformationGainRuleGenerator

type InformationGainRuleGenerator struct {
}

InformationGainRuleGenerator generates DecisionTreeRules which maximize information gain at each node.

func (*InformationGainRuleGenerator) GenerateSplitRule

GenerateSplitRule returns a DecisionTreeNode based on a non-class Attribute which maximises the information gain.

IMPORTANT: passing a base.Instances with no Attributes other than the class variable will panic()

func (*InformationGainRuleGenerator) GetSplitRuleFromSelection

func (r *InformationGainRuleGenerator) GetSplitRuleFromSelection(consideredAttributes []base.Attribute, f base.FixedDataGrid) *DecisionTreeRule

GetSplitRuleFromSelection returns a DecisionTreeRule which maximises the information gain amongst the considered Attributes.

IMPORTANT: passing a zero-length consideredAttributes parameter will panic()

type NodeType

type NodeType int

NodeType determines whether a DecisionTreeNode is a leaf or not.

const (
	// LeafNode means there are no children
	LeafNode NodeType = 1
	// RuleNode means we should look at the next attribute value
	RuleNode NodeType = 2
)

type RandomTree

type RandomTree struct {
	base.BaseClassifier
	Root *DecisionTreeNode
	Rule *RandomTreeRuleGenerator
}

RandomTree builds a decision tree by considering a fixed number of randomly-chosen attributes at each node

func NewRandomTree

func NewRandomTree(attrs int) *RandomTree

NewRandomTree returns a new RandomTree which considers attrs randomly chosen attributes at each node.

func (*RandomTree) Fit

func (rt *RandomTree) Fit(from base.FixedDataGrid) error

Fit builds a RandomTree suitable for prediction

func (*RandomTree) GetMetadata

func (rt *RandomTree) GetMetadata() base.ClassifierMetadataV1

GetMetadata returns required serialization metadata

func (*RandomTree) Load

func (rt *RandomTree) Load(filePath string) error

Load retrieves this model from a file

func (*RandomTree) LoadWithPrefix

func (rt *RandomTree) LoadWithPrefix(reader *base.ClassifierDeserializer, prefix string) error

LoadWithPrefix retrives this random tree from disk with a given prefix.

func (*RandomTree) Predict

func (rt *RandomTree) Predict(from base.FixedDataGrid) (base.FixedDataGrid, error)

Predict returns a set of Instances containing predictions

func (*RandomTree) Prune

func (rt *RandomTree) Prune(with base.FixedDataGrid)

Prune removes nodes from the tree which are detrimental to determining the accuracy of the test set (with)

func (*RandomTree) Save

func (rt *RandomTree) Save(filePath string) error

Save outputs this model to a file

func (*RandomTree) SaveWithPrefix

func (rt *RandomTree) SaveWithPrefix(writer *base.ClassifierSerializer, prefix string) error

SaveWithPrefix outputs this model to a file with a prefix.

func (*RandomTree) String

func (rt *RandomTree) String() string

String returns a human-readable representation of this structure

type RandomTreeRuleGenerator

type RandomTreeRuleGenerator struct {
	Attributes int
	// contains filtered or unexported fields
}

RandomTreeRuleGenerator is used to generate decision rules for Random Trees

func (*RandomTreeRuleGenerator) GenerateSplitRule

GenerateSplitRule returns the best attribute out of those randomly chosen which maximises Information Gain

type RuleGenerator

type RuleGenerator interface {
	GenerateSplitRule(base.FixedDataGrid) *DecisionTreeRule
}

RuleGenerator implementations analyse instances and determine the best value to split on.

Jump to

Keyboard shortcuts

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