public void Logistic_Regression_Test_CostFunction_1() { Matrix X = new[, ] { { 1, 1, 1 }, { 1, 1, 1 }, { 1, 1, 1 }, { 8, 1, 6 }, { 3, 5, 7 }, { 4, 9, 2 } }; Vector y = new Vector(new double[] { 1, 0, 1, 0, 1, 0 }); Vector theta = new Vector(new double[] { 0, 1, 0 }); ICostFunction logisticCostFunction = new LogisticCostFunction() { X = X, Y = y, Lambda = 3, Regularizer = new L2Regularizer() }; double cost = logisticCostFunction.ComputeCost(theta.Copy()); theta = logisticCostFunction.ComputeGradient(theta.Copy()); Assert.Equal(2.2933d, System.Math.Round(cost, 4)); Assert.Equal(1.6702d, System.Math.Round(theta[0], 4)); Assert.Equal(2.1483d, System.Math.Round(theta[1], 4)); Assert.Equal(1.0887d, System.Math.Round(theta[2], 4)); }
public void Logistic_Regression_Test_CostFunction_2_WithRegularization() { Matrix X = new[, ] { { 8, 1, 6 }, { 3, 5, 7 }, { 4, 9, 2 } }; Vector y = new Vector(new double[] { 1, 1, 0 }); Vector theta = new Vector(new double[] { 0, 1, 0 }); ICostFunction logisticCostFunction = new LogisticCostFunction() { X = X, Y = y, Lambda = 3, Regularizer = new L2Regularizer() }; double cost = logisticCostFunction.ComputeCost(theta.Copy()); theta = logisticCostFunction.ComputeGradient(theta.Copy()); Assert.Equal(3.6067d, System.Math.Round(cost, 4)); Assert.Equal(0.6093d, System.Math.Round(theta[0], 4)); Assert.Equal(3.8988d, System.Math.Round(theta[1], 4)); Assert.Equal(0.1131d, System.Math.Round(theta[2], 4)); }