{"cells":[{"metadata":{},"cell_type":"markdown","source":"![63744251-480px.jpg](attachment:63744251-480px.jpg)","attachments":{"63744251-480px.jpg":{"image/jpeg":"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"}},"execution_count":null},{"metadata":{},"cell_type":"markdown","source":"# Overview\nLet's look at the \"secondary labels\" provided in train.csv. These secondary labels describe other birds also heard in the clip, apart from the target \"primary\" label. Hopefully this notebook can help us understand what these secondary labels are and how to handle them.\n\nTLDR: 202/264 species have overlap between secondary and primary labels. i.e. suppose some audio clip has label 'aldfly', representing the alder flycatcher. Some other audio for a different bird might have alder flycatcher as a secondary label - this occurs in 202 of the target species. See below for more details + implications.\n\nPS - I'm still kinda new here, so any thoughts/advice would be appreciated!","execution_count":null},{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport soundfile as sf\nimport librosa\nimport IPython\nimport matplotlib.pyplot as plt\nfrom plotly.subplots import make_subplots\nimport plotly.graph_objects as go\n\nimport warnings\nwarnings.filterwarnings('ignore')","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"df = pd.read_csv('/kaggle/input/birdsong-recognition/train.csv')\ndf['path'] = '/kaggle/input/birdsong-recognition/train_audio/'+df['ebird_code']+'/'+df['filename']","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df['secondary'] = df['secondary_labels'].str.replace(r\"\\[|\\]|\\'|\\\"\",\"\").str.split('\\,').apply(lambda x: [i.strip() for i in x])\nsecondary_labels = [item.strip() for sublist in df['secondary'].tolist() for item in sublist if item != '']\nsecondary_labels = pd.Series(secondary_labels, name='secondary_labels')","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Let's look at summary statistics for the secondary labels","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"print(\"Describe\")\nprint(secondary_labels.describe())\n\nprint(\"\\n10 most commonly heard secondary birds\")\nprint(secondary_labels.groupby(by=secondary_labels).count().nlargest(10))\n\nprint(\"\\n10 least commonly heard secondary birds\")\nprint(secondary_labels.groupby(by=secondary_labels).count().nsmallest(10))\n\nsecondary_labels.groupby(by=secondary_labels).count().hist(bins=10);","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"First, we notice that there are A LOT of secondary labels - 21259 of them. Amongst those labels, there is quite an imbalance here - some birds appear quite often as secondary labels, but a large number of birds only appear once. Next, we see how many of these secondary labels are also \"primary\" labels in the dataset","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"species = df['species'].unique()\nsecondary_species = [arr[1] for arr in secondary_labels.str.split('_').tolist()]\nintersection = [s for s in species if s in secondary_species] ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"len(intersection)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"There are 202 species which are in both the train set and are secondary labels! WOW. Keep in mind there are only 264 species we are tasked with predicting! Let's see how many additional secondary labels there are which also belong to species which appear as targets.","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"def count_intersection(species, arr):\n    count = 0\n    for s in species:\n        if s != '' and s.split(\"_\")[1] in arr:\n            count +=1\n    return count","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"additional_examples = df[df['secondary'].apply(lambda x: count_intersection(x, intersection) > 0)]['secondary'].tolist()\nadditional_examples = [s for sublist in additional_examples for s in sublist if s.split(\"_\")[1] in intersection]\nadditional_examples = pd.Series(additional_examples)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print(\"Count of secondary labels within examples that are also primary targets\")\nprint(additional_examples.describe())\n\nprint(\"\\n10 most common additional examples\")\nprint(additional_examples.groupby(by=additional_examples).count().nlargest(10))\n\nprint(\"\\n10 least common additional examples\")\nprint(additional_examples.groupby(by=additional_examples).count().nsmallest(10))\n\nadditional_examples.groupby(by=additional_examples).count().hist(bins=10);","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"So there are 13786 secondary labels which also belong to primary targets. In other words, we have 13786 additional unlabeled examples which we could train on, hidden somewhere within the audio we already have... You'll also notice that of the top 10 secondary labels, only one of them, the white-winged dove, is not a target","execution_count":null},{"metadata":{},"cell_type":"markdown","source":"# Let's look at the red-winged blackbird in more detail\nFirst, we look at what other birds the red-winged blackbird is commonly featured with.","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"def filter_secondary(arr, species):\n    for bird in arr:\n        if bird != '' and bird.split(\"_\")[1] == species:\n            return True\n    return False","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"rewbla = df[df['secondary'].apply(lambda x: filter_secondary(x, 'Red-winged Blackbird'))]\nrewbla['ebird_code'].describe()\nrewbla['ebird_code'].groupby(by=rewbla['ebird_code']).count().nlargest(10)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"It looks like the red-winged blackbird and Wilson's snipe commonly are heard together. Let's play one of the overlapping clips and see if we can hear the red-winged blackbird within it. First, this is what a red winged blackbird sounds like","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"rewbla_audio, sr = librosa.load('../input/birdsong-recognition/train_audio/rewbla/XC135672.mp3', sr=32000);\nIPython.display.Audio(rewbla_audio, rate=sr)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Compare that to a snippet with a label of Wilson's Snipe below - notice that faintly, around the 1-2 second mark you can hear the sound from the red-winged-blackbird.","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"wilsni1_audio, sr = librosa.load('../input/birdsong-recognition/train_audio/wilsni1/XC185863.mp3', sr=32000);\nwilsni1_audio = wilsni1_audio[17*sr:22*sr]\nIPython.display.Audio(wilsni1_audio, rate=sr)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Let's visualize the mel spectrogram side by side and see if we notice anything.","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"melspectrogram_parameters = {\n    \"n_mels\": 128,\n    \"fmin\": 20,\n    \"fmax\": 16000\n}\nrewbla_melspec = librosa.feature.melspectrogram(rewbla_audio, sr=32000, **melspectrogram_parameters)\nrewbla_melspec = librosa.power_to_db(rewbla_melspec).astype(np.float32)\n\nwilsni1_melspec = librosa.feature.melspectrogram(wilsni1_audio, sr=32000, **melspectrogram_parameters)\nwilsni1_melspec = librosa.power_to_db(wilsni1_melspec).astype(np.float32)\n\nfig=plt.figure(figsize=(16, 8))\nfig.add_subplot(1, 2, 1).set_title(\"Red-winged Blackbird\")\nplt.imshow(rewbla_melspec)\nfig.add_subplot(1, 2, 2).set_title(\"Wilson's Snipe\")\nplt.imshow(wilsni1_melspec)\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"It's difficult to tell the presence of the red-winged blackbird visually - around t=50-100, there are some shadows that look similar to the red-winged blackbird's call","execution_count":null},{"metadata":{},"cell_type":"markdown","source":"Next, let's look at geographic correlation - where are the red-winged blackbird recording's made, compared to recordings for birds it co-occurs with?","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"rewbla=rewbla[rewbla.latitude!='Not specified']\nfig = go.Figure()\nfig.add_trace(go.Scattergeo(\n        lon = rewbla['longitude'],\n        lat = rewbla['latitude'],\n        text = rewbla['ebird_code'],\n        name='Co-occuring Locations',\n        marker = dict(\n            line_color='rgb(40,40,40)',\n            line_width=0.5,\n            sizemode = 'area',\n        )))\n\n\nfig.add_trace(go.Scattergeo(\n        lon = df[df['ebird_code'] == 'rewbla']['longitude'],\n        lat = df[df['ebird_code'] == 'rewbla']['latitude'],\n        text = df[df['ebird_code'] == 'rewbla']['ebird_code'],\n        name='Red-winged Blackbird Locations',\n        marker = dict(\n            line_color='rgb(40,40,40)',\n            line_width=0.5,\n            sizemode = 'area',\n        )))\n\nfig.update_layout(\n        title_text = 'Geographical Correlation between Red-winged Blackbird and co-occuring species',\n        showlegend = True,\n        geo = dict(\n            landcolor = 'rgb(217, 217, 217)',\n            scope=\"north america\",\n        )\n    )\n\nfig.show()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Now what?\n\nLet's take a minute to debrief. We are trying to predict 264 species. 202/264 of those species have additional occurences in the train set as secondary labels. We now have three main choices as I see it.\n\n* Keep all secondary labels separate and still only predict primary targets\n     * Here, we wonder if this might cause our model too much confusion. It could identify a bird call correctly (since it is present, as a secondary label), but loss would only be computed against the primary labels.\n* Treat secondary labels as primary labels when predicting each clip\n     * This could be tricky. What we want to know is, within a given clip of train audio, how often does each secondary label appear? IF this is high, we could use the \"secondary label\" as a primary label for that clip, since it occurs frequently enough we're likely to catch it within some sample. If it's frequency is low, however, and the clip is long, then if we take a random sample from the clip, chances are it won't contain the secondary label - thus, it wouldn't be good to use it as a prediction target.\n* Include secondary labels but give secondary labels a different weight for target prediction\n    * This seems like a good option - it is a sort of combination between the first two, and helps give the model some recognition for the hard work it's doing predicting those secondary labels. Of course, we have the same concern as in option 2, so we still need to think carefully\n    \nOne last thing to think about is the test set we are scored against. Will a label that is considered a \"secondary label\" in the train audio  be treated as more of a \"primary\" label in the test audio? My hunch is yes, given the example_test_audio - there are many bird calls which appear within the sample 5 second interval in the test example, suggesting some of these \"secondary\" labels will be required to be predicted.","execution_count":null},{"metadata":{},"cell_type":"markdown","source":"# To be continued\nFor next steps, we may want to figure out the frequency of secondary labels within audio samples which have a different primary target. This can help us decide between the three options above.\n\nIn the meantime, below is a python dict which contains secondary ebird codes to experiment around with! It is indexed by file name, for example 'XC134874.mp3'","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"ebird_dict = {}\nfor bird in intersection:\n    ebird_dict[bird] = df[df['species'] == bird]['ebird_code'].iloc[0]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"secondary_dict = {}\nfor index, row in df.iterrows():\n    s = [ebird_dict[bird.split(\"_\")[1]] for bird in row['secondary'] if bird != \"\" and bird.split(\"_\")[1] in ebird_dict]\n    secondary_dict[row['filename']] = s","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import pickle\nwith open('secondary_ebird.pkl', 'wb') as f:\n    pickle.dump(secondary_dict, f)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# to load it, use the following snippet\n# secondary_dict = {}\n# with open(PATH, 'rb') as f:\n#     secondary_dict = pickle.load(f)","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat":4,"nbformat_minor":4}