public void TestLabelBinarizerSetLabelEncoding() { var lb = new LabelBinarizer<int>(negLabel: -2, posLabel: 2); // two-class case var inp = new[] {0, 1, 1, 0}; var expected = new double[,] {{-2, 2, 2, -2}}.ToDenseMatrix().Transpose(); var got = lb.Fit(inp).Transform(inp); Assert.AreEqual(expected, got); Assert.IsTrue(lb.InverseTransform(got).SequenceEqual(inp)); // multi-class case inp = new[] {3, 2, 1, 2, 0}; expected = new double[,] { {-2, -2, -2, +2}, {-2, -2, +2, -2}, {-2, +2, -2, -2}, {-2, -2, +2, -2}, {+2, -2, -2, -2} }.ToDenseMatrix(); got = lb.Fit(inp).Transform(inp); Assert.AreEqual(expected, got); Assert.IsTrue(lb.InverseTransform(got).SequenceEqual(inp)); }
public void TestLabelBinarizer() { var lb = new LabelBinarizer<string>(); // two-class case var inp = new[] {"neg", "pos", "pos", "neg"}; var expected = new double[,] {{0, 1, 1, 0}}.ToDenseMatrix().Transpose(); var got = lb.Fit(inp).Transform(inp); Assert.AreEqual(expected, got); Assert.IsTrue(lb.InverseTransform(got).SequenceEqual(inp)); // multi-class case inp = new[] {"spam", "ham", "eggs", "ham", "0"}; expected = new double[,] { {0, 0, 0, 1}, {0, 0, 1, 0}, {0, 1, 0, 0}, {0, 0, 1, 0}, {1, 0, 0, 0} }.ToDenseMatrix(); got = lb.Fit(inp).Transform(inp); Assert.AreEqual(expected, got); Assert.IsTrue(lb.InverseTransform(got).SequenceEqual(inp)); }
public void TestLabelBinarizerErrors() { var oneClass = new[] {0, 0, 0, 0}; var lb = new LabelBinarizer<int>().Fit(oneClass); lb = new LabelBinarizer<int>(); try { lb.Transform(new int[0]); Assert.Fail(); } catch (InvalidOperationException) { } try { lb.InverseTransform(new DenseMatrix(0, 0)); Assert.Fail(); } catch (ArgumentException) { } try { new LabelBinarizer<int>(negLabel: 2, posLabel: 1); Assert.Fail(); } catch (ArgumentException) { } try { new LabelBinarizer<int>(negLabel: 2, posLabel: 2); Assert.Fail(); } catch (ArgumentException) { } }