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;
}
Это обсуждается в комментариях на странице: http://www.codeproject.com/Articles/318126/Naive-Bayes-Classifier?msg=4935358#xx4935358xx Видимо, вы разделите на два, потому что есть два класса (мужской и женщины). – Thilo
@ Тило, не правильно. Есть три класса. – anonymous
Я думаю, что это то, о чем говорится в комментарии: Код неправильный (о .5 и некоторых других вычислениях тоже). Я не могу сказать, кто прав. Может быть, вы тоже оставите комментарий? Если вопрос скорее о математике, чем программировании, Stackoverflow может быть неправильным форумом. – Thilo