plt.ylabel('z') plt.xlim(-4, 4) plt.ylim(-4, 4) plt.title('Predictions for {} training samples'.format(x_train.shape[0])) plt.errorbar(x, mu_pred, yerr=stdevs, barsabove=True, ecolor='maroon', elinewidth=1, linewidth=1, capsize=1, color='firebrick') plt.scatter(x_train, z_train, label='Training Samples', c='navy', alpha = 0.5) plt.legend() ghettotitle = 'predict{}.png'.format(x_train.shape[0]) plt.savefig(ghettotitle) plt.show() return if __name__ == '__main__': # training data x_train, z_train = util.get_data_in_file('training.txt') # new inputs for prediction x_test = [x for x in np.arange(-4,4.01,0.2)] # known parameters sigma2 = 0.1 beta = 1 # number of training samples used to compute posterior ns = 100 # used samples x = x_train[0:ns] z = z_train[0:ns] # prior distribution p(a)
if lda_male > lda_female: y_lda[i] = 1 else: y_lda[i] = 2 mis_lda = 1 - sum(y_lda == y) / len(y) mis_qda = 1 - sum(y_qda == y) / len(y) return (mis_lda, mis_qda) if __name__ == '__main__': # load training data and testing data x_train, y_train = util.get_data_in_file('trainHeightWeight.txt') x_test, y_test = util.get_data_in_file('testHeightWeight.txt') # parameter estimation and visualization in LDA/QDA mu_male, mu_female, cov, cov_male, cov_female = discrimAnalysis( x_train, y_train) # misclassification rate computation mis_LDA, mis_QDA = misRate(mu_male, mu_female, cov, cov_male, cov_female, x_test, y_test) print(mis_LDA) print(mis_QDA) # qda_male = -1/2*np.matmul(np.matmul((XY-mu_male),cov_male_inv),(XY-mu_male).T) \ # + np.log(pi_male) - 1/2*np.log(npl.det(cov_male))
import os.path import numpy as np import numpy.linalg as npl import matplotlib.pyplot as plt import util [X, z] = util.get_data_in_file('training.txt') X = np.append(np.ones((len(X), 1)), X, axis=1) sigma2 = 0.1 beta = 1 mu_hat = npl.solve((np.matmul(X.T, X) + sigma2 / (beta ^ 2)), np.matmul(X.T, z)) Cov_mat = npl.inv(np.matmul(X.T, X) + sigma2 / (beta ^ 2)) * sigma2 mu_a = 0 Cov_a = beta * np.eye(2) a0 = np.arange(-1, 1.1, 0.1) a1 = np.arange(-1, 1.1, 0.1) A1, A0 = np.meshgrid(a0, a1) X_1 = X[0, :] X_1.shape = (1, 2) z_1 = z[0, 0] mu_1 = npl.solve((np.matmul(X_1.T, X_1) + sigma2 / (beta ^ 2)), X_1.T * z_1) Cov_1 = npl.inv(np.matmul(X_1.T, X_1) + sigma2 / (beta ^ 2)) * sigma2 X_5 = X[0:5, :] z_5 = z[0:5, 0] z_5.shape = (5, 1) mu_5 = npl.solve((np.matmul(X_5.T, X_5) + sigma2 / (beta ^ 2)),
female_qda = np.asarray(female_qda) print(male_qda) print(female_qda) correct_qda = 0 for i in range(0, len(y)): if (male_qda[i] >= female_qda[i] and y[i] == 1): correct_qda = correct_qda + 1 elif (male_qda[i] <= female_qda[i] and y[i] == 2): correct_qda = correct_qda + 1 mis_qda = 1 - correct_qda / len(y) print(mis_qda) return (mis_lda, mis_qda) if __name__ == '__main__': # load training data and testing data x_train, y_train = util.get_data_in_file( '/Users/lijiani/Downloads/ldaqda/trainHeightWeight.txt') x_test, y_test = util.get_data_in_file( '/Users/lijiani/Downloads/ldaqda/testHeightWeight.txt') # parameter estimation and visualization in LDA/QDA mu_male, mu_female, cov, cov_male, cov_female = discrimAnalysis( x_train, y_train) # misclassification rate computation mis_LDA, mis_QDA = misRate(mu_male, mu_female, cov, cov_male, cov_female, x_test, y_test)
if (len(x_train) == 1): plt.title('prediction based on 1 data sample') plt.savefig("predict1.pdf") elif (len(x_train) == 5): plt.title('prediction based on 5 data samples') plt.savefig("predict5.pdf") elif (len(x_train) == 100): plt.title('prediction based on 100 data samples') plt.savefig("predict100.pdf") plt.show() return if __name__ == '__main__': # training data x_train, z_train = util.get_data_in_file( '/Users/lijiani/Downloads/reg/training.txt') # new inputs for prediction x_test = [x for x in np.arange(-4, 4.01, 0.2)] # known parameters sigma2 = 0.1 beta = 1 # number of training samples used to compute posterior ns = 1 # used samples x = x_train[0:ns] z = z_train[0:ns] # prior distribution p(a)