Beispiel #1
0
    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)
Beispiel #2
0
        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))
Beispiel #3
0
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)