{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import sys\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport os\nimport tensorflow as tf\nimport librosa\nimport keras\nimport matplotlib.pyplot as plt\nimport scipy.io\nfrom scipy.fftpack import rfft\nfrom sklearn.ensemble import RandomForestClassifier\nfrom sklearn.preprocessing import MultiLabelBinarizer\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.metrics import confusion_matrix, accuracy_score\nfrom tqdm import tqdm, tqdm_notebook; tqdm.pandas() # Progress bar\nprint(os.listdir(\"../input\"))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"bad_clips = [\"f76181c4.wav\", \"77b925c2.wav\", \"6a1f682a.wav\", \"c7db12aa.wav\", \"7752cc8a.wav\"]\ndf = pd.read_csv(\"../input/train_curated.csv\")\ntest = pd.read_csv(\"../input/sample_submission.csv\")\ndf = df[~df.fname.isin(bad_clips)]\ndf = df.groupby('labels').head(10)\n\n#y = df.labels.apply(lambda x: x.split(\",\"))\n#mlb = MultiLabelBinarizer()\n#yc = mlb.fit_transform(y)\nfor c in test.columns[1:]:\n    df[c] = df.labels.str.contains(c)\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"mels = []\nfor f in tqdm_notebook(df.fname):\n    #y, sr = librosa.load(\"../input/train_curated/\" + f, sr=None)\n    sr, y = scipy.io.wavfile.read(\"../input/train_curated/\" + f)\n    y = y.astype(float)\n    y, index = librosa.effects.trim(y)\n    y = librosa.util.fix_length(y, sr * 5)\n    mel = librosa.feature.mfcc(y=y, sr=sr)\n    mels.append(mel.T)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"mels[0].shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"x = np.vstack(mels)\nprint(x.shape)\n\ny = df.drop(['fname', 'labels'], axis=1)\ny = np.repeat(y.as_matrix(), len(mels[0]), axis=0)\nprint(x.shape, y.shape)\nxtrain, xtest, ytrain, ytest = train_test_split(x, y)\n\nmodel = RandomForestClassifier(verbose=0)\nmodel.fit(xtrain, ytrain)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.score(xtest,ytest)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"testmels = []\nfor f in tqdm_notebook(test.fname):\n    #y, sr = librosa.load(\"../input/test/\" + f, sr=None)\n    sr, y = scipy.io.wavfile.read(\"../input/test/\" + f)\n    y = y.astype(float)\n    y, index = librosa.effects.trim(y)\n    y = librosa.util.fix_length(y, sr)\n    mel = librosa.feature.mfcc(y=y, sr=sr)\n    testmels.append(mel.T)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"%%timeit\nfor i in range(len(test)):\n    preds = np.mean(model.predict(testmels[i]), axis=0)\n    test.iloc[i, 1:] = preds","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test.to_csv(\"submission.csv\", index=False)","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.4","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}