aboutsummaryrefslogtreecommitdiff
path: root/lib/mining/classifier/stats.go
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2018-09-17 05:04:26 +0700
committerShulhan <ms@kilabit.info>2018-09-18 01:50:21 +0700
commit1cae4ca316afa5d177fdbf7a98a0ec7fffe76a3e (patch)
tree5fa83fc0faa31e09cae82ac4d467cf8ba5f87fc2 /lib/mining/classifier/stats.go
parent446fef94cd712861221c0098dcdd9ae52aaed0eb (diff)
downloadpakakeh.go-1cae4ca316afa5d177fdbf7a98a0ec7fffe76a3e.tar.xz
Merge package "github.com/shuLhan/go-mining"
Diffstat (limited to 'lib/mining/classifier/stats.go')
-rw-r--r--lib/mining/classifier/stats.go143
1 files changed, 143 insertions, 0 deletions
diff --git a/lib/mining/classifier/stats.go b/lib/mining/classifier/stats.go
new file mode 100644
index 00000000..b29d3510
--- /dev/null
+++ b/lib/mining/classifier/stats.go
@@ -0,0 +1,143 @@
+// Copyright 2016 Mhd Sulhan <ms@kilabit.info>. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package classifier
+
+import (
+ "github.com/shuLhan/share/lib/dsv"
+)
+
+//
+// Stats define list of statistic values.
+//
+type Stats []*Stat
+
+//
+// Add will add other stat object to the slice.
+//
+func (stats *Stats) Add(stat *Stat) {
+ *stats = append(*stats, stat)
+}
+
+//
+// StartTimes return all start times in unix timestamp.
+//
+func (stats *Stats) StartTimes() (times []int64) {
+ for _, stat := range *stats {
+ times = append(times, stat.StartTime)
+ }
+ return
+}
+
+//
+// EndTimes return all end times in unix timestamp.
+//
+func (stats *Stats) EndTimes() (times []int64) {
+ for _, stat := range *stats {
+ times = append(times, stat.EndTime)
+ }
+ return
+}
+
+//
+// OobErrorMeans return all out-of-bag error mean values.
+//
+func (stats *Stats) OobErrorMeans() (oobmeans []float64) {
+ oobmeans = make([]float64, len(*stats))
+ for x, stat := range *stats {
+ oobmeans[x] = stat.OobErrorMean
+ }
+ return
+}
+
+//
+// TPRates return all true-positive rate values.
+//
+func (stats *Stats) TPRates() (tprates []float64) {
+ for _, stat := range *stats {
+ tprates = append(tprates, stat.TPRate)
+ }
+ return
+}
+
+//
+// FPRates return all false-positive rate values.
+//
+func (stats *Stats) FPRates() (fprates []float64) {
+ for _, stat := range *stats {
+ fprates = append(fprates, stat.FPRate)
+ }
+ return
+}
+
+//
+// TNRates will return all true-negative rate values.
+//
+func (stats *Stats) TNRates() (tnrates []float64) {
+ for _, stat := range *stats {
+ tnrates = append(tnrates, stat.TNRate)
+ }
+ return
+}
+
+//
+// Precisions return all precision values.
+//
+func (stats *Stats) Precisions() (precs []float64) {
+ for _, stat := range *stats {
+ precs = append(precs, stat.Precision)
+ }
+ return
+}
+
+//
+// Recalls return all recall values.
+//
+func (stats *Stats) Recalls() (recalls []float64) {
+ return stats.TPRates()
+}
+
+//
+// FMeasures return all F-measure values.
+//
+func (stats *Stats) FMeasures() (fmeasures []float64) {
+ for _, stat := range *stats {
+ fmeasures = append(fmeasures, stat.FMeasure)
+ }
+ return
+}
+
+//
+// Accuracies return all accuracy values.
+//
+func (stats *Stats) Accuracies() (accuracies []float64) {
+ for _, stat := range *stats {
+ accuracies = append(accuracies, stat.Accuracy)
+ }
+ return
+}
+
+//
+// Write will write all statistic data to `file`.
+//
+func (stats *Stats) Write(file string) (e error) {
+ if file == "" {
+ return
+ }
+
+ writer := &dsv.Writer{}
+ e = writer.OpenOutput(file)
+ if e != nil {
+ return e
+ }
+
+ for _, st := range *stats {
+ e = writer.WriteRawRow(st.ToRow(), nil, nil)
+ if e != nil {
+ return e
+ }
+ }
+
+ return writer.Close()
+}