import mir.ndslice; import numir; import dtree.impurity; import std.stdio; Regression c; auto xs = [-2.0, -1.0, 0.0, 1.0].sliced.unsqueeze!1; auto ys = [-1.0, 0.0, 1.0, 2.0].sliced.unsqueeze!1; c.fit(xs[2], xs, ys, iota(4), 0, 1); assert(c.left.index == [0, 1, 2]); assert(c.right.index == [3]); assert(c.threshold == xs[2][0]); assert(c.left.prediction == [0]); // mean(-1, 0, 1) assert(c.right.prediction == [2]); // mean(2) assert(c.left.impurity == 2.0); // ((-1-0)^2+(0-0)^2+(1-0)^2 assert(c.right.impurity == 0.0); // (2-2)^2
regression desicion implementation used at Node