func TestCART(t *testing.T) { fds := "../../testdata/iris/iris.dsv" ds := tabula.Claset{} _, e := dsv.SimpleRead(fds, &ds) if nil != e { t.Fatal(e) } fmt.Println("[cart_test] class index:", ds.GetClassIndex()) // copy target to be compared later. targetv := ds.GetClassAsStrings() assert(t, NRows, ds.GetNRow(), true) // Build CART tree. CART, e := cart.New(&ds, cart.SplitMethodGini, 0) if e != nil { t.Fatal(e) } fmt.Println("[cart_test] CART Tree:\n", CART) // Create test set testset := tabula.Claset{} _, e = dsv.SimpleRead(fds, &testset) if nil != e { t.Fatal(e) } testset.GetClassColumn().ClearValues() // Classifiy test set e = CART.ClassifySet(&testset) if nil != e { t.Fatal(e) } assert(t, targetv, testset.GetClassAsStrings(), true) }
/* CountOOBError process out-of-bag data on tree and return error value. */ func (runtime *Runtime) CountOOBError(oob tabula.Claset) ( errval float64, e error, ) { // save the original target to be compared later. origTarget := oob.GetClassAsStrings() if DEBUG >= 2 { fmt.Println("[cart] OOB:", oob.Columns) fmt.Println("[cart] TREE:", &runtime.Tree) } // reset the target. oobtarget := oob.GetClassColumn() oobtarget.ClearValues() e = runtime.ClassifySet(&oob) if e != nil { // set original target values back. oobtarget.SetValues(origTarget) return } target := oobtarget.ToStringSlice() if DEBUG >= 2 { fmt.Println("[cart] original target:", origTarget) fmt.Println("[cart] classify target:", target) } // count how many target value is miss-classified. runtime.OOBErrVal, _, _ = tekstus.WordsCountMissRate(origTarget, target) // set original target values back. oobtarget.SetValues(origTarget) return runtime.OOBErrVal, nil }