{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import numpy, scipy, matplotlib.pyplot as plt, sklearn, urllib, stanford_mir, IPython.display\n", "%matplotlib inline\n", "plt.rcParams['figure.figsize'] = (14, 5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[← Back to Index](index.html)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Principal Component Analysis " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Download a file:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "filename = '125_bounce.wav'" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "('125_bounce.wav', )" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "url = 'http://audio.musicinformationretrieval.com/'\n", "urllib.urlretrieve(url + filename, filename=filename)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Load a file:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "x, fs = librosa.load(filename)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Listen to the signal:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "IPython.display.Audio(x, rate=fs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Compute some features:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "X = librosa.feature.mfcc(x, sr=fs)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(20, 331)\n" ] } ], "source": [ "print X.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Scale the features to have zero mean and unit variance:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ "X = sklearn.preprocessing.scale(X)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "-4.2933095816320253e-18" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X.mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create a PCA model object." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "model = sklearn.decomposition.PCA(n_components=2, whiten=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Apply PCA to the scaled features:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "PCA(copy=True, n_components=2, whiten=True)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.fit(X.T)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true }, "outputs": [], "source": [ "Y = model.transform(X.T)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(331, 2)\n" ] } ], "source": [ "print Y.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's see how many principal components were returned:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(2, 20)" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.components_.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plot the two top principal components for each data point:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.scatter(Y[:,0], Y[:,1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[← Back to Index](index.html)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.6" } }, "nbformat": 4, "nbformat_minor": 0 }