func (nb *NaiveBayes) Predict(X *mat64.Dense) []Prediction {
	nSamples, _ := X.Dims()

	prediction := []Prediction{}

	for i := 0; i < nSamples; i++ {
		scores := map[int]float64{}
		for langIdx, _ := range nb.params.LangsCount {
			scores[langIdx] = nb.tokensProba(X.Row(nil, i), langIdx) + nb.langProba(langIdx)
		}

		bestScore := scores[0]
		bestLangIdx := 0

		for langIdx, score := range scores {
			if score > bestScore {
				bestScore = score
				bestLangIdx = langIdx
			}
		}

		prediction = append(prediction, Prediction{
			Label:    bestLangIdx,
			Language: "TODO: PENDING",
			Score:    bestScore,
		})
	}

	return prediction
}
Exemple #2
0
func removeRow(df *mat64.Dense, row int) *mat64.Dense {
	r, c := df.Dims()
	if row > r || row < 0 {
		panic("Row Index not supported")
	}

	cop := mat64.NewDense(r-1, c, nil)

	m := 0

	for i := 0; i < r; i++ {
		if i != row {
			cop.SetRow(m, df.Row(nil, i))
			m++
		}
	}

	return cop
}