2016-10-28 6 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 2つのクラス(男性と女性)。 – Thilo

+0

@Thilo、正しくありません。 3つのクラスがあります。 – anonymous

+1

私はそれがコメントの言うことだと思います:コードは正しくありません(.5と他の計算についても)。私は誰が正しいと言うことはできません。あなたもコメントを残しているのでしょうか?質問がプログラミングよりも数学についてのものなら、Stackoverflowは間違ったフォーラムかもしれません。 – Thilo

答えて

0

私はそれを理解しました。

0.5はアプリオリ確率です。

関連する問題