예제 #1
0
        public void FieldAwareFactorizationMachine_Estimator()
        {
            var data = new TextLoader(Env, GetFafmBCLoaderArgs())
                       .Read(GetDataPath(TestDatasets.breastCancer.trainFilename));

            var est = new FieldAwareFactorizationMachineTrainer(Env, new[] { "Feature1", "Feature2", "Feature3", "Feature4" }, "Label",
                                                                advancedSettings: s =>
            {
                s.Shuffle   = false;
                s.Iters     = 3;
                s.LatentDim = 7;
            });

            TestEstimatorCore(est, data);
            var model        = est.Fit(data);
            var anotherModel = est.Train(data, data, model.Model);

            Done();
        }
예제 #2
0
        public void FfmBinaryClassificationWithAdvancedArguments()
        {
            var mlContext = new MLContext(seed: 0);
            var data      = DatasetUtils.GenerateFfmSamples(500);
            var dataView  = ComponentCreation.CreateDataView(mlContext, data.ToList());

            var ffmArgs = new FieldAwareFactorizationMachineTrainer.Arguments();

            // Customized the field names.
            ffmArgs.FeatureColumn       = nameof(DatasetUtils.FfmExample.Field0); // First field.
            ffmArgs.ExtraFeatureColumns = new[] { nameof(DatasetUtils.FfmExample.Field1), nameof(DatasetUtils.FfmExample.Field2) };

            var pipeline = new FieldAwareFactorizationMachineTrainer(mlContext, ffmArgs);

            var model      = pipeline.Fit(dataView);
            var prediction = model.Transform(dataView);

            var metrics = mlContext.BinaryClassification.Evaluate(prediction);

            // Run a sanity check against a few of the metrics.
            Assert.InRange(metrics.Accuracy, 0.9, 1);
            Assert.InRange(metrics.Auc, 0.9, 1);
            Assert.InRange(metrics.Auprc, 0.9, 1);
        }