new_estimators(); estimate_priors(inst);
new_estimators(); estimate_priors(inst);
/** * The M step of the EM algorithm. * * @param inst the training instances * @throws Exception if something goes wrong */ private void M(Instances inst) throws Exception { int i, j, l; new_estimators(); estimate_priors(inst); // sum for (l = 0; l < inst.numInstances(); l++) { Instance in = inst.instance(l); for (i = 0; i < m_num_clusters; i++) { for (j = 0; j < m_num_attribs; j++) { if (inst.attribute(j).isNominal()) { m_model[i][j] .addValue(in.value(j), in.weight() * m_weights[l][i]); } else { m_modelNormal[i][j][0] += (in.value(j) * in.weight() * m_weights[l][i]); m_modelNormal[i][j][2] += in.weight() * m_weights[l][i]; m_modelNormal[i][j][1] += (in.value(j) * in.value(j) * in.weight() * m_weights[l][i]); } } } } // re-estimate Gaussian parameters M_reEstimate(inst); }
/** * The M step of the EM algorithm. * * @param inst the training instances * @throws Exception if something goes wrong */ private void M(Instances inst) throws Exception { int i, j, l; new_estimators(); estimate_priors(inst); // sum for (l = 0; l < inst.numInstances(); l++) { Instance in = inst.instance(l); for (i = 0; i < m_num_clusters; i++) { for (j = 0; j < m_num_attribs; j++) { if (inst.attribute(j).isNominal()) { m_model[i][j] .addValue(in.value(j), in.weight() * m_weights[l][i]); } else { m_modelNormal[i][j][0] += (in.value(j) * in.weight() * m_weights[l][i]); m_modelNormal[i][j][2] += in.weight() * m_weights[l][i]; m_modelNormal[i][j][1] += (in.value(j) * in.value(j) * in.weight() * m_weights[l][i]); } } } } // re-estimate Gaussian parameters M_reEstimate(inst); }