public void Linear_Regression_Test_House_Predictions_Normal() { // test house prices based on ft-sq and no# bedrooms Matrix x = new [, ] { { 2104, 3 }, { 1600, 3 }, { 2400, 3 }, { 1416, 2 }, { 3000, 4 }, { 1985, 4 }, { 1534, 3 }, { 1427, 3 }, { 1380, 3 }, { 1494, 3 } }; Vector y = new[] { 399900, 329900, 369000, 232000, 539900, 299900, 314900, 198999, 212000, 242500 }; LinearRegressionGenerator generator = new LinearRegressionGenerator() { LearningRate = 0.01, MaxIterations = 400, Lambda = 0, NormalizeFeatures = true }; var model = generator.Generate(x.Copy(), y.Copy()); var priceEqns = model.Predict(new Vector(new double[] { 1650, 3 })); // CK 150929: increased due to improvements in optimisation double actualEqns = 295107.0d; Almost.Equal(actualEqns, System.Math.Round(priceEqns, 0), 5000); }
//[Test] public void Save_And_Load_LinearRegression() { Matrix x = new [, ] { { 2104, 3 }, { 1600, 3 }, { 2400, 3 }, { 1416, 2 }, { 3000, 4 }, { 1985, 4 }, { 1534, 3 }, { 1427, 3 }, { 1380, 3 }, { 1494, 3 } }; Vector y = new[] { 399900, 329900, 369000, 232000, 539900, 299900, 314900, 198999, 212000, 242500 }; LinearRegressionGenerator generator = new LinearRegressionGenerator() { LearningRate = 0.01, MaxIterations = 400, Lambda = 1 }; var model = generator.Generate(x.Copy(), y.Copy()) as LinearRegressionModel; Serialize(model); var lmodel = Deserialize <LinearRegressionModel>(); Assert.AreEqual(model.Theta, lmodel.Theta); }
public void Linear_Regression_Test_House_Predictions_Regularized() { // test house prices based on ft-sq and no# bedrooms Matrix x = new [, ] { { 2104, 3 }, { 1600, 3 }, { 2400, 3 }, { 1416, 2 }, { 3000, 4 }, { 1985, 4 }, { 1534, 3 }, { 1427, 3 }, { 1380, 3 }, { 1494, 3 } }; Vector y = new[] { 399900, 329900, 369000, 232000, 539900, 299900, 314900, 198999, 212000, 242500 }; LinearRegressionGenerator generator = new LinearRegressionGenerator() { LearningRate = 0.01, MaxIterations = 400, Lambda = 1 }; var model = generator.Generate(x.Copy(), y.Copy()); var priceGrad = model.Predict(new Vector(new double[] { 1650, 3 })); double actualGrad = 280942d; Assert.AreEqual(actualGrad, System.Math.Round(priceGrad, 0)); }