public void GetLikelyhood(DataSample sample, double[] result) { var probabilities = result; for (int index = 0; index < probabilities.Length; index++) { probabilities[index] = _classesProbablityDistribution.GetLogProbability(index); foreach (var dataPoint in sample.DataPoints) { var value = Convert.ToDouble(dataPoint.Value); probabilities[index] = probabilities[index] + _distribution[index, dataPoint.ColumnId].GetLogProbability(value); } } }
public void GetLikelyhoodNaiveBayes(DataSample sample, ClassLikelyhood[] result) { var probabilities = result; for (int index = 0; index < Classes; index++) { probabilities[index].Value = _classesProbablityDistribution.GetLogProbability(index); probabilities[index].ClassId = index; foreach (var dataPoint in sample.DataPoints) { var value = Convert.ToDouble(dataPoint.Value); probabilities[index].Value = probabilities[index].Value + _distribution[index, dataPoint.ColumnId].GetLogProbability(value); } } Array.Sort(result, 0, Classes, _comparerLikelyhood); }
public string Compute(IDataRow datarow) { var probabilities = new double[_data.ClassesValue.Length]; var attributes = datarow.Attributes.ToArray(); var doubleConverter = new DoubleConverter(); var maxProbabilityIndex = 0; for (int index = 0; index < probabilities.Length; index++) { probabilities[index] = 1; for (int columnIndex = 0; columnIndex < _data.Attributes.Length; columnIndex++) { if (attributes[columnIndex] == TableData.ClassAttributeName) { probabilities[index] = _classesProbablityDistribution.GetLogProbability(index); continue; } var value = datarow[attributes[columnIndex]]; if (!value.IsNumeric()) { probabilities[index] = probabilities[index] + _distribution[index, columnIndex].GetLogProbability(_data.GetSymbol((string)value, columnIndex)); } else { probabilities[index] = probabilities[index] + _distribution[index, columnIndex].GetLogProbability(doubleConverter.Convert(value)); } } if (probabilities[maxProbabilityIndex] < probabilities[index]) { maxProbabilityIndex = index; } } return(_data.ClassesValue[maxProbabilityIndex]); }