ReadDenseToEnd() public method

Reads all samples from the file and returns them as a dense vector, together with their associated output values.
public ReadDenseToEnd ( ) : double[]>.Tuple
return double[]>.Tuple
Esempio n. 1
0
        public void GuessDimensionsInMiddleRunTest()
        {
            MemoryStream file = new MemoryStream(
                Encoding.Default.GetBytes(Resources.a9a_train));

            SparseReader reader = new SparseReader(file, Encoding.Default);

            var r = reader.ReadDenseToEnd();
            double[][] samples = r.Item1;
            int[] labels = r.Item2.ToInt32();
            string[] descriptions = reader.SampleDescriptions.ToArray();

            Assert.AreEqual(26049, samples.Length);
            for (int i = 0; i < labels.Length; i++)
            {
                Assert.IsTrue(labels[i] == -1 || labels[i] == 1);
                Assert.IsTrue(descriptions[i] == String.Empty);
                Assert.AreEqual(123, samples[i].Length);
            }
        }
Esempio n. 2
0
        public void GuessNumberOfDimensionsTest()
        {
            MemoryStream file = new MemoryStream(
                Encoding.Default.GetBytes(Resources.iris_scale));

            SparseReader reader = new SparseReader(file, Encoding.Default);

            Assert.AreEqual(4, reader.Dimensions);


            var r = reader.ReadDenseToEnd();
            double[][] samples = r.Item1;
            int[] labels = r.Item2.ToInt32();
            string[] descriptions = reader.SampleDescriptions.ToArray();


            Assert.AreEqual(150, samples.Length);

            for (int i = 0; i < 150; i++)
            {
                Assert.IsTrue(labels[i] >= 0 && labels[i] <= 3);
                Assert.IsTrue(descriptions[i] == String.Empty);
                Assert.AreEqual(4, samples[i].Length);
            }
        }
        public void SparseLinearTest()
        {
            MulticlassSupportVectorMachine<Linear> svm1;
            MulticlassSupportVectorMachine<Linear, Sparse<double>> svm2;

            {
                Accord.Math.Random.Generator.Seed = 0;
                MemoryStream file = new MemoryStream(
                    Encoding.Default.GetBytes(Resources.iris_scale));
                var reader = new SparseReader(file, Encoding.Default);

                var samples = reader.ReadDenseToEnd();
                double[][] x = samples.Item1;
                int[] y = samples.Item2.ToMulticlass();

                var learner = new MulticlassSupportVectorLearning<Linear>()
                {
                    Learner = (p) => new LinearDualCoordinateDescent<Linear>()
                };

                svm1 = learner.Learn(x, y);
            }

            {
                Accord.Math.Random.Generator.Seed = 0;
                MemoryStream file = new MemoryStream(
                    Encoding.Default.GetBytes(Resources.iris_scale));

                // Create a new Sparse Sample Reader to read any given file,
                //  passing the correct dense sample size in the constructor
                var reader = new SparseReader(file, Encoding.Default);

                var samples = reader.ReadSparseToEnd();
                Sparse<double>[] x = samples.Item1;
                int[] y = samples.Item2.ToMulticlass();

                var learner = new MulticlassSupportVectorLearning<Linear, Sparse<double>>()
                {
                    Learner = (p) => new LinearDualCoordinateDescent<Linear, Sparse<double>>()
                };

                svm2 = learner.Learn(x, y);
            }

            Assert.AreEqual(svm1.Models.Length, svm2.Models.Length);
            for (int i = 0; i < svm1.Models.Length; i++)
            {
                var ma = svm1[i].Value;
                var mb = svm2[i].Value;

                Assert.IsTrue(ma.Weights.IsEqual(mb.Weights));
                Assert.AreEqual(ma.SupportVectors.Length, mb.SupportVectors.Length);
                for (int j = 0; j < ma.SupportVectors.Length; j++)
                {
                    double[] expected = ma.SupportVectors[j];
                    double[] actual = mb.SupportVectors[j].ToDense(4);
                    Assert.IsTrue(expected.IsEqual(actual, 1e-5));
                }
            }
        }
Esempio n. 4
0
        public void ReadAllTest()
        {
            MemoryStream file = new MemoryStream(
                Encoding.Default.GetBytes(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 a vector to obtain the label
            //  of each of the samples in the file

            // Declare a vector to obtain the description (or comments)
            //  about each of the samples in the file, if present.

            // Read the sparse samples and store them in a dense vector array
            var r = reader.ReadDenseToEnd();
            double[][] samples = r.Item1;
            int[] labels = r.Item2.ToInt32();
            string[] descriptions = reader.SampleDescriptions.ToArray();

            Assert.AreEqual(150, samples.Length);

            for (int i = 0; i < 150; i++)
            {
                Assert.IsTrue(labels[i] >= 0 && labels[i] <= 3);
                Assert.IsTrue(descriptions[i] == String.Empty);
                Assert.AreEqual(4, samples[i].Length);
            }
        }
Esempio n. 5
0
        /// <summary>
        ///   Reads a problem specified in LibSVM's sparse format.
        /// </summary>
        /// 
        public static Problem read_problem(string filename, double bias)
        {
            // Create a LibSVM's sparse data reader
            var reader = new SparseReader(filename);

            if (bias > 0)
                reader.Intercept = bias;

            var r = reader.ReadDenseToEnd();
            double[][] x = r.Item1;
            double[] y = r.Item2;

            return new Problem()
            {
                Dimensions = reader.Dimensions,
                Inputs = x,
                Outputs = y,
            };
        }