Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 3
0
		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;
		}
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
 public Item(string filename, Vector data)
 {
     this.Filename = filename;
     this.Data     = data;
 }
Ejemplo n.º 6
0
		public Item(string filename, Vector data)
		{
			this.Filename = filename;
			this.Data = data;
		}