public void FactorizeTestMethod1() { // arrange var reader = new InMemorySparseMatrixReader( new SparseVector <double> { { 1, 85.18 }, { 2, 11.52 } }, new SparseVector <double> { { 1, 37.99 }, { 2, 74.95 } }, new SparseVector <double> ()); var nmf = new NMF(reader); // act var sw = Stopwatch.StartNew(); using (var factorization = nmf.Factorize(2, 1000)) { sw.Stop(); // assert Print("W", factorization.W); Print("H", factorization.H); Console.WriteLine("Factorization Euclidean distance: " + nmf.GetEuclideanDistance(factorization)); Console.WriteLine("Time: " + sw.ElapsedMilliseconds + " ms."); } }
static void Main(string[] args) { const string matrixFileName = @"c:\temp\matrix.txt"; const int rows = 10000; const int columns = 1000; const double density = 0.01; const int featuresCount = 10; const int iterationsCount = 30; Console.WriteLine("Generating matrix {0}x{1} with avg. {2} non-zero elements ({3}%)...", rows, columns, (long)((double)rows * columns * density), density * 100.0); using (var file = new FileStream(matrixFileName, FileMode.Create)) using (var mmwriter = new MatrixMarketWriter <double>(file)) { var vectors = SparseVectorHelper.GenerateSparseVectors(rows, columns, density, () => SparseVectorHelper.RandomInInterval(0.01, 100, 2)); mmwriter.Write(vectors); } Console.WriteLine("Matrix factorization (features=" + featuresCount + ", iterations=" + iterationsCount + ")..."); using (var file = new FileStream(matrixFileName, FileMode.Open)) using (var mmreader = new MatrixMarketReader <double>(file)) using (var cachedReader = new CachedMatrixMarketReader <double>(mmreader)) { var nmf = new NMF(cachedReader); // act var sw = Stopwatch.StartNew(); using (var factorization = nmf.Factorize(featuresCount, iterationsCount)) { sw.Stop(); Console.WriteLine("Factorization time: " + sw.ElapsedMilliseconds + " ms."); Console.WriteLine("Euclidean distance calculation..."); sw = Stopwatch.StartNew(); var euclideanDistance = nmf.GetEuclideanDistance(factorization); sw.Stop(); Console.WriteLine("Euclidean distance calculation time: " + sw.ElapsedMilliseconds + " ms."); Console.WriteLine("Factorization Euclidean distance: " + euclideanDistance); } } }
static void Main(string[] args) { const string matrixFileName = @"c:\temp\matrix.txt"; const int rows = 10000; const int columns = 1000; const double density = 0.01; const int featuresCount = 10; const int iterationsCount = 30; Console.WriteLine("Generating matrix {0}x{1} with avg. {2} non-zero elements ({3}%)...", rows, columns, (long)((double)rows * columns * density), density * 100.0); using (var file = new FileStream(matrixFileName, FileMode.Create)) using (var mmwriter = new MatrixMarketWriter<double>(file)) { var vectors = SparseVectorHelper.GenerateSparseVectors(rows, columns, density, () => SparseVectorHelper.RandomInInterval(0.01, 100, 2)); mmwriter.Write(vectors); } Console.WriteLine("Matrix factorization (features=" + featuresCount + ", iterations=" + iterationsCount + ")..."); using (var file = new FileStream(matrixFileName, FileMode.Open)) using (var mmreader = new MatrixMarketReader<double>(file)) using (var cachedReader = new CachedMatrixMarketReader<double>(mmreader)) { var nmf = new NMF(cachedReader); // act var sw = Stopwatch.StartNew(); using (var factorization = nmf.Factorize(featuresCount, iterationsCount)) { sw.Stop(); Console.WriteLine("Factorization time: " + sw.ElapsedMilliseconds + " ms."); Console.WriteLine("Euclidean distance calculation..."); sw = Stopwatch.StartNew(); var euclideanDistance = nmf.GetEuclideanDistance(factorization); sw.Stop(); Console.WriteLine("Euclidean distance calculation time: " + sw.ElapsedMilliseconds + " ms."); Console.WriteLine("Factorization Euclidean distance: " + euclideanDistance); } } }
public void FactorizeTestMethod1() { // arrange var reader = new InMemorySparseMatrixReader( new SparseVector<double> { { 1, 85.18 }, { 2, 11.52 } }, new SparseVector<double> { { 1, 37.99 }, { 2, 74.95 } }, new SparseVector<double> ()); var nmf = new NMF(reader); // act var sw = Stopwatch.StartNew(); using (var factorization = nmf.Factorize(2, 1000)) { sw.Stop(); // assert Print("W", factorization.W); Print("H", factorization.H); Console.WriteLine("Factorization Euclidean distance: " + nmf.GetEuclideanDistance(factorization)); Console.WriteLine("Time: " + sw.ElapsedMilliseconds + " ms."); } }