Commit d50b58ce authored by Steve Tjoa's avatar Steve Tjoa

more knn; stanford_mir.get_features

parent 476892c0
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -8,6 +8,8 @@ ...@@ -8,6 +8,8 @@
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"%matplotlib inline\n",
"import seaborn\n",
"import numpy, scipy, matplotlib.pyplot as plt, sklearn, librosa, urllib, IPython.display, stanford_mir\n", "import numpy, scipy, matplotlib.pyplot as plt, sklearn, librosa, urllib, IPython.display, stanford_mir\n",
"plt.rcParams['figure.figsize'] = (14,5)" "plt.rcParams['figure.figsize'] = (14,5)"
] ]
...@@ -44,7 +46,7 @@ ...@@ -44,7 +46,7 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"Let's begin by loading some training data. We will use the following shortcut:" "Let's begin by loading some training data. We will use the following convenience function written for this workshop:"
] ]
}, },
{ {
...@@ -55,7 +57,14 @@ ...@@ -55,7 +57,14 @@
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"training_features, training_labels, scaler = stanford_mir.get_features(collection=\"drum_samples_train\")" "training_features, training_labels, scaler = stanford_mir.get_features(collection=\"drum_samples_train\", download=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This function returns three outputs: a list of training feature vectors, each containing zero crossing rate and spectral centroid; the ground truth labels of the training data; and a `scaler` object of type [`sklearn.preprocessing.MinMaxScaler`](http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MinMaxScaler.html). `scaler` simply scales every training feature vector such that the two features lie between -1 and 1."
] ]
}, },
{ {
...@@ -89,7 +98,7 @@ ...@@ -89,7 +98,7 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"Plot the training data:" "Show the training feature vectors."
] ]
}, },
{ {
...@@ -98,22 +107,67 @@ ...@@ -98,22 +107,67 @@
"metadata": { "metadata": {
"collapsed": false "collapsed": false
}, },
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[-0.56578947 0.24904773]\n",
" [-0.92105263 -0.63084085]\n",
" [-1. -1. ]\n",
" [-1. 0.32776615]\n",
" [-0.77631579 -0.55766282]\n",
" [-0.96052632 -0.69890723]\n",
" [-0.68421053 -0.63536403]\n",
" [-0.73684211 -0.1020908 ]\n",
" [-0.82894737 -0.38692787]\n",
" [-0.69736842 -0.53651433]\n",
" [ 0.53947368 0.898375 ]\n",
" [ 0.63157895 0.55248412]\n",
" [ 1. 0.99378472]\n",
" [ 0.93421053 1. ]\n",
" [ 0.85526316 0.87392178]\n",
" [ 0.89473684 0.9679766 ]\n",
" [ 0.23684211 0.86119292]\n",
" [ 0.97368421 0.79526439]\n",
" [ 0.40789474 0.38793571]\n",
" [ 0.88157895 0.8860086 ]]\n"
]
}
],
"source": [
"print training_features"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plot the training data:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [ "outputs": [
{ {
"data": { "data": {
"text/plain": [ "text/plain": [
"<matplotlib.text.Text at 0x10c5e4950>" "<matplotlib.text.Text at 0x10cf71890>"
] ]
}, },
"execution_count": 4, "execution_count": 5,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
}, },
{ {
"data": { "data": {
"image/png": "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\n", "image/png": "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\nRK5CYII=\n",
"text/plain": [ "text/plain": [
"<matplotlib.figure.Figure at 0x10c5dc750>" "<matplotlib.figure.Figure at 0x108ad7850>"
] ]
}, },
"metadata": {}, "metadata": {},
...@@ -147,17 +201,35 @@ ...@@ -147,17 +201,35 @@
"metadata": { "metadata": {
"collapsed": false "collapsed": false
}, },
"outputs": [],
"source": [
"test_features, test_labels, _ = stanford_mir.get_features(collection=\"drum_samples_test\", scaler=scaler, download=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's see how many test examples were loaded:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [ "outputs": [
{ {
"name": "stdout", "name": "stdout",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"Directory drum_samples_test already exists.\n" "(60, 2)\n"
] ]
} }
], ],
"source": [ "source": [
"test_features, test_labels, _ = stanford_mir.get_features(collection=\"drum_samples_test\", scaler=scaler)" "print test_features.shape"
] ]
}, },
{ {
...@@ -169,7 +241,7 @@ ...@@ -169,7 +241,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 7, "execution_count": 8,
"metadata": { "metadata": {
"collapsed": false "collapsed": false
}, },
...@@ -198,7 +270,7 @@ ...@@ -198,7 +270,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 18, "execution_count": 9,
"metadata": { "metadata": {
"collapsed": false "collapsed": false
}, },
...@@ -206,18 +278,18 @@ ...@@ -206,18 +278,18 @@
{ {
"data": { "data": {
"text/plain": [ "text/plain": [
"<matplotlib.text.Text at 0x1072c8210>" "<matplotlib.text.Text at 0x10d254e10>"
] ]
}, },
"execution_count": 18, "execution_count": 9,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
}, },
{ {
"data": { "data": {
"image/png": "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\nAHWLc4wAAH5lZmbqzTfflMvlqtNDKb/77jslJibqqaeeUt++fSVJL774onbs2KHXX3+9zu5THzp2\n7KhPP/3U97i4uFh33XWXnnzyScXGxlb7c3FxcVqzZo2uv/56I8oEANQQI0YAgEv68MMPtWLFCmVn\nZys8PFwlJSWaO3euPv/8c3k8Hj3wwAMaPHiwNmzYoJycHP3www+Ki4tTamqqpk+frhMnTqhRo0aa\nOHGievfuXem9165dq169evlCkSQ98MADat26tSoqKrR8+XLt3btX3377re655x716NFDs2bNUmFh\noZo2barp06frlltuUW5url5++WWFhIToJz/5iRYvXqy///3veuyxx1RaWqqQkBDNmDFDXbt29QWT\n3bt3609/+pP++c9/6tixY7rttts0e/ZsSdIzzzyjzZs3KyoqStHR0YqLi1NCQsIl/5z+8Y9/qLS0\nVM2bN5ckLVmyRLt27dIPP/ygqKgoLV26VBs2bNDf/vY3Pfjgg3rttdf01VdfKSMjQ263W1FRUXry\nySf1k5/8pG4bCACoEYIRAKBaJ0+e1KRJkzR//ny1bt1akvTCCy+oc+fOevrpp1VcXKyUlBR16dJF\nkvS3v/1Nf/jDHxQSEqIJEyYoJiZGaWlpOnbsmEaMGKGNGzeqZcuWvvf/9NNPK4UiSQoJCdGdd97p\ne1xeXq5NmzZJkhITEzVmzBj1799f+/bt04QJE/TOO+/oueee0+9//3u1aNFCv/3tb/XXv/5V7733\nnm6//Xalp6frz3/+s/bs2aOuXbtKkmw2myRp79692rRpk0JCQjRo0CClpKTo+PHj2rNnjzZt2qRT\np04pISFB/fr1q/LPJz4+XmfOnNHJkyd14403aubMmerSpYuOHj2qI0eOKCsrS5L0xBNPKDc3V6NH\nj5bL5dLKlSvVtGlTzZgxQytXrtS//Mu/6E9/+pNmzpypVatW1UHnAACXi2AEAKiSx+PRpEmT9B//\n8R+VgsEHH3yg06dPa/369ZKk0tJSffHFF7LZbOrUqZNvfc3u3bs1f/58SVLr1q3VtWtX7du3T3Fx\ncb73stls8ng81dZgs9l8YaakpETHjh1T//79JUldu3ZVs2bNdOTIEd1+++1KSUlRv3799Ktf/Uod\nO3bUqVOnNG7cOB08eFB9+/bVyJEjfe97fhb5z372MzVt2tRXY2FhoT744APdeeedatSoka666ir1\n799f1c0637hxo6SzUw3Xr1+vPn36SJLatm2rJ554QllZWTpy5Ij27t2rNm3aVPrZL7/8UseOHdOY\nMWN8z5WUlFT7ZwEAqF/sSgcAqNLSpUtVUVGhSZMmVXre6/Vq8eLF2rhxozZu3OibDidJdru90ut+\nzOPxXBSCOnfurP3791/0ukceeUQnT56UJDVu3Nj3fhe+p9frlcfj0fTp0/X888+refPmevzxx/Xm\nm2+qW7du2rRpk3r37q233367UgA57/x7//j9QkNDVVFRUe3voyppaWlq1aqVFi5cKEnav3+/7r//\nfknSoEGDqgxXHo9HrVu39v05btiwQa+99prfewEA6gfBCABwkZ07d2rdunV69tlnL9phrUePHnrj\njTcknZ06l5CQoG+//faiD/7du3fXunXrJEnHjh3TX/7yF/30pz+t9Jrk5GRt375d27dvl3Q2hCxf\nvlw//PCDWrZsWek9IyMj1bp1a23ZskXS2Wlw33//vW688Ub96le/UlRUlEaPHq27775bn3zyiZ55\n5hn993//t+Lj4zVz5kwdPHiwRr/3nj17avPmzSovL1dxcbG2b9/um3p3KVOnTtWGDRt06NAhffjh\nh+revbuSk5N14403aufOnb5Q2KhRI505c0bt2rVTYWGhPvzwQ0nS+vXr9dhjj9WoRgBA3WMqHQDg\nIitXrvRtrPBjKSkpeuSRR/Tkk0/qrrvuUkVFhR577DG1bt3a9wH/vBkzZmjWrFlav369bDab5s+f\nr6uvvrrSa66++mq99NJLWrhwoRYvXiyPx6N///d/17JlyyTpokCyaNEizZ49W88//7waN26spUuX\nKjw8XOPHj9d9990nu92uZs2aKSMjwzcVMCcnRyEhIZozZ47vPc//dyGbzaY+ffroL3/5ixISEtSs\nWTO1atWq0kjYj1/7YzfddJMSEhK0cOFC/ed//qfGjRun+Ph4RUVFKTY2VsePH5ck9e3bVw888IBe\neeUVPffcc5o/f75Onz4th8OhjIyMGnQHAFAf2K4bAIAf2bt3r7788kvFx8ervLxcTqdTCxYsUPv2\n7QNdGgCgHhGMAAD4kcLCQk2aNEkFBQXyeDwaOnSo7rvvvkCXBQCoZwQjAAAAAJbH5gsAAAAALI9g\nBAAAAMDyCEYAAAAALI9gBAAAAMDyCEYAAAAALO//AKCpI4eMN7XcAAAAAElFTkSuQmCC\n", "image/png": "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\n3XnnnVqxYoVWrFihI0eOqHv37kpNTdXkyZO1f/9+hYWFacyYMWcFh8WLF+v3v/+9JxxJUlpamlq3\nbq3y8nK9/PLLys3N1U8//aQhQ4bolltu0dNPP63CwkJdcMEFmjx5sq699lq99957evXVVxUaGqrL\nLrtMc+bM0eHDhzV+/HiVlpYqJCRETz31lK677jpPQPn3v/+tf/7znyosLNT333+vLl26aOrUqZKk\n5557Th9++KGio6MVGxurHj16qF+/fuf8PRUUFOjYsWNq3ry5JOn555/X5s2bVVhYqOjoaL300kta\nvny5fv75Z40cOVJvvvmm8vLyNGvWLB07dkzR0dGaMWOGLr300nruIACgpghIAIBzOnTokMaNG6eM\njAxddtllkqSXX35ZHTt21KxZs+RyuZScnKzrrrtOknTgwAG9//77stlsevzxx9W5c2cNGzZM33//\nvQYPHqzs7GzFxMR43n/nzp2Kj4+vdM+QkBDdeeednuMTJ05o9erVkqSkpCQ9+OCD6tmzp7Zt26bR\no0fr/fff14svvqi3335bMTExevHFF/Xtt99q3bp16t69u4YPH64tW7Zo69atuu666ypNf8vNzdXf\n/vY32Ww29e7dW4MHD9YPP/ygzz77TGvWrFFJSYn69++vHj16nPW7MQxD/fv318mTJ3Xo0CHFxcXp\n6aef1nXXXafvvvtOe/bs0dKlSyVJ6enpWr16tUaOHKklS5ZowYIFuuCCC/T0009r/vz5uvjii/U/\n//M/euqpp/Taa6/VT/MAALVGQAIAVMswDI0fP1533323EhISPOf/93//V8ePH9eyZcskSceOHdM3\n33wjSbrmmms8AWTz5s2aOXOmJKl169a64YYbtG3bNnXv3t3zXjabTd5me19//fWSpKNHj+q7775T\nz549PeejoqK0d+9eJSQkKDk5WT169NAdd9yh9u3b6+jRo/rjH/+oHTt2KD4+XkOGDPH8uU777W9/\nqyZNmnhqLCws1KZNm9SnTx+FhoaqWbNmnvudyWazacWKFZKk119/Xe+++65uu+02SdLll1+u9PR0\nvf3229qzZ49yc3N1+eWXV/rd7t27V999950efvhhGYYhm82mkpKSc/4uAAC+xS52AIBqvfTSSyor\nK9PYsWMrna+oqNCcOXO0cuVKrVy5Um+99Za6dOkiSQoPD/e87szgU1FRofLy8krnOnbsqM8//7zS\nOcMwNGrUKBUUFFR6z4qKirNqPP2ekyZN0ksvvaSoqCg98cQTeu+999SpUyf97W9/U9euXbVmzRo9\n9NBDZ/38meupDMNQaGholfc6l/vvv1+xsbFyOp2SpO3bt2v48OEyDEO9e/dWz549z/p9lJeX6/LL\nL9eKFSu0cuVKLV++XIsWLarVfQEA9YuABACo0qZNm7Rs2TI9//zzCgmp/H8XnTt31ltvvSVJys/P\nV//+/fXTTz+d9R6dO3f2jDJ9//33+uyzz3TDDTdUes19992nf/zjH/rHP/7hOTdv3jwdPny40lQ8\nSbLb7WrdurXWrVsn6dT0uIMHD6pt27a64447FB0drZEjR+qee+7RF198oeeee04rV65Uv3799PTT\nT+uLL76o0Z/91ltv1YcffqiTJ0/K5XLp448/rvJ1ZwaeiRMnasWKFdq1a5c++eQT3Xzzzbrvvvt0\n5ZVXatOmTZ7QFRYWpvLycl155ZUqLCzUJ598IklatmyZnnjiiRrVCADwDabYAQCq9Oc//9mzAYMk\nzxSwQYMGadSoUZo2bZruvvtuVVRU6IknnlDr1q09H/RPmzx5sqZMmaJ3331XISEhysjI0EUXXVTp\nNRdddJEWLFig2bNn69lnn1VFRYWuvvpqzZs3r8q65syZoylTpujFF19UeHi45s2bp0aNGmn06NEa\nNmyYIiIi1Lx5c82aNUsVFRUaN26cVqxYodDQUE2fPl2Sqt2C+/T5bt266bPPPtOAAQPUvHlztWjR\nQhEREdW+/rS2bduqf//+cjqdyszM1KhRo9S/f39FR0erW7du+uGHHyRJ8fHxSktL06uvvqoXX3xR\nM2fO1IkTJ2S32zV79mxvrQEA+BDbfAMAcIbc3Fzt3btX/fr1U1lZme677z5lZmaqXbt2ZpcGAPAx\nAhIAAGcoLCzUuHHjlJ+fL8MwNGDAAA0bNszssgAAfkBAAgAAAAA3NmkAAAAAADcCEgAAAAC4EZAA\nAAAAwI2ABAAAAABuBCQAAAAAcPv/4dX2RmeXMlgAAAAASUVORK5CYII=\n",
"text/plain": [ "text/plain": [
"<matplotlib.figure.Figure at 0x10d007d50>" "<matplotlib.figure.Figure at 0x108ab9d50>"
] ]
}, },
"metadata": {}, "metadata": {},
...@@ -247,7 +319,7 @@ ...@@ -247,7 +319,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 19, "execution_count": 10,
"metadata": { "metadata": {
"collapsed": true "collapsed": true
}, },
...@@ -265,7 +337,7 @@ ...@@ -265,7 +337,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 20, "execution_count": 11,
"metadata": { "metadata": {
"collapsed": false "collapsed": false
}, },
...@@ -274,10 +346,11 @@ ...@@ -274,10 +346,11 @@
"data": { "data": {
"text/plain": [ "text/plain": [
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n", "KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_neighbors=1, p=2, weights='uniform')" " metric_params=None, n_jobs=1, n_neighbors=1, p=2,\n",
" weights='uniform')"
] ]
}, },
"execution_count": 20, "execution_count": 11,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
...@@ -295,7 +368,18 @@ ...@@ -295,7 +368,18 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 21, "execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"predicted_labels = model.predict(test_features)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": { "metadata": {
"collapsed": false "collapsed": false
}, },
...@@ -310,13 +394,60 @@ ...@@ -310,13 +394,60 @@
" 1., 1., 1., 1., 1., 1., 1., 1.])" " 1., 1., 1., 1., 1., 1., 1., 1.])"
] ]
}, },
"execution_count": 21, "execution_count": 13,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
], ],
"source": [ "source": [
"model.predict(test_features)" "predicted_labels"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Evaluating the model"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Compute the number of true positives, true negatives, false positives, and false negatives:"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"tp = sum((test_labels == 1) & (predicted_labels == 1))\n",
"tn = sum((test_labels == 0) & (predicted_labels == 0))\n",
"fp = sum((test_labels == 0) & (predicted_labels == 1))\n",
"fn = sum((test_labels == 1) & (predicted_labels == 0))"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"30 30 0 0\n"
]
}
],
"source": [
"print tp, tn, fp, fn"
] ]
}, },
{ {
...@@ -328,7 +459,7 @@ ...@@ -328,7 +459,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 22, "execution_count": 16,
"metadata": { "metadata": {
"collapsed": false "collapsed": false
}, },
...@@ -339,7 +470,7 @@ ...@@ -339,7 +470,7 @@
"1.0" "1.0"
] ]
}, },
"execution_count": 22, "execution_count": 16,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
...@@ -348,6 +479,178 @@ ...@@ -348,6 +479,178 @@
"model.score(test_features, test_labels)" "model.score(test_features, test_labels)"
] ]
}, },
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Compute the recall score, and verify it is correct:"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"1.0"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sklearn.metrics.recall_score(test_labels, predicted_labels)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.0\n"
]
}
],
"source": [
"recall = tp/float(tp+fn)\n",
"print recall"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Compute the precision score, and verify:"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"1.0"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sklearn.metrics.precision_score(test_labels, predicted_labels)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.0\n"
]
}
],
"source": [
"precision = tp/float(tp+fp)\n",
"print precision"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Compute the [F-measure](https://en.wikipedia.org/wiki/F1_score), and verify:"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"1.0"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sklearn.metrics.f1_score(test_labels, predicted_labels)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.0\n"
]
}
],
"source": [
"fmeasure = 2*recall*precision/float(recall+precision)\n",
"print fmeasure"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Bonus"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Substitute the k-NN model with a different classifer, and repeat the above classification. For example:"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"#model = sklearn.svm.SVC()"
]
},
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
...@@ -372,7 +675,7 @@ ...@@ -372,7 +675,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython2", "pygments_lexer": "ipython2",
"version": "2.7.6" "version": "2.7.10"
} }
}, },
"nbformat": 4, "nbformat": 4,
......
...@@ -17,9 +17,11 @@ def extract_features(signal, features): ...@@ -17,9 +17,11 @@ def extract_features(signal, features):
def get_features(collection='drum_samples_train', def get_features(collection='drum_samples_train',
features=('zero_crossing_rate', 'spectral_centroid'), features=('zero_crossing_rate', 'spectral_centroid'),
scaler=None): scaler=None,
download=True):
if collection == 'drum_samples_train': if collection == 'drum_samples_train':
kick_filepaths, snare_filepaths = download_samples('drum_samples_train') kick_filepaths, snare_filepaths = download_samples('drum_samples_train', download=download)
kick_signals = [ kick_signals = [
librosa.load(p)[0] for p in kick_filepaths librosa.load(p)[0] for p in kick_filepaths
] ]
...@@ -42,7 +44,7 @@ def get_features(collection='drum_samples_train', ...@@ -42,7 +44,7 @@ def get_features(collection='drum_samples_train',
return training_features, training_labels, scaler return training_features, training_labels, scaler
elif collection == 'drum_samples_test': elif collection == 'drum_samples_test':
kick_filepaths, snare_filepaths = download_samples('drum_samples_test') kick_filepaths, snare_filepaths = download_samples('drum_samples_test', download=download)
kick_signals = [ kick_signals = [
librosa.load(p)[0] for p in kick_filepaths librosa.load(p)[0] for p in kick_filepaths
] ]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment