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