-
Notifications
You must be signed in to change notification settings - Fork 0
/
waveletfaces_method.py
130 lines (98 loc) · 5.1 KB
/
waveletfaces_method.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# -*- coding: utf8 -*-
import os
import math
import cv2
import pywt
import csv
import mlpy
import warnings
import timeit
import numpy as np
from Util import Util
from sklearn.svm import LinearSVC
from sklearn.naive_bayes import GaussianNB
from sklearn.neighbors import KNeighborsClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
def waveletfaces_method():
nn = KNeighborsClassifier(n_neighbors=1) # Classificador 1NN
gnb = GaussianNB() # Classificador Gaussian Naive Bayes
svc = LinearSVC()
lda = LinearDiscriminantAnalysis()
taxas_acerto_knn = []
taxas_acerto_gnb = []
taxas_acerto_svc = []
taxas_acerto_lda = []
with open(File, "rb") as csvfile:
reader = csv.reader(csvfile, delimiter='\n')
for line in reader: # each holdout
treino = []
teste = []
imgs_treino = []
imgs_teste = []
img = []
classes_treino = []
classes_teste = []
lista = line[0].split(";")
l = lista[0].split("|")
l.remove("")
for i in l:
treino.append(i.split(","))
l = lista[1].split("|")
l.remove("")
for i in l:
teste.append(i.split(","))
treino = np.array(treino)
teste = np.array(teste)
for f in treino:
for j in f[1:]:
j = j.replace("/", "//")
with open("%s//%s" %(directory, j), "rb") as csvfile:
reader = csv.reader(csvfile, delimiter = ";")
for line in reader:
img.append(line)
imgs_treino.append(np.array(img).flatten())
classes_treino.append(f[0])
img = []
for f in teste:
for j in f[1:]:
j = j.replace("/", "//")
with open("%s//%s" %(directory, j), "rb") as csvfile:
reader = csv.reader(csvfile, delimiter = ";")
for line in reader:
img.append(line)
imgs_teste.append(np.array(img).flatten())
classes_teste.append(f[0])
img = []
imgs_treino = np.array(imgs_treino, dtype=np.float)
imgs_teste = np.array(imgs_teste, dtype=np.float)
classes_teste = np.array(classes_teste)
classes_treino = np.array(classes_treino)
svc.fit(imgs_treino, classes_treino)
preds = svc.predict(imgs_teste)
taxas_acerto_svc.append(util.getRealAccuracy(classes_teste, preds.astype(str)))
gnb.fit(imgs_treino, classes_treino)
preds = gnb.predict(imgs_teste)
taxas_acerto_gnb.append(util.getRealAccuracy(classes_teste, preds.astype(str)))
nn.fit(imgs_treino, classes_treino)
preds = nn.predict(imgs_teste)
taxas_acerto_knn.append(util.getRealAccuracy(classes_teste, preds.astype(str)))
lda.fit(imgs_treino, classes_treino)
preds = lda.predict(imgs_teste)
taxas_acerto_lda.append(util.getRealAccuracy(classes_teste, preds.astype(str)))
return taxas_acerto_knn, taxas_acerto_gnb, taxas_acerto_svc, taxas_acerto_lda
if __name__ == "__main__":
start_time = timeit.default_timer()
base = "GTech"
File = "Waveletfaces LRC//Treino e Teste - 25-75//%s-25.txt" % base
dirs = ["%s_waveletfaces_lvl3_coif1" % base, "%s_waveletfaces_lvl3_db3" % base, "%s_waveletfaces_lvl3_db4" % base, "%s_waveletfaces_lvl3_haar" % base, "%s_waveletfaces_lvl3_rbio2.2" % base,
"%s_waveletfaces_lvl3_sym2" % base, "%s_waveletfaces_lvl3_sym4" % base]
for i in dirs:
directory = "WaveletFaces LRC//Bases Wavelet//%s//%s" %(base, i)
util = Util()
taxas_acerto_knn, taxas_acerto_gnb, taxas_acerto_svc, taxas_acerto_lda = waveletfaces_method()
print "\nFile - ", i
print "\nSupport Vector Classification: \n", "Media: %.5f" % (np.mean(np.array(taxas_acerto_svc)) / 100.0), "\tDesvio Padrao: %.5f" % (np.std(np.array(taxas_acerto_svc)) / 100.0)
print "\nGaussian Naive Bayes: \n", "Media: %.5f" % (np.mean(np.array(taxas_acerto_gnb)) / 100.0), "\tDesvio Padrao: %.5f" % (np.std(np.array(taxas_acerto_gnb)) / 100.0)
print "\nKNN: \n", "Media: %.5f" % (np.mean(np.array(taxas_acerto_knn)) / 100.0), "\tDesvio Padrao: %.5f" % (np.std(np.array(taxas_acerto_knn)) / 100.0)
print "\nLDA: \n", "Media: %.5f" % (np.mean(np.array(taxas_acerto_lda)) / 100.0), "\tDesvio Padrao: %.5f" % (np.std(np.array(taxas_acerto_lda)) / 100.0)
print "\nTime: ", (timeit.default_timer() - start_time) / 60.0, " mins"