Skip to content

Instantly share code, notes, and snippets.

@NMZivkovic
Last active July 1, 2018 16:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NMZivkovic/f426a89c832004995a722b63f0e59c96 to your computer and use it in GitHub Desktop.
Save NMZivkovic/f426a89c832004995a722b63f0e59c96 to your computer and use it in GitHub Desktop.
public class ModelBuilder
{
private readonly string _trainingDataLocation;
private readonly ILearningPipelineItem _algorythm;
public ModelBuilder(string trainingDataLocation, ILearningPipelineItem algorythm)
{
_trainingDataLocation = trainingDataLocation;
_algorythm = algorythm;
}
/// <summary>
/// Using training data location that is passed trough constructor this method is building
/// and training machine learning model.
/// </summary>
/// <returns>Trained machine learning model.</returns>
public PredictionModel<WineQualitySample, WineQualityPrediction> BuildAndTrain()
{
var pipeline = new LearningPipeline();
pipeline.Add(new TextLoader(_trainingDataLocation).CreateFrom<WineQualitySample>(useHeader: true, separator: ';'));
pipeline.Add(new MissingValueSubstitutor("FixedAcidity") { ReplacementKind = NAReplaceTransformReplacementKind.Mean});
pipeline.Add(MakeNormalizer());
pipeline.Add(new ColumnConcatenator("Features",
"FixedAcidity",
"VolatileAcidity",
"CitricAcid",
"ResidualSugar",
"Chlorides",
"FreeSulfurDioxide",
"TotalSulfurDioxide",
"Density",
"Ph",
"Sulphates",
"Alcohol"));
pipeline.Add(_algorythm);
return pipeline.Train<WineQualitySample, WineQualityPrediction>();
}
private ILearningPipelineItem MakeNormalizer()
{
var normalizer = new BinNormalizer();
normalizer.NumBins = 2;
normalizer.AddColumn("Label");
return normalizer;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment