public void IGMNDataTest2() { IGMNData a = new IGMNData(igmn, new Vector(new double[] { 0, 0 })); a.Gaussian.Covariance.Covariance.WriteToFile("orig_full_cov.txt"); a.Gaussian.Covariance.InverseCovariance.WriteToFile("orig_full_invcov.txt"); a.Gaussian.Mean.WriteToFile("orig_full_mean.txt"); Console.Out.WriteLine(a.Gaussian.Covariance.Determinant); a.InputGaussian.Covariance.Covariance.WriteToFile("orig_inp_cov.txt"); a.InputGaussian.Covariance.InverseCovariance.WriteToFile("orig_inp_invcov.txt"); a.InputGaussian.Mean.WriteToFile("orig_inp_mean.txt"); Console.Out.WriteLine(a.InputGaussian.Covariance.Determinant); a.RefineWithData(new Vector(new double[] { 1, 1 }), 0.5); a.RefineWithData(new Vector(new double[] { 2, 2 }), 0.3333333333333333333); a.RefineWithData(new Vector(new double[] { 3, 3 }), 0.25); a.Gaussian.Covariance.Covariance.WriteToFile("mod_full_cov.txt"); a.Gaussian.Covariance.InverseCovariance.WriteToFile("mod_full_invcov.txt"); a.Gaussian.Mean.WriteToFile("mod_full_mean.txt"); Console.Out.WriteLine(a.Gaussian.Covariance.Determinant); a.InputGaussian.Covariance.Covariance.WriteToFile("mod_inp_cov.txt"); a.InputGaussian.Covariance.InverseCovariance.WriteToFile("mod_inp_invcov.txt"); a.InputGaussian.Mean.WriteToFile("mod_inp_mean.txt"); Console.Out.WriteLine(a.InputGaussian.Covariance.Determinant); }
public void Train(Vector x) { double sum = 0; XTVector min = convertVector(x); min[min.Length - 1] = double.MinValue; XTVector max = convertVector(x); max[max.Length - 1] = double.MaxValue; List<IGMNData> possibleRelevant2 = xtree.rangeQuery(new MBR(min, max)); for (int i = 0; i < possibleRelevant2.Count; ++i) { sum += possibleRelevant2[i].Accumlator; possibleRelevant2[i].Age++; } sum /= possibleRelevant2.Count; List<IGMNData> possibleRelevant = xtree.pointQuery(convertVector(x)); List<double> posterior = new List<double>(); double sum2 = 0; List<IGMNData> relevant = new List<IGMNData>(); for (int i = 0; i < possibleRelevant.Count; ++i) { double e; double relev = possibleRelevant[i].Gaussian.Likelihood(x, out e) * (possibleRelevant[i].Accumlator / sum); // likelihood * prior if (e > RelevanceLevel) { posterior.Add(relev); sum2 += relev; relevant.Add(possibleRelevant[i]); } } if (relevant.Count == 0) { IGMNData newdata = new IGMNData(this, x); cortical.Add(newdata); xtree.Insert(newdata); } else { //relevance normalization for (int i = 0; i < posterior.Count; ++i) { posterior[i] /= sum2; } //true relevant gaussians update for (int i = 0; i < relevant.Count; ++i) { relevant[i].Accumlator += posterior[i]; double w = posterior[i] / relevant[i].Accumlator; xtree.Delete(relevant[i]); relevant[i].RefineWithData(x, w);//0.25|w xtree.Insert(relevant[i]); } } //delete unneeded gaussians List<IGMNData> deleteList = new List<IGMNData>(); foreach (IGMNData g in possibleRelevant2) { if ((g.Age > AGE_MIN) && (g.Accumlator < ACCUMLATOR_MIN)) { deleteList.Add(g); } } foreach (IGMNData g in deleteList) { cortical.Remove(g); xtree.Delete(g); } }
public void IGMNDataTest() { IGMNData a = new IGMNData(null, new Vector(new double[] { 1, 2, 3, 4, 5, 4, 3, 2, 1 })); a.Gaussian.Covariance.Covariance.WriteToFile("orig_full_cov.txt"); a.Gaussian.Covariance.InverseCovariance.WriteToFile("orig_full_invcov.txt"); a.Gaussian.Mean.WriteToFile("orig_full_mean.txt"); Console.Out.WriteLine(a.Gaussian.Covariance.Determinant); a.InputGaussian.Covariance.Covariance.WriteToFile("orig_inp_cov.txt"); a.InputGaussian.Covariance.InverseCovariance.WriteToFile("orig_inp_invcov.txt"); a.InputGaussian.Mean.WriteToFile("orig_inp_mean.txt"); Console.Out.WriteLine(a.InputGaussian.Covariance.Determinant); a.RefineWithData(new Vector(new double[] { 4, 5, 1, 2, 8, 3, 3, 8, 1 }), 0.5); a.RefineWithData(new Vector(new double[] { 8, 3, 3, 1, 2, 8, 1, 4, 5 }), 0.5); a.Gaussian.Covariance.Covariance.WriteToFile("mod_full_cov.txt"); a.Gaussian.Covariance.InverseCovariance.WriteToFile("mod_full_invcov.txt"); a.Gaussian.Mean.WriteToFile("mod_full_mean.txt"); Console.Out.WriteLine(a.Gaussian.Covariance.Determinant); a.InputGaussian.Covariance.Covariance.WriteToFile("mod_inp_cov.txt"); a.InputGaussian.Covariance.InverseCovariance.WriteToFile("mod_inp_invcov.txt"); a.InputGaussian.Mean.WriteToFile("mod_inp_mean.txt"); Console.Out.WriteLine(a.InputGaussian.Covariance.Determinant); }