def predict(self, x_label, y_class): pyx = [] likelihood = make_likelihood_table(x_label, y_class) Y = np.unique(y_class) X = np.unique(x_label) for j in range(len(Y)): total = 0 for i in range(len(X)): if (likelihood[i][j] == 0): continue total += math.log(likelihood[i][j]) y_sum = (y_class == Y[j]).sum() if y_sum: total += math.log(y_sum / len(y_class)) pyx.append([total, X[i], Y[j]]) prediction = max(pyx) return [prediction[1], prediction[2]]
def predict(self, x_label, y_class): """ Naive Bayes Model to predict the class given the label. PARAMETERS ========== x_label: ndarray(dtype=int,ndim=1,axis=1) Array of labels. y_class: ndarray(dtype=int,ndim=1,axis=1) Array of classes. RETURNS ======= Most probable output or prediction, as list of the label and class name. """ pyx = [] likelihood = make_likelihood_table(x_label, y_class) Y = np.unique(y_class) X = np.unique(x_label) for j in range(len(Y)): total = 0 for i in range(len(X)): if (likelihood[i][j] == 0): continue total += math.log(likelihood[i][j]) y_sum = (y_class == Y[j]).sum() if y_sum: total += math.log(y_sum / len(y_class)) pyx.append([total, X[i], Y[j]]) prediction = max(pyx) return [prediction[1], prediction[2]]