def makePrediction(trainedGMM, evalFeatures, evalAmps, silenceClassNum):
    """

    @param trainedGMM:
    @param evalFeatures: not scaled!!
    @param evalAmps: Amplitude values
    @param silenceClassNum:
    @return:
    """
    n_classes = len(trainedGMM['clfs'])

    X_test = trainedGMM['scaler'].transform(evalFeatures)

    logLikelihood = np.zeros((n_classes, X_test.shape[0]))

    user_component_matrix = np.empty((n_classes, X_test.shape[0]), dtype=np.bool_)
    """ Compute log-probability for each class for all points: """
    for i in range(n_classes):
        logLikelihood[i], tmp_comp_matrix = logProb(X_test, trainedGMM['clfs'][i].weights_,
        trainedGMM['clfs'][i].means_, trainedGMM['clfs'][i].covars_, return_component_matrix=True)
        user_component_matrix[i] = tmp_comp_matrix

    """ Select the class with the highest log-probability: """
    y_pred = np.argmax(logLikelihood, 0)

    # Number of predictions where most likely component from user-centric model:
    n_user_component = 0
    for i in range(X_test.shape[0]):
        if user_component_matrix[y_pred[i],i] == True:
            n_user_component += 1

    percent_user_component = round(100 * (n_user_component / float(X_test.shape[0])), 2)

    print(str(percent_user_component) + "% of all predictions had component from user" + 
    " as most likely component")

    return majorityVoteSilence(y_pred, evalAmps, silenceClassNum), percent_user_component
def makePrediction(trainedGMM, evalFeatures, evalAmps, silenceClassNum):
    """

    @param trainedGMM:
    @param evalFeatures: not scaled!!
    @param evalAmps: Amplitude values
    @param silenceClassNum:
    @return:
    """
    n_classes = len(trainedGMM['clfs'])

    X_test = trainedGMM['scaler'].transform(evalFeatures)

    logLikelihood = np.zeros((n_classes, X_test.shape[0]))

    """ Compute log-probability for each class for all points: """
    for i in range(n_classes):
        logLikelihood[i] = logProb(X_test, trainedGMM['clfs'][i].weights_,
        trainedGMM['clfs'][i].means_, trainedGMM['clfs'][i].covars_)

    """ Select the class with the highest log-probability: """
    y_pred = np.argmax(logLikelihood, 0)

    return majorityVoteSilence(y_pred, evalAmps, silenceClassNum)