2016-10-28 2 views
0

This is an implementation Алгоритм классификатора Наивного Байеса.Что здесь представляет значение 0.5?

Я не мог понять строку score.Add(results[i].Name, finalScore * 0.5);.

Где это значение 0,5?

Почему 0.5? Почему не какая-либо другая ценность?

public string Classify(double[] obj) 
{ 
    Dictionary<string,> score = new Dictionary<string,>(); 

    var results = (from myRow in dataSet.Tables[0].AsEnumerable() 
        group myRow by myRow.Field<string>(
         dataSet.Tables[0].Columns[0].ColumnName) into g 
        select new { Name = g.Key, Count = g.Count() }).ToList(); 

    for (int i = 0; i < results.Count; i++) 
    { 
     List<double> subScoreList = new List<double>(); 
     int a = 1, b = 1; 
     for (int k = 1; k < dataSet.Tables["Gaussian"].Columns.Count; k = k + 2) 
     { 
      double mean = Convert.ToDouble(dataSet.Tables["Gaussian"].Rows[i][a]); 
      double variance = Convert.ToDouble(dataSet.Tables["Gaussian"].Rows[i][++a]); 
      double result = Helper.NormalDist(obj[b - 1], mean, Helper.SquareRoot(variance)); 
      subScoreList.Add(result); 
      a++; b++; 
     } 

     double finalScore = 0; 
     for (int z = 0; z < subScoreList.Count; z++) 
     { 
      if (finalScore == 0) 
      { 
       finalScore = subScoreList[z]; 
       continue; 
      } 

      finalScore = finalScore * subScoreList[z]; 
     } 



     score.Add(results[i].Name, finalScore * 0.5); 



    } 

    double maxOne = score.Max(c => c.Value); 
    var name = (from c in score 
       where c.Value == maxOne 
       select c.Key).First(); 

    return name; 
} 
+0

Это обсуждается в комментариях на странице: http://www.codeproject.com/Articles/318126/Naive-Bayes-Classifier?msg=4935358#xx4935358xx Видимо, вы разделите на два, потому что есть два класса (мужской и женщины). – Thilo

+0

@ Тило, не правильно. Есть три класса. – anonymous

+1

Я думаю, что это то, о чем говорится в комментарии: Код неправильный (о .5 и некоторых других вычислениях тоже). Я не могу сказать, кто прав. Может быть, вы тоже оставите комментарий? Если вопрос скорее о математике, чем программировании, Stackoverflow может быть неправильным форумом. – Thilo

ответ