|
@@ -19,6 +19,7 @@ am = AnnotationManager(project)
|
|
|
annotations = am.annotations[am.annotations['set'].isin(['vtc', 'zoo'])]
|
|
|
segments = am.get_collapsed_segments(annotations)
|
|
|
|
|
|
+# map VTC speakers to a two-class categorization
|
|
|
vtc_segments = segments.loc[segments['set'] == 'vtc']
|
|
|
vtc_segments['speaker_age'] = vtc_segments['speaker_type'].replace({
|
|
|
'MAL': 'Adult',
|
|
@@ -27,6 +28,7 @@ vtc_segments['speaker_age'] = vtc_segments['speaker_type'].replace({
|
|
|
'OCH': 'Youngster'
|
|
|
})
|
|
|
|
|
|
+# map Zooniverse-extracted speakers to the same two-class categorization
|
|
|
zoo_segments = segments.loc[segments['set'] == 'zoo']
|
|
|
zoo_segments['speaker_age'] = zoo_segments['speaker_age'].replace({
|
|
|
'Baby': 'Youngster',
|
|
@@ -34,6 +36,7 @@ zoo_segments['speaker_age'] = zoo_segments['speaker_age'].replace({
|
|
|
'Adolescent': 'Adult'
|
|
|
})
|
|
|
|
|
|
+# create matrices indicating if any of the classes is active at every 50 ms time step (unitizing)
|
|
|
vtc = segments_to_grid(
|
|
|
vtc_segments, 0, segments['segment_offset'].max(), 50, 'speaker_age', categories, none = True
|
|
|
)
|
|
@@ -41,13 +44,13 @@ zoo = segments_to_grid(
|
|
|
zoo_segments, 0, segments['segment_offset'].max(), 50, 'speaker_age', categories, none = True
|
|
|
)
|
|
|
|
|
|
+# keep only the units that have been classified on Zooniverse
|
|
|
vtc = vtc[zoo[:,-1] == 0][:,:-1]
|
|
|
zoo = zoo[zoo[:,-1] == 0][:,:-1]
|
|
|
|
|
|
+# compute and show confusion matrices
|
|
|
confusion_counts = conf_matrix(vtc, zoo)
|
|
|
|
|
|
-print(confusion_counts)
|
|
|
-
|
|
|
plt.rcParams.update({'font.size': 12})
|
|
|
plt.rc('xtick', labelsize = 10)
|
|
|
plt.rc('ytick', labelsize = 10)
|