/** * Updates the model based on the current data. * Uses the leave-one-out Bootstrap to choose the number of components. */ protected void updateModel() { if (m_MixtureModel != null) { return; } else if (m_NumValues > 0) { // Shrink arrays if necessary if (m_Values.length > m_NumValues) { double[] values = new double[m_NumValues]; double[] weights = new double[m_NumValues]; System.arraycopy(m_Values, 0, values, 0, m_NumValues); System.arraycopy(m_Weights, 0, weights, 0, m_NumValues); m_Values = values; m_Weights = weights; } if (m_UseNormalizedEntropy) { m_MixtureModel = findModelUsingNormalizedEntropy(); } else { m_MixtureModel = buildModel(findNumComponentsUsingBootStrap(), m_Values, m_Weights); } } }
/** * Updates the model based on the current data. * Uses the leave-one-out Bootstrap to choose the number of components. */ protected void updateModel() { if (m_MixtureModel != null) { return; } else if (m_NumValues > 0) { // Shrink arrays if necessary if (m_Values.length > m_NumValues) { double[] values = new double[m_NumValues]; double[] weights = new double[m_NumValues]; System.arraycopy(m_Values, 0, values, 0, m_NumValues); System.arraycopy(m_Weights, 0, weights, 0, m_NumValues); m_Values = values; m_Weights = weights; } if (m_UseNormalizedEntropy) { m_MixtureModel = findModelUsingNormalizedEntropy(); } else { m_MixtureModel = buildModel(findNumComponentsUsingBootStrap(), m_Values, m_Weights); } } }