public TestDataModel() { var Age = new TestData(); Age.DataName = "Age"; Age.Value = 47; var Sex = new TestData(); Sex.DataName = "Sex"; Sex.Value = "M"; var BP = new TestData(); BP.DataName = "BP"; BP.Value = "LOW"; var Cholesterol = new TestData(); Cholesterol.DataName = "Cholesterol"; Cholesterol.Value = "HIGH"; var Na = new TestData(); Na.DataName = "Na"; Na.Value = 0.739309; var K = new TestData(); K.DataName = "K"; K.Value = 0.056468; _testData = new List<TestData>() { Age, Sex, BP, Cholesterol, Na, K }; }
public TestDataModel(IList<object> row) { var Age = new TestData(); Age.DataName = "Age"; Age.Value = (double) row[0]; var Sex = new TestData(); Sex.DataName = "Sex"; Sex.Value = (string) row [1]; var BP = new TestData(); BP.DataName = "BP"; BP.Value = (string) row[2]; var Cholesterol = new TestData(); Cholesterol.DataName = "Cholesterol"; Cholesterol.Value = (string) row[3]; var Na = new TestData(); Na.DataName = "Na"; Na.Value = (double) row[4]; var K = new TestData(); K.DataName = "K"; K.Value = (double) row[5]; var Droug = new TestData(); K.DataName = "Droug"; K.Value = (string) row[6]; _testData = new List<TestData>() { Age, Sex, BP, Cholesterol, Na, K, Droug }; }
private static double CalculateNormalizedValue(TestData current, Attribute pairAttribute) { return Math.Round(Double.Parse(current.Value.ToString()) / pairAttribute.Precision, 0) * pairAttribute.Precision; }
private double GetProbabilityForContinuousValues(int i, TestData current, Attribute pairAttribute) { var normalizedValue = CalculateNormalizedValue(current, pairAttribute); //continuous var searchedClasses = FindContinuousSearchedClasses(i, current); // formula!!! var values = searchedClasses.GetValues(); var probabilityValue = NormalDistribution(normalizedValue, values[0], values[1], false); return probabilityValue; }
private Attribute FindPairAttribute(TestData current) { return _naiveBayesModel.DataModel.Attributes.FirstOrDefault(item => item.Name.Equals(current.DataName, StringComparison.InvariantCultureIgnoreCase)); }
private IOcurrenceModel FindDiscreteSearchedClasses(int i, TestData current) { return _naiveBayesModel.OcurrenceMatrix.First( m => m.GetAttributeName().Equals(current.DataName, StringComparison.InvariantCultureIgnoreCase) && m.GetAttributeValue() .Equals(current.Value.ToString(), StringComparison.InvariantCultureIgnoreCase) && m.GetTargetClass() .Equals(_naiveBayesModel.TargetAttributeClasses[i].ClassName, StringComparison.InvariantCultureIgnoreCase)); }
private void CalculateProbabilityForAttribute(int i, Attribute pairAttribute, TestData current, ref List<double> probabilityList) { if (pairAttribute.Definition.Count == 1 && pairAttribute.Definition[0].Equals("Real", StringComparison.InvariantCultureIgnoreCase)) { var probabilityValue = GetProbabilityForContinuousValues(i, current, pairAttribute); probabilityList.Add(probabilityValue); } else { //discrete var searchedClasses = FindDiscreteSearchedClasses(i, current); var value = searchedClasses.GetValues().First(); probabilityList.Add(value); } }