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)