public void ReadSampleTest() { // http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass.html#iris MemoryStream file = new MemoryStream( Encoding.Default.GetBytes(Accord.Tests.IO.Properties.Resources.iris_scale)); // Suppose we are going to read a sparse sample file containing // samples which have an actual dimension of 4. Since the samples // are in a sparse format, each entry in the file will probably // have a much lesser number of elements. int sampleSize = 4; // Create a new Sparse Sample Reader to read any given file, // passing the correct dense sample size in the constructor SparseReader reader = new SparseReader(file, Encoding.Default, sampleSize); // Declare some variables to receive each current sample int label = 0; string description; double[] sample; // Read a sample from the file var r = reader.ReadDense(); sample = r.Item1; label = (int)r.Item2; description = reader.SampleDescriptions[0]; Assert.AreEqual(1, label); Assert.AreEqual(String.Empty, description); Assert.AreEqual(4, sample.Length); Assert.AreEqual(-0.555556, sample[0], 0.0001); Assert.AreEqual(+0.250000, sample[1], 0.0001); Assert.AreEqual(-0.864407, sample[2], 0.0001); Assert.AreEqual(-0.916667, sample[3], 0.0001); var s = reader.ReadSparse(); sample = s.Item1.ToSparse(); label = (int)s.Item2; description = reader.SampleDescriptions[0]; Assert.AreEqual(1, label); Assert.AreEqual(String.Empty, description); Assert.AreEqual(8, sample.Length); Assert.AreEqual(0, sample[0], 0.0001); Assert.AreEqual(-0.666667, sample[1], 0.0001); Assert.AreEqual(1, sample[2], 0.0001); Assert.AreEqual(-0.166667, sample[3], 0.0001); Assert.AreEqual(2, sample[4], 0.0001); Assert.AreEqual(-0.864407, sample[5], 0.0001); Assert.AreEqual(3, sample[6], 0.0001); Assert.AreEqual(-0.916667, sample[7], 0.0001); int count = 2; // Read all samples from the file while (!reader.EndOfStream) { reader.SampleDescriptions.Clear(); r = reader.ReadDense(); sample = r.Item1; label = (int)r.Item2; description = reader.SampleDescriptions[0]; Assert.IsTrue(label >= 0 && label <= 3); Assert.IsTrue(description == String.Empty); Assert.AreEqual(4, sample.Length); count++; } Assert.AreEqual(150, count); }