public void TestLinearRegression() { // Control.LinearAlgebraProvider = new MklLinearAlgebraProvider(); // a simple dataset var x = DenseMatrix.OfArray(new double[,] {{1}, {2}}); var y = DenseVector.OfEnumerable(new double[] {1, 2}); var clf = new LinearRegression(); clf.Fit(x, y); Assert.AreEqual(1.0, clf.Coef.Column(0)[0], 1E-5); //Assert.AreEqual(0.0, clf.Intercept[0]); Assert.IsTrue(DenseVector.OfEnumerable(new double[] {1, 2}).AlmostEquals(clf.Predict(x).Column(0))); // test it also for degenerate input x = DenseMatrix.OfArray(new double[,] {{1}}); y = DenseVector.OfEnumerable(new double[] {0}); clf = new LinearRegression(fitIntercept: false); clf.Fit(x, y); Assert.AreEqual(0.0, clf.Coef.Column(0)[0]); //assert_array_almost_equal(clf.intercept_, [0]) Assert.AreEqual(0.0, clf.Predict(x).Column(0)[0]); }
public void TestLinearRegressionSparseMultipleOutcome() { var random = new Random(0); var r = SampleGenerator.MakeSparseUncorrelated(random : random); Matrix x = SparseMatrix.OfMatrix(r.X); Vector<double> y = r.Y.Column(0); Matrix y1 = DenseMatrix.OfColumns(y.Count, 2, new[] {y, y}); int nFeatures = x.ColumnCount; var ols = new LinearRegression(); ols.Fit(x, y1); Assert.AreEqual(Tuple.Create(2, nFeatures), ols.Coef.Shape()); Assert.AreEqual(Tuple.Create(2, nFeatures), ols.Coef.Shape()); Matrix<double> yPred = ols.Predict(x); ols.Fit(x, y); Matrix<double> yPred1 = ols.Predict(x); Assert.IsTrue(yPred1.Column(0).AlmostEquals(yPred.Column(0))); Assert.IsTrue(yPred1.Column(0).AlmostEquals(yPred.Column(1))); }
public void TestLinearRegressionMultipleOutcome() { var result = SampleGenerator.MakeRegression(shuffle:false, random : new Random(0)); Matrix y = DenseMatrix.OfColumns( result.Y.RowCount, 2, new[]{ result.Y.Column(0), result.Y.Column(0) }); var numFeatures = result.X.RowCount; var clf = new LinearRegression(fitIntercept: true); clf.Fit(result.X, y); Assert.AreEqual(Tuple.Create(2, numFeatures), clf.Coef.Shape()); Matrix<double> yPred = clf.Predict(result.X); clf.Fit(result.X, result.Y); Matrix<double> yPred1 = clf.Predict(result.X); Assert.IsTrue(yPred1.Column(0).AlmostEquals(yPred.Column(0))); Assert.IsTrue(yPred1.Column(0).AlmostEquals(yPred.Column(1))); }