-
Notifications
You must be signed in to change notification settings - Fork 2
/
va_with_matevz_chroma.py
103 lines (78 loc) · 2.5 KB
/
va_with_matevz_chroma.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
from feature_extract.features import(
calc_chroma_features
)
from utils.read import(
csv_2_dict_va,
read_csv_song_features,
read_eric_va,
read_fake_chroma
)
from utils.calc_utils import(
find_a_v_mens_va,
regression,
average_distance_va,
nearest_dist_average_va,
no_stdev_average_va,
find_in_dict,
valence_distance_va,
arousal_distance_va
)
from utils.plot import(
plot_all_va
)
import numpy as np
import random
import sys
# y, sr = load_files('audio/101.mp3')
# mfcc_v = mfcc(y, sr)
# get exsisting valence and arousal data
valence, arousal = csv_2_dict_va('csv/survery2dataMin1.csv')
# calculate fetures for song in train set
ids, feat = read_fake_chroma('features/fakechroma')
best_avg = sys.maxint
best_near = sys.maxint
best_std = sys.maxint
best_val = sys.maxint
best_aro = sys.maxint
for i in range(50):
train_ids = ids
random.shuffle(train_ids)
all_ids = train_ids[141:]
train_ids = train_ids[0:140]
# calcultae valence and arousal find_a_v_mens
val_mean, aro_mean = find_a_v_mens_va(train_ids, valence, arousal)
train_feat = find_in_dict(feat, train_ids)
test_feat = find_in_dict(feat, all_ids)
# use regression
X_v, X_a = regression(train_feat, val_mean, aro_mean)
# calculating features for whole dataset
#print all_feat.shape
# use regresion function to calculate v and a
all_val = np.sum(np.array(test_feat) * X_v, axis=1)
all_aro = np.sum(test_feat * X_a, axis=1)
#print all_val.shape
#print all_aro.shape
print "ATTEMPT" + str(i)
avg = average_distance_va(all_val, all_aro, valence, arousal, all_ids)
nearest = nearest_dist_average_va(all_val, all_aro, valence, arousal, all_ids)
standdev = no_stdev_average_va(all_val, all_aro, val_mean, aro_mean, valence, arousal, all_ids)
valence_dist = valence_distance_va(all_val, all_aro, valence, arousal, all_ids)
arousal_dist = arousal_distance_va(all_val, all_aro, valence, arousal, all_ids)
print 'Average distance: ' + str(avg)
print 'Nearest distance: ' + str(nearest)
print 'Nearest distance: ' + str(standdev)
if avg < best_avg:
best_avg = avg
best_near = nearest
best_std = standdev
if best_val > valence_dist:
best_val = valence_dist
if best_aro > arousal_dist:
best_aro = arousal_dist
plot_all_va(all_val, all_aro, all_ids, valence, arousal)
print "BEST"
print 'Average distance: ' + str(best_avg)
print 'Nearest distance: ' + str(best_near)
print 'Std distance: ' + str(best_std)
print best_val
print best_aro