public Model(MultinomialLogisticRegression regression, Featurizer featurizer, FeatureSpace featureSpace, HashSet<Target> targets) { this.regression = regression; this.FeatureSpace = featureSpace; this.Featurizer = featurizer; this.Targets = targets; }
public Model Learn(IEnumerable<MLEntity> entities, int numberOfEntities, FeatureSpace featureSpace, HashSet<Target> targets) { var featureMatrix = new double[numberOfEntities][]; var labels = new int[numberOfEntities]; int counter = 0; var targetToInt = Model.GetTargetToInt(targets); foreach (var entity in entities) { featureMatrix[counter] = this.featurizer.CreateFeatureVector(entity.WebSite, featureSpace); labels[counter] = targetToInt[entity.Label]; ++counter; } Logger.Log("Features extracted"); var regression = new MultinomialLogisticRegression(inputs: featureSpace.Size, categories: targets.Count); LowerBoundNewtonRaphson lbnr = new LowerBoundNewtonRaphson(regression); double delta; int iteration = 0; do { Logger.Log("Iteration: {0}", iteration); delta = lbnr.Run(featureMatrix, labels); iteration++; } while (iteration < 10 && delta > 1e-6); return new Model(regression, this.featurizer, featureSpace, targets); }
public static FeatureSpace LoadFromFile(string path) { int count = 0; var featureSpace = new FeatureSpace(); foreach (var line in System.IO.File.ReadLines(path)) { featureSpace.features.Add(line, count); ++count; } return featureSpace; }