diff options
| -rwxr-xr-x | train.py | 14 | 
1 files changed, 12 insertions, 2 deletions
@@ -4,6 +4,7 @@  # EE4 Pattern Recognition coursework  import matplotlib.pyplot as plt +from mpl_toolkits.mplot3d import Axes3D  import sys  import random  from random import randint @@ -64,6 +65,7 @@ parser.add_argument("-2", "--grapheigen", help="Swow 2D graph of targets versus  parser.add_argument("-p", "--pca", help="Use PCA", action='store_true')  parser.add_argument("-l", "--lda", help="Use LDA", action='store_true')  parser.add_argument("-r", "--reconstruct", help="Use PCA reconstruction, specify face NR", type=int, default=0) +parser.add_argument("-cm", "--conf_mat", help="Show visual confusion matrix", action='store_true')  parser.add_argument("-q", "--pca_r", help="Use Reduced PCA", action='store_true') @@ -123,7 +125,7 @@ if args.pca or args.pca_r:          plt.show()  if args.lda or (args.pca and args.lda): -    lda = LinearDiscriminantAnalysis(n_components=M) +    lda = LinearDiscriminantAnalysis(n_components=M, solver='eigen')      faces_train = lda.fit_transform(faces_train, target_train)      faces_test = lda.transform(faces_test)      class_means = lda.means_ @@ -150,7 +152,9 @@ if args.grapheigen:      # Colors for distinct individuals      cols = ['#{:06x}'.format(randint(0, 0xffffff)) for i in range(52)]      pltCol = [cols[int(k)] for k in target_train] -    plt.scatter(faces_train[:, 0], faces_train[:, 1], color=pltCol) +    fig = plt.figure() +    ax = fig.add_subplot(111, projection='3d') +    ax.scatter(faces_train[:, 0], faces_train[:, 1], faces_train[:, 2], marker='o', color=pltCol)      plt.show()  classifier = KNeighborsClassifier(n_neighbors=args.neighbors) @@ -165,4 +169,10 @@ else:  cm = confusion_matrix(target_test, target_pred)    print(cm)   +if (args.conf_mat): +    plt.matshow(cm, cmap='Blues') +    plt.colorbar() +    plt.ylabel('Actual') +    plt.xlabel('Predicted') +    plt.show()  print('Accuracy %fl' % accuracy_score(target_test, target_pred))   | 
