func (rdt *RandomDecisionTree) Predict(sample *core.Sample) float64 { ret := 0.0 total := 0.0 msample := sample.ToMapBasedSample() for _, tree := range rdt.trees { node, _ := PredictBySingleTree(tree, msample) ret += node.prediction.GetValue(1) total += 1.0 } return ret / total }
func (dt *RandomForest) Predict(sample *core.Sample) float64 { msample := sample.ToMapBasedSample() predictions := 0.0 total := 0.0 for _, tree := range dt.trees { node, _ := PredictBySingleTree(tree, msample) predictions += node.prediction.GetValue(1) total += 1.0 } return predictions / total }
func (rdt *RandomDecisionTree) PredictMultiClass(sample *core.Sample) *core.ArrayVector { msample := sample.ToMapBasedSample() predictions := core.NewArrayVector() total := 0.0 for _, tree := range rdt.trees { node, _ := PredictBySingleTree(tree, msample) predictions.AddVector(node.prediction, 1.0) total += 1.0 } predictions.Scale(1.0 / total) return predictions }
func (c *KNN) PredictMultiClass(sample *core.Sample) *core.ArrayVector { x := sample.GetFeatureVector() predictions := []*eval.LabelPrediction{} for i, s := range c.sv { predictions = append(predictions, &(eval.LabelPrediction{Label: c.labels[i], Prediction: c.Kernel(s, x)})) } compare := func(p1, p2 *eval.LabelPrediction) bool { return p1.Prediction > p2.Prediction } eval.By(compare).Sort(predictions) ret := core.NewArrayVector() for i, pred := range predictions { if i > c.k { break } ret.AddValue(pred.Label, 1.0) } return ret }
func (c *SVM) Predict(sample *core.Sample) float64 { x := sample.GetFeatureVector() return c.PredictVector(x) }
func (dt *CART) PredictMultiClass(sample *core.Sample) *core.ArrayVector { msample := sample.ToMapBasedSample() node, _ := PredictBySingleTree(&dt.tree, msample) return node.prediction }
func (dt *CART) Predict(sample *core.Sample) float64 { msample := sample.ToMapBasedSample() node, _ := PredictBySingleTree(&dt.tree, msample) return node.prediction.GetValue(1) }
func (dt *RegressionTree) Predict(sample *core.Sample) float64 { msample := sample.ToMapBasedSample() node, _ := dt.PredictBySingleTree(&dt.tree, msample) return node.prediction.GetValue(0) }