internal bool Reclassify() { if (classifying) { return(false); } classifying = true; List <Item> positive = new List <Item>(); List <Item> negative = new List <Item>(); foreach (Item item in Items) { if (item.State == 1) { positive.Add(item); } if (item.State == -1) { negative.Add(item); } } int count = positive.Count + negative.Count; if (count == 0) { Reset(); classifying = false; return(false); } Vector[] trainData = new Vector[count]; bool[] trainLabels = new bool[count]; Vector[] testData = new Vector[Items.Count - count]; int trainCount = 0, testCount = 0; foreach (Item item in Items) { if (item.State != 0) { trainData[trainCount] = item.Data; trainLabels[trainCount] = item.State == 1; trainCount++; } else { testData[testCount++] = item.Data; } } form1.bpm.Train(trainData, trainLabels); double[] probs = form1.bpm.Test(testData); testCount = 0; foreach (Item item in Items) { if (item.State == 0) { item.probTrue = probs[testCount++]; } } classifying = false; return(true); }
public static GaussianMixtureColorModel Fit(IEnumerable<Color> pixels, int mixtureComponentCount, double stopTolerance) { if (pixels == null) throw new ArgumentNullException("pixels"); if (mixtureComponentCount < 2) throw new ArgumentOutOfRangeException("mixtureComponentCount", "Mixture component count should be 2 or more."); MicrosoftResearch.Infer.Maths.Vector[] observedData = new MicrosoftResearch.Infer.Maths.Vector[pixels.Count()]; int index = 0; foreach (Color pixel in pixels) observedData[index++] = pixel.ToInferNetVector(); Mixture<VectorGaussian> result = MixtureUtils.Fit(observedData, mixtureComponentCount, mixtureComponentCount * 5, stopTolerance); return new GaussianMixtureColorModel(result); }
internal bool Reclassify() { if (classifying) return false; classifying = true; List<Item> positive = new List<Item>(); List<Item> negative = new List<Item>(); foreach (Item item in Items) { if (item.State == 1) positive.Add(item); if (item.State == -1) negative.Add(item); } int count = positive.Count + negative.Count; if (count == 0) { Reset(); classifying = false; return false; } Vector[] trainData = new Vector[count]; bool[] trainLabels = new bool[count]; Vector[] testData = new Vector[Items.Count - count]; int trainCount = 0, testCount = 0; foreach (Item item in Items) { if (item.State!=0) { trainData[trainCount] = item.Data; trainLabels[trainCount] = item.State==1; trainCount++; } else { testData[testCount++] = item.Data; } } form1.bpm.Train(trainData, trainLabels); double[] probs = form1.bpm.Test(testData); testCount = 0; foreach (Item item in Items) { if (item.State == 0) { item.probTrue = probs[testCount++]; } } classifying = false; return true; }
public static GaussianMixtureColorModel Fit(IEnumerable <Color> pixels, int mixtureComponentCount, double stopTolerance) { if (pixels == null) { throw new ArgumentNullException("pixels"); } if (mixtureComponentCount < 2) { throw new ArgumentOutOfRangeException("mixtureComponentCount", "Mixture component count should be 2 or more."); } MicrosoftResearch.Infer.Maths.Vector[] observedData = new MicrosoftResearch.Infer.Maths.Vector[pixels.Count()]; int index = 0; foreach (Color pixel in pixels) { observedData[index++] = pixel.ToInferNetVector(); } Mixture <VectorGaussian> result = MixtureUtils.Fit(observedData, mixtureComponentCount, mixtureComponentCount * 5, stopTolerance); return(new GaussianMixtureColorModel(result)); }
public Item(string filename, Vector data) { this.Filename = filename; this.Data = data; }
public Item(string filename, Vector data) { this.Filename = filename; this.Data = data; }