コード例 #1
0
        public void BinaryRecommendationCustomSerializationRegressionTest()
        {
            // TODO: We need a static class which implements mapping chainings
            Rand.Restart(12347);
            var positiveOnlyMapping          = new PositiveOnlyDataMapping();
            var negativeDataGeneratorMapping = positiveOnlyMapping.WithGeneratedNegativeData(1.0);

            using (Stream stream = new MemoryStream())
            {
                negativeDataGeneratorMapping.SaveForwardCompatibleAsBinary(stream);

                stream.Seek(0, SeekOrigin.Begin);

                using (var reader = new WrappedBinaryReader(new BinaryReader(stream)))
                {
                    var deserializedMapping =
                        new NegativeDataGeneratorMapping <PositiveOnlyDataset, Tuple <string, string>, string, string, FeatureProvider, Vector>(reader, positiveOnlyMapping);
                    var recommender = MatchboxRecommender.Create(deserializedMapping);
                    recommender.Train(this.positiveOnlyDataset, this.featureProvider); // must not throw

                    foreach (var instance in positiveOnlyMapping.GetInstances(this.positiveOnlyDataset))
                    {
                        var user = positiveOnlyMapping.GetUser(this.positiveOnlyDataset, instance);
                        var item = positiveOnlyMapping.GetItem(this.positiveOnlyDataset, instance);

                        Assert.Equal(1, recommender.Predict(user, item, this.featureProvider));
                    }
                }
            }
        }
コード例 #2
0
        public void GaussianCustomSerializationTest()
        {
            using (var stream = new MemoryStream())
            {
                var writer = new WrappedBinaryWriter(new BinaryWriter(stream));
                writer.Write(Gaussian.FromNatural(-13.89, 436.12));
                writer.Write(Gaussian.PointMass(Math.PI));
                writer.Write(Gaussian.Uniform());

                stream.Seek(0, SeekOrigin.Begin);

                using (var reader = new WrappedBinaryReader(new BinaryReader(stream)))
                {
                    Gaussian natural = reader.ReadGaussian();
                    Assert.Equal(-13.89, natural.MeanTimesPrecision);
                    Assert.Equal(436.12, natural.Precision);

                    Gaussian pointMass = reader.ReadGaussian();
                    Assert.True(pointMass.IsPointMass);
                    Assert.Equal(Math.PI, pointMass.GetMean());

                    Gaussian uniform = reader.ReadGaussian();
                    Assert.True(uniform.IsUniform());
                }
            }
        }
コード例 #3
0
        public void GammaCustomSerializationTest()
        {
            using (var stream = new MemoryStream())
            {
                var writer = new WrappedBinaryWriter(new BinaryWriter(stream));
                writer.Write(Gamma.FromShapeAndRate(1.0, 10.0));
                writer.Write(Gamma.PointMass(Math.PI));
                writer.Write(Gamma.Uniform());

                stream.Seek(0, SeekOrigin.Begin);

                using (var reader = new WrappedBinaryReader(new BinaryReader(stream)))
                {
                    Gamma shapeAndRate = reader.ReadGamma();
                    Assert.Equal(1.0, shapeAndRate.Shape);
                    Assert.Equal(10.0, shapeAndRate.Rate);

                    Gamma pointMass = reader.ReadGamma();
                    Assert.True(pointMass.IsPointMass);
                    Assert.Equal(Math.PI, pointMass.GetMean());

                    Gamma uniform = reader.ReadGamma();
                    Assert.True(uniform.IsUniform());
                }
            }
        }
コード例 #4
0
ファイル: MatchboxRecommender.cs プロジェクト: kant2002/infer
        LoadBackwardCompatible <TInstanceSource, TInstance, TUser, TItem, TRating, TFeatureSource>(
            Stream stream, IStarRatingRecommenderMapping <TInstanceSource, TInstance, TUser, TItem, TRating, TFeatureSource, Vector> mapping)
        {
            if (stream == null)
            {
                throw new ArgumentNullException(nameof(stream));
            }

            using (var reader = new WrappedBinaryReader(new BinaryReader(stream, Encoding.UTF8, true)))
            {
                return(LoadBackwardCompatible(reader, mapping));
            }
        }