public virtual void InitMC <F>(IProbabilisticClassifier <L, F> classifier, GeneralDataset <L, F> data) { //if (!(gData instanceof Dataset)) { // throw new UnsupportedOperationException("Can only handle Datasets, not "+gData.getClass().getName()); //} // //Dataset data = (Dataset)gData; IPriorityQueue <Pair <int, Pair <double, bool> > > q = new BinaryHeapPriorityQueue <Pair <int, Pair <double, bool> > >(); total = 0; correct = 0; logLikelihood = 0.0; for (int i = 0; i < data.Size(); i++) { IDatum <L, F> d = data.GetRVFDatum(i); ICounter <L> scores = classifier.LogProbabilityOf(d); L guess = Counters.Argmax(scores); L correctLab = d.Label(); double guessScore = scores.GetCount(guess); double correctScore = scores.GetCount(correctLab); int guessInd = data.LabelIndex().IndexOf(guess); int correctInd = data.LabelIndex().IndexOf(correctLab); total++; if (guessInd == correctInd) { correct++; } logLikelihood += correctScore; q.Add(new Pair <int, Pair <double, bool> >(int.Parse(i), new Pair <double, bool>(guessScore, bool.ValueOf(guessInd == correctInd))), -guessScore); } accuracy = (double)correct / (double)total; IList <Pair <int, Pair <double, bool> > > sorted = q.ToSortedList(); scores = new double[sorted.Count]; isCorrect = new bool[sorted.Count]; for (int i_1 = 0; i_1 < sorted.Count; i_1++) { Pair <double, bool> next = sorted[i_1].Second(); scores[i_1] = next.First(); isCorrect[i_1] = next.Second(); } }
public virtual double Score <F>(IProbabilisticClassifier <L, F> classifier, GeneralDataset <L, F> data) { List <Pair <double, int> > dataScores = new List <Pair <double, int> >(); for (int i = 0; i < data.Size(); i++) { IDatum <L, F> d = data.GetRVFDatum(i); ICounter <L> scores = classifier.LogProbabilityOf(d); int labelD = d.Label().Equals(posLabel) ? 1 : 0; dataScores.Add(new Pair <double, int>(Math.Exp(scores.GetCount(posLabel)), labelD)); } PRCurve prc = new PRCurve(dataScores); confWeightedAccuracy = prc.Cwa(); accuracy = prc.Accuracy(); optAccuracy = prc.OptimalAccuracy(); optConfWeightedAccuracy = prc.OptimalCwa(); logLikelihood = prc.LogLikelihood(); accrecall = prc.CwaArray(); optaccrecall = prc.OptimalCwaArray(); return(accuracy); }
public virtual double Score <F>(IProbabilisticClassifier <L, F> classifier, GeneralDataset <L, F> data) { InitMC(classifier, data); return(Score()); }
public MultiClassAccuracyStats(IProbabilisticClassifier <L, F> classifier, GeneralDataset <L, F> data, string file, int scoreType) { saveFile = file; this.scoreType = scoreType; InitMC(classifier, data); }
public MultiClassAccuracyStats(IProbabilisticClassifier <L, F> classifier, GeneralDataset <L, F> data, string file) : this(classifier, data, file, UseAccuracy) { }
public AccuracyStats(IProbabilisticClassifier <L, F> classifier, GeneralDataset <L, F> data, L posLabel) { // = null; this.posLabel = posLabel; Score(classifier, data); }
public virtual double Score <F>(IProbabilisticClassifier <L, F> classifier, GeneralDataset <L, F> data) { return(Score((IClassifier <L, F>)classifier, data)); }