{
 "metadata": {
  "name": "",
  "signature": "sha256:239df80fdec7a2dbfadd8613c4fc2fbf99b75df073d1122aced76d0e43b738b1"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "K-Means Clustering"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from sklearn import preprocessing\n",
      "from sklearn.cluster import KMeans, AffinityPropagation\n",
      "import essentia.standard as ess"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 6
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Sometimes, an unsupervised learning technique is preferred.  Perhaps you do not have access to adequate training data, or perhaps the training data's labels are not completely clear.  Maybe you just want to quickly sort real-world, unseen, data into groups based on its feature similarity.\n",
      "\n",
      "In such cases, clustering is a great option!"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Let's try clustering with a familiar bunch of audio files and code.\n",
      "\n",
      "Download `simpleLoop.wav`, and play it."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from urllib import urlretrieve\n",
      "urlretrieve('https://ccrma.stanford.edu/workshops/mir2014/audio/simpleLoop.wav', filename='simpleLoop.wav')\n",
      "\n",
      "from IPython.display import Audio\n",
      "Audio('simpleLoop.wav')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "html": [
        "\n",
        "                <audio controls=\"controls\" >\n",
        "                    <source src=\"data:audio/x-wav;base64,[encoded data, 352860 characters]\" type=\"audio/x-wav\" />\n",
        "                    Your browser does not support the audio element.\n",
        "                </audio>\n",
        "              "
       ],
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 7,
       "text": [
        "<IPython.lib.display.Audio at 0x10cc722d0>"
       ]
      }
     ],
     "prompt_number": 7
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Load the audio file into an array."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "simple_loop = ess.MonoLoader(filename='simpleLoop.wav')()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 8
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Feature Extraction"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Let's compute the zero crossing rate and energy for each frame in the audio signal."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "zcr = ess.ZeroCrossingRate()\n",
      "energy = ess.Energy()\n",
      "\n",
      "def compute_features(frame):\n",
      "    return array( [zcr(frame), energy(frame)] )"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 9
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "features = array([compute_features(frame) for frame in ess.FrameGenerator(simple_loop, frameSize=1024, hopSize=500)])\n",
      "print features.shape"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "(266, 2)\n"
       ]
      }
     ],
     "prompt_number": 10
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "plot(simple_loop)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 11,
       "text": [
        "[<matplotlib.lines.Line2D at 0x10a285d10>]"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nYII=\n",
       "text": [
        "<matplotlib.figure.Figure at 0x1141bdb10>"
       ]
      }
     ],
     "prompt_number": 11
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Plot the zero crossing rate:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "plot(features[:,0])\n",
      "ylabel('Zero Crossing Rate')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 12,
       "text": [
        "<matplotlib.text.Text at 0x10a2575d0>"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nAxqSi07YGcHcAAAAAElFTkSuQmCC\n",
       "text": [
        "<matplotlib.figure.Figure at 0x11501c890>"
       ]
      }
     ],
     "prompt_number": 12
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Plot the energy:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "plot(features[:,1])\n",
      "ylabel('Energy')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 13,
       "text": [
        "<matplotlib.text.Text at 0x1141d2d50>"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\noxtxg8VuG2gAAAAASUVORK5CYII=\n",
       "text": [
        "<matplotlib.figure.Figure at 0x11502d8d0>"
       ]
      }
     ],
     "prompt_number": 13
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Feature Scaling"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Scale the features (using the scale function) from -1 to 1."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "min_max_scaler = preprocessing.MinMaxScaler(feature_range=(-1, 1))\n",
      "features_scaled = min_max_scaler.fit_transform(features)\n",
      "print features_scaled.shape\n",
      "print features_scaled.min(axis=0)\n",
      "print features_scaled.max(axis=0)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "(266, 2)\n",
        "[-1. -1.]\n",
        "[ 1.  1.]\n"
       ]
      }
     ],
     "prompt_number": 14
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Plot the features."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "scatter(features_scaled[:,0], features_scaled[:,1])\n",
      "xlabel('Zero Crossing Rate (scaled)')\n",
      "ylabel('Energy (scaled)')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 15,
       "text": [
        "<matplotlib.text.Text at 0x10a22c690>"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\n",
       "text": [
        "<matplotlib.figure.Figure at 0x10a288d10>"
       ]
      }
     ],
     "prompt_number": 15
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Using K-Means"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Time to cluster! Let's initialize the algorithm to find three clusters."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "model = KMeans(n_clusters=3)\n",
      "labels = model.fit_predict(features_scaled)\n",
      "features_scaled.shape\n",
      "print labels"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "[0 0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n",
        " 1 1 1 1 1 1 1 1 0 0 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n",
        " 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0\n",
        " 0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 2 2 2 2 2 2 2 2 2 2 2 2 1\n",
        " 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n",
        " 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n",
        " 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n",
        " 1 1 1 1 1 1 1]\n"
       ]
      }
     ],
     "prompt_number": 16
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Plot the results."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "scatter(features_scaled[labels==1,0], features_scaled[labels==1,1], c='r')\n",
      "scatter(features_scaled[labels==2,0], features_scaled[labels==2,1], c='y')\n",
      "scatter(features_scaled[labels==0,0], features_scaled[labels==0,1], c='k')\n",
      "xlabel('Zero Crossing Rate (scaled)')\n",
      "ylabel('Energy (scaled)')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 17,
       "text": [
        "<matplotlib.text.Text at 0x10b0aa3d0>"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\n",
       "text": [
        "<matplotlib.figure.Figure at 0x10a258090>"
       ]
      }
     ],
     "prompt_number": 17
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Affinity Propagation"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "In scikit-learn, other clustering algorithms such as *affinity propagation* can cluster without defining the number of clusters beforehand."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from urllib import urlretrieve\n",
      "url = 'https://ccrma.stanford.edu/workshops/mir2014/audio/CongaGroove-mono.wav'\n",
      "urlretrieve(url, filename='congagroove.wav')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 18,
       "text": [
        "('congagroove.wav', <httplib.HTTPMessage instance at 0x10b043440>)"
       ]
      }
     ],
     "prompt_number": 18
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from IPython.display import Audio\n",
      "Audio('congagroove.wav')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "html": [
        "\n",
        "                <audio controls=\"controls\" >\n",
        "                    <source src=\"data:audio/x-wav;base64,[encoded data, 513192 characters]\" type=\"audio/x-wav\" />\n",
        "                    Your browser does not support the audio element.\n",
        "                </audio>\n",
        "              "
       ],
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 19,
       "text": [
        "<IPython.lib.display.Audio at 0x10a214e90>"
       ]
      }
     ],
     "prompt_number": 19
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "fs = 44100\n",
      "loader = ess.MonoLoader(filename='congagroove.wav')\n",
      "audio = loader()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 20
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "get_onsets = ess.OnsetRate()\n",
      "onset_times, onset_rate = get_onsets(audio)\n",
      "print onset_times"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "[ 0.01160998  0.12770975  0.26702946  0.39473924  0.53405893  0.67337871\n",
        "  0.96362811  1.07972789  1.31192744  1.36997736  1.48607707  1.64861679\n",
        "  1.86920631  2.00852609  2.15945578  2.29877543  2.43809533  2.56580496\n",
        "  2.70512462  2.84444451  3.07664394  3.23918366  3.52943301  3.6803627\n",
        "  3.8196826   3.97061229  4.07510185  4.21442175]\n"
       ]
      }
     ],
     "prompt_number": 21
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "onset_samples = [int(fs*i) for i in onset_times]\n",
      "print onset_samples"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "[511, 5631, 11775, 17408, 23551, 29696, 42495, 47615, 57856, 60416, 65535, 72704, 82431, 88576, 95231, 101375, 107520, 113151, 119295, 125440, 135679, 142847, 155647, 162303, 168448, 175104, 179711, 185855]\n"
       ]
      }
     ],
     "prompt_number": 22
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "frame_sz = int(0.200*fs)\n",
      "segments = array([audio[i:i+frame_sz] for i in onset_samples])"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 23
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "features = array([compute_features(segment) for segment in segments])\n",
      "print features.shape\n",
      "\n",
      "min_max_scaler = preprocessing.MinMaxScaler(feature_range=(-1, 1))\n",
      "features_scaled = min_max_scaler.fit_transform(features)\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "(28, 2)\n"
       ]
      }
     ],
     "prompt_number": 24
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "#model = KMeans(n_clusters=3)\n",
      "model = AffinityPropagation(damping=0.5)\n",
      "labels = model.fit_predict(features_scaled)\n",
      "features_scaled.shape\n",
      "print labels"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "[2 0 0 0 0 0 0 0 3 5 1 2 5 5 2 2 0 0 0 2 3 0 4 5 0 5 5 2]\n"
       ]
      }
     ],
     "prompt_number": 25
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "scatter(features_scaled[labels==0,0], features_scaled[labels==0,1], c='k')\n",
      "scatter(features_scaled[labels==1,0], features_scaled[labels==1,1], c='r')\n",
      "scatter(features_scaled[labels==2,0], features_scaled[labels==2,1], c='y')\n",
      "scatter(features_scaled[labels==3,0], features_scaled[labels==3,1], c='b')\n",
      "scatter(features_scaled[labels==4,0], features_scaled[labels==4,1], c='g')\n",
      "scatter(features_scaled[labels==5,0], features_scaled[labels==5,1], c='m')\n",
      "xlabel('Zero Crossing Rate (scaled)')\n",
      "ylabel('Energy (scaled)')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 26,
       "text": [
        "<matplotlib.text.Text at 0x10b0562d0>"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nAABJRU5ErkJggg==\n",
       "text": [
        "<matplotlib.figure.Figure at 0x10aaf2090>"
       ]
      }
     ],
     "prompt_number": 26
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "onsets_marker = ess.AudioOnsetsMarker(onsets=onset_times[labels==0], type='beep')\n",
      "with_beeps = onsets_marker(audio)\n",
      "Audio(data=with_beeps, rate=fs)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "html": [
        "\n",
        "                <audio controls=\"controls\" >\n",
        "                    <source src=\"data:audio/wav;base64,[encoded data, 513192 characters]\" type=\"audio/wav\" />\n",
        "                    Your browser does not support the audio element.\n",
        "                </audio>\n",
        "              "
       ],
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 28,
       "text": [
        "<IPython.lib.display.Audio at 0x1150fe610>"
       ]
      }
     ],
     "prompt_number": 28
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [],
     "language": "python",
     "metadata": {},
     "outputs": []
    }
   ],
   "metadata": {}
  }
 ]
}