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);
}