{ "metadata": { "name": "", "signature": "sha256:75b85376676c5998818b628f19bc7882d637e2112f7b5ddb731c76d1cbecd20d" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "# SWF Data Analysis\n", "In this notebook we're going to explore, understand, and classify shockwave flash files as being 'benign' or 'malicious'. We will explore the data, apply machine learning algorithms to the data, add new features, do more machine learning. Then we will test our classifier on a large amount of files to measure it's effectiveness.\n", "

\n", "** DISCLAIMER:** This exercise is for illustrative purposes and only uses about 500 samples which is too small for a generalizable model.\n", "
\n", "### References\n", "\n", "\n", "\n", "### Python Modules Used:\n", "\n", "\n", "\n", "### IPython Notebook for this talk: http://clicksecurity.github.io/data_hacking\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Imports and plot defaults" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import pandas as pd\n", "print 'pandas version is', pd.__version__\n", "import numpy as np\n", "print 'numpy version is', np.__version__\n", "import sklearn\n", "print 'scikit-learn version is', sklearn.__version__\n", "import matplotlib\n", "print 'matplotlib version is', matplotlib.__version__\n", "import matplotlib.pyplot as plt" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "pandas version is 0.13.0\n", "numpy version is 1.7.1\n", "scikit-learn version is 0.14.1\n", "matplotlib version is 1.4.1\n" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plotting defaults and helper functions" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "plt.rcParams['font.size'] = 18.0\n", "plt.rcParams['figure.figsize'] = 16.0, 5.0" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "def plot_cm(cm, labels):\n", " # Compute percentanges\n", " percent = (cm*100.0)/np.array(np.matrix(cm.sum(axis=1)).T)\n", " print 'Confusion Matrix Stats'\n", " for i, label_i in enumerate(labels):\n", " for j, label_j in enumerate(labels):\n", " print \"%s/%s: %.2f%% (%d/%d)\" % (label_i, label_j, (percent[i][j]), cm[i][j], cm[i].sum())\n", "\n", " # Show confusion matrix\n", " # Thanks to kermit666 from stackoverflow\n", " fig = plt.figure()\n", " ax = fig.add_subplot(111)\n", " ax.grid(b=False)\n", " cax = ax.matshow(percent, cmap='coolwarm',vmin=0,vmax=100)\n", " plt.title('')\n", " fig.colorbar(cax)\n", " ax.set_xticklabels([''] + labels)\n", " ax.set_yticklabels([''] + labels)\n", " plt.xlabel('Predicted')\n", " plt.ylabel('True')\n", " plt.show()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Function to extract out the features we are interested with from the json blob" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def extract_features(data):\n", " features = {}\n", " try:\n", " features['sha256'] = data['metadata']['sha256']\n", " features['size'] = data['metadata']['file_size']\n", " features['entropy'] = data['metadata']['entropy']\n", " features['version'] = data['characteristics']['swf']['swf metadata']['version']\n", " features['frame count'] = data['characteristics']['swf']['swf metadata']['framecount']\n", " features['frame rate'] = data['characteristics']['swf']['swf metadata']['framerate']\n", " \n", " x_min = data['characteristics']['swf']['swf metadata']['xmin']\n", " x_max = data['characteristics']['swf']['swf metadata']['xmax']\n", " y_min = data['characteristics']['swf']['swf metadata']['ymin']\n", " y_max = data['characteristics']['swf']['swf metadata']['ymax']\n", " x_length = x_max - x_min\n", " y_length = y_max - y_min\n", " features['swf area'] = x_length * y_length\n", " features['swf perimeter'] = 2*(x_length+y_length)\n", " \n", " features['tag count'] = 0\n", " for tag_info in data['characteristics']['swf']['tag types']:\n", " features[tag_info['tag name']] = 1\n", " features['tag count'] += tag_info['count']\n", "\n", " abc_info = {}\n", " for tag_info in data['verbose']['swf']['tags']:\n", " if 'DoABC' in tag_info or 'DoABCDefine' in tag_info:\n", " key = 'DoABC'\n", " if 'DoABCDefine' in tag_info:\n", " key = 'DoABCDefine'\n", " \n", " if 'abc bytecodename' not in features:\n", " abc_info['abc bytecodename'] = []\n", " try:\n", " abc_info['abc bytecodename'].append(tag_info[key]['bytecodename'])\n", " except KeyError:\n", " abc_info['abc bytecodename'].append('DoABCDefine')\n", " \n", " try:\n", " abc_info['abc flag'] = tag_info[key]['flag']\n", " except KeyError:\n", " abc_info['abc flag'] = 0\n", " \n", " if 'abc strings' not in features:\n", " abc_info['abc strings'] = []\n", " if 'abc string count' not in features:\n", " abc_info['abc string count'] = 0\n", " \n", " abc_info['abc strings'].extend(tag_info[key]['abc']['strings'])\n", "\n", " if abc_info:\n", " if abc_info['abc bytecodename'][0] == '':\n", " features['first abc bytecode name'] = 1\n", " elif abc_info['abc bytecodename'][0] == 'DoABCDefine':\n", " features['first abc bytecode name'] = 2\n", " elif abc_info['abc bytecodename'][0] == 'frame1':\n", " features['first abc bytecode name'] = 3\n", " else:\n", " features['first abc bytecode name'] = 4\n", " \n", " features['abc bytecode name'] = abc_info['abc bytecodename']\n", " features['bytecode name count'] = len(abc_info['abc bytecodename'])\n", " features['unique bytecode name count'] = len(set(abc_info['abc bytecodename']))\n", " features['abc strings'] = abc_info['abc strings']\n", " features['abc string count'] = len(features['abc strings'])\n", " \n", " features['long hex string'] = 0\n", " for s in features['abc strings']:\n", " if len(s) > 100:\n", " try:\n", " s.decode('hex')\n", " features['long hex string'] = 1\n", " break\n", " except:\n", " pass\n", " try:\n", " features['abc string m/m ratio'] = float(data['verbose']['swf']['SWF String Statistical Analysis']['ActionScript String Length Mean to Median Ratio'])\n", " except KeyError as k:\n", " features['abc string m/m ratio'] = 0.0 \n", "\n", " except KeyError as ke:\n", " print 'ERROR:', ke, data['metadata']['sha256']\n", " return features" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "def load_files(file_list):\n", " import json\n", " features_list = []\n", " for filename in file_list:\n", " with open(filename,'rb') as f:\n", " features = extract_features(json.loads(f.read()))\n", " features_list.append(features)\n", " return features_list" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "# Good files\n", "import glob\n", "good_list = glob.glob('data/clean/*.results')\n", "good_features = load_files(good_list)\n", "print \"Files:\", len(good_list)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Files: 500\n" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "####The set of bad files came from Contagio and VirusTotal" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Bad files\n", "bad_list = glob.glob('data/malicious/*.results')\n", "bad_features = load_files(bad_list)\n", "print \"Files:\", len(bad_list)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Files: 620\n" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "df_good = pd.DataFrame.from_records(good_features)\n", "df_good.fillna(0, inplace=True)\n", "df_good['label'] = 'benign'\n", "df_good.head()" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CSMTextSettingsDebugIDDefineBinaryDataDefineBitsDefineBitsJPEG2DefineBitsJPEG3DefineBitsLosslessDefineBitsLossless2DefineButtonDefineButton2DefineButtonSoundDefineEditTextDefineFontDefineFont2DefineFont3DefineFont4DefineFontAlignZonesDefineFontInfo2DefineFontNameDefineMorphShape
0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1...
1 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0...
2 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0...
3 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
\n", "

5 rows \u00d7 76 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 8, "text": [ " CSMTextSettings DebugID DefineBinaryData DefineBits DefineBitsJPEG2 \\\n", "0 0 0 0 0 0 \n", "1 0 0 0 1 1 \n", "2 0 0 0 0 1 \n", "3 0 1 1 0 0 \n", "4 0 0 0 0 0 \n", "\n", " DefineBitsJPEG3 DefineBitsLossless DefineBitsLossless2 DefineButton \\\n", "0 0 0 0 0 \n", "1 1 0 0 0 \n", "2 0 0 0 0 \n", "3 0 0 0 0 \n", "4 0 0 0 0 \n", "\n", " DefineButton2 DefineButtonSound DefineEditText DefineFont DefineFont2 \\\n", "0 1 0 0 0 1 \n", "1 1 0 0 0 0 \n", "2 0 0 0 0 1 \n", "3 0 0 0 0 0 \n", "4 0 0 0 0 0 \n", "\n", " DefineFont3 DefineFont4 DefineFontAlignZones DefineFontInfo2 \\\n", "0 0 0 0 0 \n", "1 0 0 0 0 \n", "2 0 0 0 0 \n", "3 0 0 0 0 \n", "4 0 0 0 0 \n", "\n", " DefineFontName DefineMorphShape \n", "0 0 1 ... \n", "1 0 0 ... \n", "2 0 0 ... \n", "3 0 0 ... \n", "4 0 0 ... \n", "\n", "[5 rows x 76 columns]" ] } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "df_bad = pd.DataFrame.from_records(bad_features)\n", "df_bad.fillna(0, inplace=True)\n", "df_bad['label'] = 'malicious'\n", "df_bad.head()" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CSMTextSettingsDebugIDDefineBinaryDataDefineBitsDefineBitsJPEG2DefineBitsJPEG3DefineBitsLosslessDefineBitsLossless2DefineButton2DefineButtonSoundDefineEditTextDefineFontDefineFont2DefineFont3DefineFont4DefineFontAlignZonesDefineFontInfoDefineFontNameDefineMorphShapeDefineScalingGrid
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
3 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
\n", "

5 rows \u00d7 73 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ " CSMTextSettings DebugID DefineBinaryData DefineBits DefineBitsJPEG2 \\\n", "0 0 0 0 0 0 \n", "1 0 0 0 0 0 \n", "2 0 0 0 0 0 \n", "3 0 0 0 1 0 \n", "4 0 0 0 0 0 \n", "\n", " DefineBitsJPEG3 DefineBitsLossless DefineBitsLossless2 DefineButton2 \\\n", "0 0 0 0 0 \n", "1 0 0 0 0 \n", "2 0 0 0 0 \n", "3 0 0 0 0 \n", "4 0 0 0 0 \n", "\n", " DefineButtonSound DefineEditText DefineFont DefineFont2 DefineFont3 \\\n", "0 0 0 0 0 0 \n", "1 0 0 0 0 0 \n", "2 0 0 0 0 0 \n", "3 0 0 0 0 0 \n", "4 0 0 0 0 0 \n", "\n", " DefineFont4 DefineFontAlignZones DefineFontInfo DefineFontName \\\n", "0 0 0 0 0 \n", "1 0 0 0 0 \n", "2 0 0 0 0 \n", "3 0 0 0 0 \n", "4 0 0 0 0 \n", "\n", " DefineMorphShape DefineScalingGrid \n", "0 0 0 ... \n", "1 0 0 ... \n", "2 0 0 ... \n", "3 0 0 ... \n", "4 0 0 ... \n", "\n", "[5 rows x 73 columns]" ] } ], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Let's explore the data. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "df = pd.concat([df_bad, df_good], ignore_index=True)\n", "df.fillna(0, inplace=True)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Let's start to explore the data, first with just the version numbers." ] }, { "cell_type": "code", "collapsed": false, "input": [ "df.groupby(['label', 'version'])['version'].count().unstack('label').fillna(0).plot(\n", " colormap='GnBu', kind='bar', stacked=True, grid=False)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 11, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n/OdMmjSpwXjfeOMNRowYQVVVFbfddhtHHXXUqnVXXnklZ5xxxlq3//Of/8w+++zD3Llz+dSnPgXA\nnDlz2G233bj//vt5+OGHV8XXHtnzKkmSJKlNGjFixKrEFXKX0PnVr37FZpttxjPPPMMjjzyyat2l\nl17KBx98wHnnnbda4gowcOBALrnkEiCXRBYzevTo1RLDjh07ruqpra2tLSne6667jkWLFvG1r31t\ntcQVYOTIkey5555r3b5Dhw5ce+21qxJXgG222YYTTjgBgOnTp5cUR1tl8ipJkiSpzYkIjj/++DXK\nu3btyte//nUAZsyYsap86tSpRMQaSWOdusT0iSeeKLr+0EMPXaOsblKmt956q6SY6+L55je/WXT9\nscceu9bt+/Tpw3bbbVdvHG+//XZJcbRVDhuWJEmS1CZtvfXWRcv79u0LwJtvvrmqbM6cOaSU2HHH\nHdfa5vz589coiwh69+69RvlGG20E5M5FLUVdPHXxFerTp89aty8WQ34cS5YsKSmOtsrkVZIkSVK7\nt2LFCgCOP/74Jl1/taqq5Qat1jchU0P7aMkY2iKTV0mSJElt0rx584r2pM6bNw+AXr16rSrr3bs3\nc+bM4Sc/+Um9l7BZ13r27MnLL7/Ma6+9ttq5unXq4lZx63fqLkmSJKlNSilxyy23rFG+cOFC7rnn\nHiKCAw44YFX5oYceSkqJO++8szXDXE1dPLfffnvR9bfddltrhtPmmLxKkiRJapMmTpy42gRLK1as\n4JxzzmHBggXstNNO7LfffqvWnX322Wy00UaMHTuW6667jpUrV67WVkqJJ598kgceeGCdxTts2DC6\ndOnCPffcw5QpU1Zbd9VVV/H444+vs323Bw0mrxExMCJujoi/RsT7EfFJRLwcERMjYo3+9qz+3RHx\nXkR8HBEzIuLAetquiojvR8TsiFgUEa9HxMUR0bUlDk6SJElS+zVs2DD2228/DjroII499lgGDhzI\nVVddxaabbsqNN964Wt0+ffowZcoUqqurGT58OFtvvTWHHHIIxx9/PIcccghbbrkle+65J9OmTVtj\nPymlFom3d+/eXHHFFQAcddRR7L333hx33HHsuuuujBo1ilGjRgGwwQYbtMj+2ptSznntBWwBTAb+\nD1gODAK+DRwXEbumlOYCRER/4DFgKXAR8CFwCnBfRByaUnqwoO0JwChgCvBL4HPAGcAuEXFQaql3\n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\nfzwA77zzDldeeeWqxBVg+PDhfPrTn2bevHm8/vrrq7X1la98ZY3EFWDYsGHsvffezJ49u1nJ67Jl\nyxg/fjwRwU033bRa4gq5odCHHXZYg+0sWrSIX//610QEEydOXC3mjTbaiN/85jd06NCByZMn88Yb\nbzQ5Xsg9hwD77bffaolrXbw1NTXNar+x7HmVJEmS1OZEBF/+8pfXKN9mm20A2G233dh0001XW1dV\nVcXWW2/Ne++9x9tvv02fPn1WW//OO+9w77338uKLL/LBBx+wfPlyAP7+978D8Morr/C5z32uSfE+\n9dRTvPfee3z2s59lv/32a1IbALNmzWLhwoUMGDCAvffee431/fv354ADDmD69Ok8/PDDHHfccU3e\n16677kqHDh2YNGkSAwcO5Mgjj6RHjx5Nbq+5TF4lSZIktUlbbbXVGmXdunWrd13++iVLlqxW/p//\n+Z/84Ac/WKM8IkgpAfDhhx82Oda6nt6BAwc2uQ2AN998E4B+/frVW6dfv35Mnz6dt956q1n76t+/\nP5dddhlnn302p59+Oqeffvqq5Pgb3/gGX/3qV5vVfmM5bFiSJElSu1M3G3EpnnzySUaOHElKiQkT\nJvDKK6+waNEiVq5cyYoVKzjmmGMAViWxTdHQREnltnLlyqLl3/ve95g7dy7XXHMNxxxzDIsXL+a3\nv/0t//Zv/8bBBx/MihUrWi1Gk1dJkiRJ67XJkycDcMYZZ3DmmWfSv39/OnfuvGr93/72t2bvo2/f\nvgC8/PLLzWqnrkd5zpw59dapW9erV69VZRtssAEAH3/8cdFt1nZ+7Oabb86wYcO45ZZbeOONN3j8\n8cfp168fDz74IJMmTWr0MTSVyaskSZKk9dp7770HFB9qPHv2bJ555plm72O33XZjs8024+WXX+bR\nRx9tVjtdu3bl1Vdf5bHHHltj/auvvsrDDz9Mhw4dVru0T10iO3v27DW2effdd3n66adLjuELX/gC\nw4YNA+C5555r7CE0mcmrJEmSpPXa9ttvD8CNN97IJ598sqp8wYIFfPvb326RobEdO3bk3HPPBeD4\n449fI+lbsWIF9957b4PtVFdX893vfheAkSNHsmDBglXrPvroI0477TRWrFjBUUcdtVoyXlNTQ0Qw\ndepUZs6cudo2w4cP56OPPlpjX9OmTWPq1KlrHP/SpUv505/+BLDGpFfrkhM2SZIkSVqvffvb32bC\nhAk8/fTT9O/fn3333Zdly5bx0EMP0atXL4444gjuvvvuZu/nBz/4Ac8//zw33HADu+yyC3vuuSd9\n+/Zl/vz5PPfcc8yfP7+kRPnCCy/kySef5OGHH2bAgAHU1NTQqVMnamtreffdd9lxxx2ZOHHiatv0\n7duXYcOGce211/LFL36R/fffnw022ICZM2fSo0cPDj/8cO65557Vtnn22Wc566yz2GSTTdh1113Z\nfPPN+fjjj/nzn//MggULGDhwIKeddlqzn5dSmbxKkiRJ7cDi2jHlDqEiNDQxUkSsUWeTTTbhySef\n5Pzzz1/V27jlllsyfPhwxowZw5lnnlm03WJtra0c4Le//S2HH344V199NU899RSzZs2iR48e7Ljj\njhx55JEltVNdXc0DDzzAxIkTuemmm3jwwQdZuXIl/fv358wzz+Sss86ia9eua2x31VVX0bt3b264\n4QZmzJhBjx49+OY3v8nPfvazosf4ta99jffff5+HH3541XDnT33qU/Tr149zzz2XU089ddXsza0h\nmjNjVmuLiNSW4pXUPkUE1TXjWqy9xbVjmjV7oSSpfcu/VIvUFjXmPZzVLZr5e86rJEmSJKniNZi8\nRsS2EfGTiHg8It6JiA8j4pmI+GFEdC2oOzYiVtZzO6tI21UR8f2ImB0RiyLi9Yi4uLBdSZIkSdL6\nrZRzXr8DfA+4B/gvYBkwGLgQODoi9kopLS7YZjSwoKBsVpG2JwCjgCnAL4HPAWcAu0TEQY4RliRJ\nkiRBacnrncDPUkr5cyf/JiJeAc4HhgETC7a5O6X0+toajYgdyCWuk1NKQ/PK5wKXA8cAt5YQnyRJ\nkiSpnWtw2HBKaVZB4lrnjmy5Q5F1EREbR8TakuNjs+WlBeXXAAuBExqKTZIkSZK0fmjOhE11V7z9\nR5F1zwLvA4si4tGIOKRInT2AFcDM/MKU0hLgL9l6SZIkSZKalrxGRAfgx+TOf70lb9U/gauBkcAQ\n4DygL/DHiDi5oJmewIKU0rIiu3gT6N5Az60kSZIkaT3R1OTwUmAv4LyU0it1hSmlywrq/SEirgOe\nByZExO9SSp9k67oCS+ppf3FenQ+bGKMkSZIkqZ1odPIaET8FRgBXp5Quaqh+Sum9iPg1MBbYB/hT\ntmoh0L2ezaqBlNVZzdixY1fdr6mpoaampvTgJUmSJEkVo7a2ltra2pLqRmOuRhMRY4ELgOtSSsMb\nsd3JwG+B41JKt2Vl95G75E7XwqHDEfEoMCCltHlBuVfPkVR2EUF1zbgWa29x7Rj8bJMk1Sci/J5Q\nm9aY93D/DCc4AAAgAElEQVRWN4qtK/mc17zE9frGJK6Zz2bL/MmdZgIdgD0L9lMN7Aw81ch9SJIk\nSZLaqZKGDUfEBeQS1xtTSt+pp04HoFtK6YOC8t7A6cAC4LG8VbcDPwRGA4/klZ8CdAFuLvEYJEmS\npHYtomhHlLReaTB5jYgR5M5XfR14MCIKr7/695TSA8BGwNyIuAuYTW7m4YHAcHITLx2bXQYHgJTS\n8xExERgZEZOBqcD2wCigNqV0C5IkSdJ6ziHDUk4pPa+7k5s8qTdwQ5H1tcAD5CZX+h25YcBHAN2A\n+cD9wC9SSsWGAY8G5gGnAodl9S8n18srSZIkSRLQyAmbys0JmyRVAidskiRJWjdaZMImSZIkSZLK\nxeRVkiRJklTxTF4lSZIkSRXP5FWSJEmSVPFMXiVJkiRJFc/kVZIkSZJU8UxeJUmSJEkVz+RVkiRJ\nklTxTF4lSZIkSRXP5FWSJEmSVPFMXiVJkiRJFc/kVZIkSZJU8UxeJUmSJEkVz+RVkiRJklTxTF4l\nSZIkSRXP5FWSJEmSVPFMXiVJkiRJFc/kVZIkSZJU8UxeJUmSJEkVz+RVkiRJklTxTF4lSZIkSRWv\nweQ1IraNiJ9ExOMR8U5EfBgRz0TEDyOia5H6AyPi7oh4LyI+jogZEXFgPW1XRcT3I2J2RCyKiNcj\n4uJi7UqSJEmS1l+l9Lx+BxgNvAKMA84GXgIuBB6LiOq6ihHRH3gM2BO4CDgH6AbcFxFfKtL2BOBX\nwPPASOBO4Azg3oiIJh6TJEmSJKmd6VhCnTuBn6WUPsor+01EvAKcDwwDJmbl44GNgd1SSs8CRMSN\nwAtZne3qGoiIHYBRwOSU0tC88rnA5cAxwK1NPC5JkiRJUjvSYM9rSmlWQeJa545suQNARGwIDAFq\n6xLXbPtPgGuBbSNij7ztj82Wlxa0ew2wEDihpCOQJEmSJLV7zZmwaats+Y9sOQjYAPhzkbpPZMvd\n88r2AFYAM/MrppSWAH/J1kuSJEmS1LTkNSI6AD8GlgG3ZMU9s+WbRTapK+uVV9YTWJBSWlZP/e4R\nUcqwZkmSJElSO9fUntdLgb2AC1JKr2RldTMELylSf3FBnbr7xerWV1+SJEmStJ5qdM9mRPwUGAFc\nnVK6KG/VwmzZuchm1QV16u53r2c31UAqqA/A2LFjV92vqamhpqamlLAlSZIkSRWmtraW2trakuo2\nKnmNiLHkZhi+LqV0esHqt7JlL9ZUV5Y/pPgtYLuI6FRk6HAvckOKlxc2lJ+8SpIkSZLarsIOyXHj\nxtVbt+Rhw1niegFwfUppeJEqz5EbBrxPkXV7Zcun8spmAh3IXRM2fz/VwM4FdSVJkiRJ67GSkteI\nuIBc4npjSuk7xeqklD4G7gVqImJQ3rbdgOHAyymlJ/M2uZ3c0ODRBU2dAnQBbi71ICRJkiRJ7VuD\nw4YjYgQwFngdeDAiCq+/+veU0gPZ/fOALwH3R8QE4CNyyeiWwGH5G6WUno+IicDIiJgMTAW2B0aR\nu1bsLUiSJEmSRGnnvO5Oroe0N3BDkfW1wAMAKaVXI2Jf4OfAueSu+zoLOCSlNK3ItqOBecCp5JLb\n+cDl5Hp5JUmSJEkCIFJK5Y6hZBGR2lK8ktqniKC6pv7JBBprce0Y/GyTJEnK/Z+VUopi65p6nVdJ\nkiRJklqNyaskSZIkqeKZvEqSJEmSKp7JqyRJkiSp4pm8SpIkSZIqnsmrJEmSJKnimbxKkiRJkiqe\nyaskSZIkqeKZvEqSJEmSKp7JqyRJkiSp4pm8SpIkSZIqnsmrJEmSJKnimbxKkiRJkiqeyaskSZIk\nqeKZvEqSJEmSKp7JqyRJkiSp4pm8SpIkSZIqnsmrJEmSJKnimbxKkiRJkiqeyaskSZIkqeKZvEqS\nJEmSKl6DyWtEnBcRd0bEnIhYGRFz11J3bFan2O2sIvWrIuL7ETE7IhZFxOsRcXFEdG3ugUnS+ioi\nWvwmSZJUbh1LqPMz4F3gaeBTQCphm9HAgoKyWUXqTQBGAVOAXwKfA84AdomIg1JKpexLklSgumZc\ni7W1uHZMi7UlSZLUVKUkr9uklOYBRMTzQCm9onenlF5fW4WI2IFc4jo5pTQ0r3wucDlwDHBrCfuS\nJEmSJLVzDQ4brktcGykiYuOIWFtyfGy2vLSg/BpgIXBCE/YrSZIkSWqH1tWETc8C7wOLIuLRiDik\nSJ09gBXAzPzClNIS4C/ZekmSJEmSWjx5/SdwNTASGAKcB/QF/hgRJxfU7QksSCktK9LOm0D3Bnpu\nJUmSJEnriRZNDlNKlxUU/SEirgOeByZExO9SSp9k67oCS+ppanFenQ9bMkZJkiRJUtuzzns2U0rv\nRcSvgbHAPsCfslULge71bFZNblbjhYUrxo4du+p+TU0NNTU1LResJEmSJKnV1NbWUltbW1Ld1hqW\n+1q23Cyv7C1gu4joVGTocC9yQ4qXFzaUn7xKkiRJktquwg7JcePqv9zfupqwqdBns+U/8spmAh2A\nPfMrRkQ1sDPwVOuEJkmSJEmqdC2WvEZEh4j4VJHy3sDpwALgsbxVt5MbGjy6YJNTgC7AzS0VmyRJ\nUlsRES1+k6T2oMFhwxFxIrkZgwF6AJ0i4kfZ43kppZuy+xsBcyPiLmA2uZmHBwLDyU28dGx2GRwA\nUkrPR8REYGRETAamAtsDo4DalNItzT46SZKkNqi6pv5hc421uHZMi7UlSeVUyjmv3wG+mN1P2fIn\n2bIWqEteFwK/IzcM+AigGzAfuB/4RUqp2DDg0cA84FTgsKz+5cAFjTgGSZIkSVI712DymlI6sJSG\nUkpLyQ35LVlKaSVwSXaTJEmSJKmo1pptWJLaFYfhSZIktS6TV0lqgkXL32+xtrp03KTF2pIkSWqv\nWutSOZIkSZIkNZk9r5Iqzrq4rENKqeFKklQhPDVBktZk8iqpInmZCEnrM09NkKQ1OWxYkiRJklTx\nTF4lSZIkSRXP5FWSJEmSVPFMXiVJkiRJFc/kVZIkSZJU8UxeJUmSJEkVz+RVkiRJklTxTF4lSZIk\nSRXP5FWSJEmSVPFMXiVJkiRJFc/kVZIkSZJU8UxeJUmSJEkVz+RVkiRJklTxTF4lSZIkSRXP5FWS\nJEmSVPEaTF4j4ryIuDMi5kTEyoiY20D9gRFxd0S8FxEfR8SMiDiwnrpVEfH9iJgdEYsi4vWIuDgi\nujb1gCRJkiRJ7U8pPa8/A2qAV4B/Aqm+ihHRH3gM2BO4CDgH6AbcFxFfKrLJBOBXwPPASOBO4Azg\n3oiIko9CkiRJktSudSyhzjYppXkAEfE8sLZe0fHAxsBuKaVns21uBF4AJgLb1VWMiB2AUcDklNLQ\nvPK5wOXAMcCtjTkYSZIkSVL71GDPa13i2pCI2BAYAtTWJa7Z9p8A1wLbRsQeeZscmy0vLWjqGmAh\ncEIp+5UkSZIktX8tOWHTIGAD4M9F1j2RLXfPK9sDWAHMzK+YUloC/CVbL0mSJElSiyavPbPlm0XW\n1ZX1Kqi/IKW0rJ763SOilGHNkiRJkqR2riWT17pzYZcUWbe4oE7d/WJ166svSZIkSVpPtWTyujBb\ndi6yrrqgTt39YnXr6qeC+pIkSZKk9VRLDst9K1v2KrKurix/SPFbwHYR0anI0OFe5IYULy9saOzY\nsavu19TUUFNT09R4JUmSJEllVFtbS21tbUl1WzJ5fY7cMOB9iqzbK1s+lVc2EziY3DVhH6krjIhq\nYGegtthO8pNXSZIkSVLbVdghOW7cuHrrttiw4ZTSx8C9QE1EDKorj4huwHDg5ZTSk3mb3E5uaPDo\ngqZOAboAN7dUbFJri4gWv0mSJEnrswZ7XiPiRKBv9rAH0CkifpQ9npdSuimv+nnAl4D7I2IC8BG5\nZHRL4LD8dlNKz0fERGBkREwGpgLbA6PIXSv2lqYfllR+1TX1/2rUWItrx7RYW5IkSVJbVMqw4e8A\nX8zup2z5k2xZC6xKXlNKr0bEvsDPgXPJXfd1FnBISmlakbZHA/OAU8klt/OBy4ELGnMQkiRJkqT2\nrcHkNaV0YGMaTCnNBo4ose5K4JLsJkmSJElSUS15qRxJkiRJktYJk1dJkiRJUsUzeZUkSZIkVTyT\nV0mSJElSxTN5lSRJkiRVPJNXSZIkSVLFM3mVJEmSJFU8k1dJkiRJUsUzeZUkSZIkVTyTV0mSJElS\nxTN5lSRJkiRVPJNXSZIkSVLFM3mVJEmSJFU8k1dJkiRJUsUzeZUkSZIkVTyTV0mSJElSxetY7gAk\nSS1vce2YcocgSZLUokxeJakdWrT8/RZrq0vHTVqsLUmSpKZy2LAkSZIkqeLZ8yqpIjnsVZIkSflM\nXiVVJIe9SpIkKV+LDxuOiJX13D4qUndgRNwdEe9FxMcRMSMiDmzpmCRJkiRJbdu66nmdAfymoGxZ\n/oOI6A88BiwFLgI+BE4B7ouIQ1NKD66j2CRJkiRJbcy6Sl7npJRuaaDOeGBjYLeU0rMAEXEj8AIw\nEdhuHcUmSZIkSWpj1tVswxERnSKiWz0rNwSGALV1iStASukT4Fpg24jYYx3FJkmSJElqY9ZVz+tR\nwAlAh4iYD9wO/Cil9GG2fhCwAfDnIts+kS13B55cR/FJ65yz5UqSJEktZ10krzOBO4C/kRsWfBgw\nEvhiROyT9a72zOq+WWT7urJe6yA2qdU4W64kSZLUclo8eU0p7VVQdFNEPAv8DDgT+A+ga7ZuSZEm\nFmfLrkXWSZIkSZLWQ611nddfAmOAr5JLXhdm5Z2L1K3OlguLrGPs2LGr7tfU1FBTU9NSMUqSJEmS\n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\n", "text": [ "" ] } ], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Next we see if there are any tendencies from the size of the file." ] }, { "cell_type": "code", "collapsed": false, "input": [ "df.boxplot(column='size', by='label')\n", "plt.ylabel('File Size')\n", "plt.xlabel('')\n", "plt.title('')\n", "plt.suptitle('')\n", "plt.ylim(0, 200000)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 12, "text": [ "(0, 200000)" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Next we compare the entropy" ] }, { "cell_type": "code", "collapsed": false, "input": [ "df.boxplot('entropy', 'label')\n", "plt.ylabel('Entropy')\n", "plt.xlabel('')\n", "plt.title('')\n", "plt.suptitle('')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 13, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nOLpLLhmNLA8GyRVXDG/++ZJLuo0LuHUndR1AVZ2Q5GlJnpLk7kk+k+TVSZ7dWruxy9gAAGCrnv70\n0StJ9u41JRsWSec1zFX1P5I8NckfJnlTkvuM2/8rycMnC5bVMAMAsKjUMEP/bFTD3OkIc1XdN6Pk\n+DWtte9ft/2qJC9M8tgkr+ooPAAA2Fbf8z1dRwDMo+sa5h8Yv09WcLw0yY1JHr+z4QCboYYZAGaz\nd++w6xCAOXSdMP/bJF9N8r71G1tr/5zkA+P9QM+trKx0HQIALIRnPUufCYuk64T565Jc01r78pR9\nf5/kzKrqfGEyYGOHDh3qOgQAWAjvepc+ExZJ1wnzqUn++Sj7vrjuGAAAANhRXSfMNyY55Sj7bpOk\njY8Bemx1dbXrEACgty68MFlaGr2S1Zt/vvDCLqMCZtHpY6Wq6i1Jzk1y6uS07Kp6V5J7tNbOmtju\nmVIAAABsm14+Viqjxb6+PckDk7xzbWNV3SbJ3iTDyROO9osAAADAdup6SvbvZzTt+ukT25+c5LZJ\nXrnjEQEAAEA6npKdJFX1wiQXJnltkjcl+aYkT03yztbauV3GBgAAwO7V9QhzMhpd/ukk903ya0ke\nneSFSb6ry6BgUVXVclXdVFUP6TCGwTiG87uKAQCOpao6UFU3TWzbP+7/vn4T19v0ucCx03UNc1pr\nNyV5/vgFHD/a+AUAx6vJfm4rfZ9+E3qoDyPMwPHniozWIXhF14EAwDE0uRjtLyS5bWvtk5u41lbO\nBY6RzkeYgeNPGy2O8KWu4wCAndRa+2qSr+70ucCxY4QZjl8nj+uhPlFVX6yqD1TVYyYPqqp/U1Wv\nrarPjI/7q6r6uao6ceK4YVVdVVV3qapXVdW1VfX5qnpzVf3LiWOn1jBX1RlVdWlVfbaqrq+qP62q\nvWvXnjh2taour6p7V9UfVdXnqupQVV1WVbd4PjsArFvD49yqeta4H7mxqt5bVQ8eHzOoqndW1Q1V\n9Q9V9ayJazyiqn6/qj4+Pve6qnrLrOuCHK0OuaruWFXPraqPVNUXquqaqvpf6/vlDc5dqqqXV9XV\n4376Y+Nr3XbiuCNqqtftu6mqfnti2xOq6n3j3/GGqvrbqnpFVZ05y+8Ku4URZjh+/XKSUzNaTK+S\n/FCSV1XVbVprB5Okqr4zyR8m+eskz0tybZJvS/KcjJ6F/uh112tJbpfkHUnek+SZSc5O8rQkr6+q\n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\n", "text": [ "" ] } ], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Compare the frame count" ] }, { "cell_type": "code", "collapsed": false, "input": [ "df.boxplot(column='frame count', by='label')\n", "plt.ylabel('Frame Count')\n", "plt.xlabel('')\n", "plt.title('')\n", "plt.suptitle('')\n", "plt.ylim(0, 5000)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 14, "text": [ "(0, 5000)" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAA+4AAAE7CAYAAABDiNsLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xu8XFV58PHfE0ACRIxAtYJvDZdqBEojiKhUPNysGqvV\nt3ipaFJLaK2kQtW+3sATr0iRS7wLampFipaL8lqqCAwQioDaAMVS5BKoUJVbJDHc8/SPvSedDHNO\nZiZzzux9zu/7+cxnzt577TVPjh/c55m1nrUiM5EkSZIkSdU0Y9gBSJIkSZKksZm4S5IkSZJUYSbu\nkiRJkiRVmIm7JEmSJEkVZuIuSZIkSVKFmbhLkiRJklRhJu6SJEmSJFXY0BP3iFg3xmt1h7bPiYjz\nIuK+iFgTEZdFxIFj9DsjIo6JiBsj4sGIuCMiToyIrcdo33XfkiRJkiRNlsjM4QYQsQ64DPhS26VH\nM/NbLe12Ba4GHgFOAR4AFgF7Aq/IzIva+j0VWAycA1wA7F4eXw4cki3/8F77liRJkiRpslQlcV+W\nmW/bSLtvAq8F9snM68pz2wA3AA9l5tyWtnsA1wNnZ+ZhLeePApYCb87MM/vpW5IkSZKkyTT0qfKl\niIgtImLWGBe3AV4NNJqJNUBm/gY4HXh2ROzbcsubyvdT2ro6DVgLHL4JfUuSJEmSNGmqkrj/CUVC\n/UBE/DIilkbEti3X9wKeBFzZ4d6ryvfnt5zbF3icYvr7epn5MHBteb3fviVJkiRJmjSbDzsAiuT6\nm8DNwLbAfOAo4KUR8eJy5HvHsu2dHe5vntup5dyOwD2Z+egY7V8UEZtn5mN99C1JkiRJ0qQZeuKe\nmS9sO/X1iLgO+BjwTuDjQHMl+Ic7dPFQ+d66WvzWY7Rtb/9AH31LkiRJkjRpqjJVvt3fUazw/sry\neG35vmWHtjPb2jR/7tS22T5b2vfatyRJkiRJk2boI+6dZOZjEfHfwA7lqbvK905T1pvnWqe63wXM\njYgtOkyX34liGv1jffYNQEQMdzl+SZIkSdKUkpnR6XwlE/eImAk8E/jX8tT1FFPZX9yheXOq/Y9a\nzl0NHArsByxv63ce0Ghp22vf6w17Kz1JG1q4cCHLli0bdhiSJFWez0ypeiI65uzAkKfKR8R2Y1z6\nCLAZcD5AZq4pfx6JiL1a7p8FHAHclJnXtNx/FsV0+KPb+l0EbAWc0TzRR9+SJEmSJE2aYY+4HxsR\n+wGXAP8FzKKoax8Bfgh8uqXt+4CDge9HxMnAaopE/BkUK9Gvl5n/HhGfBY6KiLOBC4DnAosp9mv/\nRlscXfctqbrmzJkz7BAkSaoFn5lSvQw7cb+EIqFeAGxPsff6TcD7gZMy85Fmw8y8JSL2B44H3kux\n9/qPgZdn5sUd+j4aWAkcSZF83w0sBY5rb9hH35IqaGRkZNghSJJUCz4zpXoZauKemd8BvtND+xuB\nP+6y7TrgpPI10L4lSZIkSZosVd0OTpIkSZIkAeHK6P2JiPR3J0mSJEkahIgYczs4R9wlSZIkSaow\nE3dJU0aj0Rh2CJIk1YLPTKleTNwlSZIkSaowa9z7ZI27JEmSJGlQrHGXJEmSJKmmTNwlTRnW60mS\n1B2fmVK9mLhLkiRJklRh1rj3yRp3SZIkSdKgWOMuSZIkSVJNmbhLmjKs15MkqTs+M6V6MXGXJEmS\nJKnCrHHvkzXukiRJkqRBscZdkiRJkqSaMnGXNGVYrydJUnd8Zkr1YuIuSZIkSVKFWePeJ2vcJUmS\nJEmDYo27JEmSJEk1ZeIuacqwXk+SpO74zJTqxcRdkiRJkqQKs8a9T9a4S5IkSZIGxRp3SZIkSZJq\nysRd0pRhvZ4kSd3xmSnVi4m7JEmSJEkVZo17n6xxlyRJkiQNijXukiRJkiTVlIm7pCnDej1Jkrrj\nM1OqFxN3SZIkSZIqzBr3PlnjLkmSJEkaFGvcJUmSJEmqKRN3SVOG9XqSJHXHZ6ZULybukiRJkiRV\nmDXufbLGXZIkSZI0KNa4S5IkSZJUUybukqYM6/UkSeqOz0ypXkzcJUmSJEmqMGvc+2SNuyRJkiRp\nUKxxlyRJkiSppkzcJU0Z1utJktQdn5lSvVQqcY+IrSPi1ohYFxGf7nD9ORFxXkTcFxFrIuKyiDhw\njL5mRMQxEXFjRDwYEXdExIkRsfUY7bvuW5IkSZKkyVKpGveIOBE4EpgFfCYz/7rl2q7A1cAjwCnA\nA8AiYE/gFZl5UVtfpwKLgXOAC4Ddy+PLgUNaC9R77bu8xxp3SZIkSdJAjFfjXpnEPSL2Bq4C3gOc\nxBMT928CrwX2yczrynPbADcAD2Xm3Ja2ewDXA2dn5mEt548ClgJvzswz++m75R4Td0mSJEnSQFR+\ncbqI2Aw4jWJk/NwO17cBXg00mok1QGb+BjgdeHZE7Ntyy5vK91PaujoNWAscvgl9S6oo6/UkSeqO\n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\nwv4HQ8GYTeTe7LkAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### The value for the benign files seems really low, let's dig a little deeper." ] }, { "cell_type": "code", "collapsed": false, "input": [ "df_good['frame count'].value_counts()[0:10]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 15, "text": [ "1 390\n", "2 16\n", "3 3\n", "361 3\n", "25 3\n", "320 2\n", "200 2\n", "95 2\n", "300 2\n", "217 2\n", "dtype: int64" ] } ], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### That's kind of interesting, most of the values are 1.\n", "\n", "#### Next we compare the frame rate." ] }, { "cell_type": "code", "collapsed": false, "input": [ "df.boxplot(column='frame rate', by='label')\n", "plt.ylabel('Frame Rate')\n", "plt.xlabel('')\n", "plt.title('')\n", "plt.suptitle('')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 16, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAA/kAAAE7CAYAAACG+kGaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xu8XGV96P/PN9wCpBgBb8RqClYCWE4UENQWNhetiLXS\nIyoFJKXg+VmhDT3t7ygIBERFpXJRvBSKQQWKFkGpRVRgQBABodxsKYoEFCpy80AIlyR8zx9rTbKY\nPbMzszN7bvvzfr2mM+tZz3rmm+2rPPu71/N9VmQmkiRJkiRp+M3odwCSJEmSJKk7TPIlSZIkSRoR\nJvmSJEmSJI0Ik3xJkiRJkkaESb4kSZIkSSPCJF+SJEmSpBFhki9JkiRJ0ojoW5IfEVtHxLkR8Z8R\n8duIeDIi7oqIMyLi91r0vzgiHo2IpRFxdUTs3mLsGRFxZETcGRFPRcR9EXFyRGw0QSxTMrYkSZIk\nSb0SmdmfL47YAzgauA74FbAC2B74i/Lz6zLznrLvVsANwLPAqcDjwGHAa4C9M/PyhrFPA44Avglc\nCmxbHv8Q2Csr/+ipHFuSJEmSpF7qW5LfSkS8C/g6cEJmLirbvg7sC+yQmbeVbRsDPwWezsx5leu3\nA24HLszM/SrthwOnAwdk5vmV9ikbW5IkSZKkXhrEmvz7yvdnYVXC/Q6gVk/CATLzSeAs4NURsVPl\n+v3L91Mbxj0TWAYcWG+YyrElSZIkSeq1vif5EbFBRGweES+PiLcAX6JI9P+p7LI9sD7Fsv5G15fv\nO1badgJWUizBXyUznwFuLc/XTeXYkiRJkiT1VN+TfIr6999QJPbfBZYDf5SZD5bntyjf729ybb1t\nTqVtC+DhzFzeov/mEbFuD8aWJEmSJKmnBiHJvwjYC3gncAKwFXBVRGxZnq/vWv9Mk2ufbuhT/9ys\nb7P+Uzm2JEmSJEk91fe7zpl5P6vvmn87Ii4EbgROAf6UotYdYIMml88s35dV2pYBm7f4uplAVvpP\n5diSJEmSJPVU35P8Rpl5e0TcAuxaNj1Qvs9p0r3eVl1u/wAwLyLWa7Ksfg7FcvsVPRh7lYgYrEcY\nSJIkSZKGXmZGY9vAJfmlDYHnys+3UyyRf2OTfruU7z+ptN0AvBnYGbim3hgRM4H5QK3SdyrHfp5B\ne1ShNN0tWLCAxYsX9zsMSZIGnnOmNJgixuX3QB9r8iPiJS3adwdeA1wOkJlLgUuAsYjYvtJvFnAo\ncFdm3lgZ4gKKZfMLG4Y+jOKPB+fWG6ZybEmSJEmSeq2fd/K/GBEvBa6g2Fl/JrAD8B7gQeD/VPp+\nGNgT+F5EnAI8QZFYvwzYpzpoZt4REWcAh5f1/ZcC2wBHALXMPK8hjqkcW9KAmjt3br9DkCRpKDhn\nSsOln0n+ecD7gIOAF1HcIf8FcDrwqcx8qN4xM++OiDcBJwEfoni2/U3AWzPziiZjLwSWAO+nSNQf\nKsc9trHjVI4taXCNjY31OwRJkoaCc6Y0XMJa8akXEenPWRostVrNX1okSWqDc6Y0mCKi6cZ7favJ\nlyRJkiRJ3eWd/B7wTr4kSZIkqZu8ky9JkiRJ0ogzyZc0LdVqtX6HIEnSUHDOlIaLSb4kSZIkSSPC\nmvwesCZfkiRJktRN1uRLkiRJkjTiTPIlTUvWF0qS1B7nTGm4mORLkiRJkjQirMnvAWvyJUmSJEnd\nZE2+JEmSJEkjziRf0rRkfaEkSe1xzpSGi0m+JEmSJEkjwpr8HrAmX5IkSZLUTdbkS5IkSZI04kzy\nJU1L1hdKktQe50xpuJjkS5IkSZI0IqzJ7wFr8iVJkiRJ3WRNviRJkiRJI84kX9K0ZH2hJEntcc6U\nhotJviRJkiRJI8Ka/B6wJl+SJEmS1E3W5EuSJEmSNOJM8iVNS9YXSpLUHudMabiY5EuSJEmSNCKs\nye8Ba/IlSZIkSd1kTb4kSZIkSSPOJF/StGR9oSRJ7XHOlIaLSb4kSZIkSSPCmvwesCZfkiRJktRN\n1uRLkiRJ6pir9aXh0rckPyJeHREnRMSPI+I3EfF4RPx7RBwVERs19F0UEc+1eP1tk7FnRMSREXFn\nRDwVEfdFxMmN41b6bx0RF0fEoxGxNCKujojdW/TtaGxJg8n6QkmS2rN4ca3fIUjqwLp9/O5DgL8C\nvgV8FVgO7AGcCLw7InbJzKcbrlkIPNzQdlOTsU8BjgC+CXwa2Bb4a+C1EbFXde18RGwF/Ah4Fvgk\n8DhwGHBZROydmZdPdmxJkiRJknqpbzX5EbEDcFdmPtHQ/lHgaOCIzDyjbFsEHAvMzcz71jDudsDt\nwIWZuV+l/XDgdOCAzDy/0v51YF9gh8y8rWzbGPgp8HRmzpvs2JXz5v6SJEkaGrXa6mX6xx8Pxx1X\nfB4bK16S+q9VTX7f7uRnZrM78ABfp0jyt2tyLiJiE2BZZq5ocf3+5fupDe1nAicBBwLnl4NtDLwD\nqNUT/DK2JyPiLOCEiNgpM2/sdGxJkiRpWDUm84sW9SkQSR0bxI33Xl6+P9jk3G3Ab4GnIuLaiHhr\nkz47ASuBG6qNmfkMcGt5vm57YH3guibjXF++7zjJsSUNMGvyJUlqz5IltX6HIKkDA5XkR8Q6wDEU\n9fnnVU49BnwJOJzizvuHgVcC34mIgxuG2QJ4ODOXN/mK+4HNI2LdSt96e7O+AHMmObYkSZI09ObP\n73cEkjoxaAnpqcAuwIcz82f1xsw8raHfv0bE2cAdwCkR8S+Z+WR5biPgmRbjP13p83j5Tov+1b5U\nPrc7tqQBNmZBoSRJbVm4cKzfIUjqwMDcyS833Psg8KXM/OSa+mfmo8AXgdnAGyunlgEbtLhsJpBl\nHyrvzfrPbOjT6diSJEmSJPXUQNzJL3fPPxo4OzM/0MGl95bvm1XaHgDmRcR6TZbVz6FYbr+i0rfe\n3qjeVl3K38nYz7NgwQLmzp0LwOzZs5k/f/6qO4n12mCPPfa4d8f1tkGJx2OPPfbYY48H9bj+eVDi\n8djj6Xpc/7xkyRIm0rdH6K0KYPXj8RZn5iEdXnsicBSwZ2ZeWbbVH8G3a2ZeU+k7E3gEqGXmPmXb\nLOAh4NrM3Kth7GOA44Gd67vrdzJ2w1g+Qk8aMLVabdV/OCVJUmvOmdJgavUIvRn9CKYuIo6lSPC/\n0irBj4h1IuIFTdp/F/gA8DDwo8qpCyiWzS9suOQwYEPg3HpDZi4FLgHGImL7ytizgEOBuyqPz+to\nbEmDzV9WJElqj3OmNFz6dic/Ij4IfBa4j2JH/cZAfp2ZP4iI2cA9wEXAnRQ77W9NkYRvBOyfmRc2\njH06xU78FwGXAtsARwDXZOYeDX23ongk3nLgFOAJiqR9O2CfzPz+ZMeuXOOdfEmSJElS17S6k9/P\nJP/LwPvqh0261DJzj4hYHzgD2Bl4ObBqiT3wqcz8SZOxZ1DcbX8/MLfsfwFwbGaO2xgvIuYBJwG7\nAesDNwGLMvOKtR27vMYkXxowLj2UJKk9zpnSYBq4JH86McmXBo+/sEiS1B7nTGkwmeT3kUm+JEmS\nJKmbBnLjPUmSJEmS1D0m+ZKmperzRiVJUmvOmdJwMcmXJEmSJGlEWJPfA9bkS5IkSZK6yZp8SZIk\nSZJGnEm+pGnJ+kJJktrjnCkNF5N8SZIkSZJGhDX5PWBNviRJkiSpm6zJlyRJkiRpxJnkS5qWrC+U\nJKk9zpnScDHJlyRJkiRpRFiT3wPW5EuSJEmSusmafEmSJEmSRpxJvqRpyfpCSZLa45wpDReTfEmS\nJEmSRoQ1+T1gTb4kSZIkqZusyZckSZIkacSZ5EualqwvlCSpPc6Z0nAxyZckSZIkaURYk98D1uRL\nkiRJkrrJmnxJkiRJkkacSb6kacn6QkmS2uOcKQ0Xk3xJkiRJkkaENfk9YE2+JEmSJKmbrMmXJEmS\nJGnEmeRLmpasL5QkqT3OmdJwMcmXJEmSJGlEWJPfA9bkS5IkSZK6yZp8SZIkSZJGnEm+pGnJ+kJJ\nktrjnCkNl74l+RHx6og4ISJ+HBG/iYjHI+LfI+KoiNioSf+tI+LiiHg0IpZGxNURsXuLsWdExJER\ncWdEPBUR90XEyc3GneqxJUmSJEnqlb7V5EfEScBfAd8CfgwsB/YA3g3cBuySmU+XfbcCbgCeBU4F\nHgcOA14D7J2ZlzeMfRpwBPBN4FJg2/L4h8Be1QL5qRy7co01+ZIkSZKkrmlVk99xkh8Rs4A3AC8G\nLs/MX08yoB2AuzLziYb2jwJHA0dk5hll29eBfYEdMvO2sm1j4KfA05k5r3L9dsDtwIWZuV+l/XDg\ndOCAzDy/0j5lY1fOm+RLkiRJkrqmKxvvRcRfAfcDlwFfobiLTUS8JCKeiYj3tztWZt7UmOCXvl6+\nb1eOvTHwDqBWT8LL658EzgJeHRE7Va7fv3w/tWHcM4FlwIGVf8+UjS1psFlfKElSe5wzpeHSdpIf\nEf8T+BxwBXAosOovBpn5IMXS9T/tQkwvL98fLN+3B9YHrmvS9/ryfcdK207ASool+Ktk5jPAreX5\nuqkcW5IkSZKknurkTv7fU9zx3hf4dpPzN1HUsU9aRKwDHENRn39e2bxF+X5/k0vqbXMqbVsAD2fm\n8hb9N4+IdXswtqQBNjY21u8QJEkaCs6Z0nDpJMn/A4rN5lr5b+AlaxcOpwK7AMdm5s/Ktvqu9c80\n6f90Q5/652Z9m/WfyrElSZIkSeqpTpL8lWvo/zLgyckGUm6490HgS5n5ycqpZeX7Bk0um9nQp/65\nWd96/6z0n8qxJQ0w6wslSWqPc6Y0XDpZWn4b8McUu8g/T0TMAPYDbpxMEBGxiGJH/bMz8wMNpx8o\n3+cwXr2tutz+AWBeRKzXZFn9HIrl9it6MPbzLFiwgLlz5wIwe/Zs5s+fv2rpU/0/nB577HHvjusG\nJR6PPfbYY4899thjjz2e6Lj+ecmSJUyk7UfoRcR7gPOBj1PsrH8nRdL/y7LtncDbM/Pf2hpw9biL\ngGOBxZl5SJPzs4CHgGszc6+Gc8cAxwM7Z+aNZVv9EXy7ZuY1lb4zgUeAWmbuM9VjN4zlI/QkSZIk\nSV2z1o/Qy8wLKJL5o4D/LJu/C/wHRYK/aBIJ/rEUCf5XmiX45fcuBS4BxiJi+8q1syh2+b+rnoSX\nLqBYNr+wYajDgA2Bc3sxtiRJkiRJvdb2nfxVF0S8DjgA2IbiMXp3AV/NzJ90OM4Hgc8C91HsqN8Y\nyK8z8wdl360oHlu3HDgFeIIisd4O2Cczv98w9unA4cBFFI/22wY4ArgmM/do6DtlY1eu8U6+NGBq\ntdqqJVCSJKk150xpMLW6k9/x494y82bg5i7EtCNFYv+7wDlNzteAH5TfeXdEvAk4CfgQxbPtbwLe\nmplXNLl2IbAEeD+wD8WS/NMpVg08z1SOLUmSJElSL3VSk38P8DeZ+e0W5/8EOC0zt+xifCPBO/mS\nJEmSpG5a65p84JXArAnObwzM7TAuSZIkSZLUJZ0k+WvyYnxGvKQhUX0UiSRJas05UxouE9bkR8Ru\nwG4UG+wB/FlEvKpJ182A9wK3dDc8SZIkSZLUrglr8ivPsG/Hz4EDGh45J6zJlyRJkiR1V6ua/DUl\n+S8AXlge/gI4EvhWQ7cElmbmI12KdeSY5EuSJEmSumlSG+9l5v/NzCWZuQTYAzi/flx53WuCL2nY\nWF8oSVJ7nDOl4TJhTX5VZtamMA5JkiRJkrSWJlyuP65zxHrAO4HXUyzjH7cSIDMP6Vp0I8Ll+pIk\nSZKkbppUTX7DAJsCNeA1E/XLzG4+lm8kmORLkiRJkrppUjX5DU4EtgYOBbYq294KbAucB/yE4lF6\nkjTwrC+UJKk9zpnScOkkyd8H+Gpmng08UbatyMw7gYOAp4BPdDk+SZIkSZLUpk6S/JcCN5SfV5Tv\nMwHKtegXA+/oXmiSNHXGxsb6HYIkSUPBOVMaLp0k+Y8CG5efnwCWA79bOb+cYjM+SZIkSZLUB50k\n+T+jqL8nM1cCtwALImJmRGxMsWT/F90PUZK6z/pCSZLa45wpDZdOkvzLgHdFxAbl8T8AOwOPAL8B\ndgJO6W54kiRJkiSpXZ08Qi+ADTLz6Urbn1HcwV8JfCMzL5iSKIecj9CTJEmSJHVTq0fotZ3ka/JM\n8iVJkiRJ3dQqye9kuf6avmD3iLiiW+NJ0lSyvlCSpPY4Z0rDZd12OkXES4FXAg9k5i8bzu0JHAf8\nIfBc1yOUJEmSJEltmXC5fkSsC/wTRd09QALfAt4LvBg4C3gLRU3+PwMfy8w7pzLgYeRyfUmSJElS\nN7Varr+mO/kLKRL8XwHXA1sB7wQ+DrwbmAN8BfhoZt7d1YglSZIkSVJH1lST/+fAHcC8zNwvM18H\nfAH4W2Aj4A8zc4EJvqRhY32hJEntcc6UhsuakvzfB76SmcsqbV8s3z+ZmddNTViSJEmSJKlTa6rJ\nfw44KDPPrbS9CHgQ2DszL5v6EIefNfmSJEmSpG5am0foNWan9ePlax2VJEmSJEnqmnYeofe28hF6\ndRuX7/tFxPzGzpn5ma5EJklTqFarMTY21u8wJEkaeM6Z0nBpJ8n/8/LV6H+16G+SL0mSJElSH6yp\nJn+s0wEzs7YW8Ywka/IlSZIkSd3UqiZ/wiRf3WGSL0mSJEnqprXZeE+SRo7P/JUkqT3OmdJwMcmX\nJEmSJGlE9DXJj4gPR8Q3IuIXEfFcRNwzQd9FZZ9mr79t0n9GRBwZEXdGxFMRcV9EnBwRG7UYf+uI\nuDgiHo2IpRFxdUTs3qJvR2NLGjzuEixJUnucM6Xh0s7u+lPpY8AjwM3AC4B2CtcXAg83tN3UpN8p\nwBHAN4FPA9sCfw28NiL2qhbJR8RWwI+AZ4FPAo8DhwGXRcTemXn5ZMeWJEmSJKlX+p3kb5mZSwAi\n4g6gnTvhF2fmfRN1iIjtKJLwCzNzv0r7PcDpwHuB8yuXfALYBNghM28r+34F+ClwBjBvLcaWNID2\n3bfGRReN9TsMSZIG3qmn1li4cKzfYUhqU1+X69cT/A5FRGwSERP9gWL/8v3UhvYzgWXAgZXBNgbe\nAdTqCX4Z25PAWcCrI2KnyYwtaXBdd12/I5AkaTjccku/I5DUiUkl+RHxqoh4U0TM7nZAbbgN+C3w\nVERcGxFvbdJnJ2AlcEO1MTOfAW4tz9dtD6wPNPuV//ryfcdJji1pQM2cOdbvECRJGgpz5471OwRJ\nHehouX5E/AlwGjCXon7+zcAVEfESipr2D2XmN7odZOkx4Evl9zxGsYR+IfCdiDgkM8+p9N0CeDgz\nlzcZ537gDRGxbmauKPvW25v1BZgzybElDZDDD4d//dfi8733wty5xee3vx0+97m+hSVJ0sCp1YoX\nwPHHr24fGytekgZX20l+RIxRbDR3C3AOcFz9XGY+GBF3A+8BpiTJz8zTGpr+NSLOBu4ATomIfymX\n2ENR2/9Mi6GervR5nNX7ADTrX+1L5XO7Y0saIJ/73Opk/qUvrbFkyVhf45EkaVBVk/klS2osWjTW\nx2gkdaKT5frHUiyV34ViM7pG1wGv60ZQ7crMR4EvArOBN1ZOLQM2aHHZTIpVCMsqfWnRf2ZDn07H\nliRJkiSpZzpZrr8TcFxmroyIZud/BbysK1F15t7yfbNK2wPAvIhYr8my+jkUy+1XVPrW2xvV26pL\n+TsZe5UFCxYwt1wbPHv2bObPn7/qmaO1ci2Uxx573Lvjd71rsOLx2GOPPfbY40E9XrBgbKDi8djj\n6Xpc/7xkyRImEu0+0j0ingT+PjM/HxGbA78B9srMK8rzH6aoyX9BWwOOH/8OYKPM3LLD604EjgL2\nzMwry7aPAkcDu2bmNZW+M4FHgFpm7lO2zQIeAq7NzL0axj4GOB7YOTNv7HTsyrls9+csSZIkSdKa\nRASZOe4O/IwOxrgT+KMJzu9Dsbt810XEOhEx7o8HEfG7wAeAhyk25Ku7gGLZ/MKGSw4DNgTOrTdk\n5lLgEmAsIravjD0LOBS4q57gdzq2pMFV/YuoJElqzTlTGi6dLNc/C/hsRPwA+Ha9sXzO/CcoauLf\n18mXR8RBwCvLwxcB60XER8rjJZn5tfLz7wD3RMRFFH9seAzYmiIJ3wjYv3yEHQCZeUdEnAEcHhEX\nApcC2wBHUNxpP68hlA8DewLfi4hTgCcokvaXUfzxYpVJjC1JkiRJUk90slw/gK8Cf06RBP8OxTL3\nzShWBHw5M/+yoy+PuBLYrTysB1JfblDLzD3KfutTbPa3M/ByYNUSe+BTmfmTJmPPoLjb/n6KR/49\nRHEX/tjMHLcxXkTMA04q41kfuAlYVC9HWMuxXa4vSZIkSeqaVsv1207yKwPtCxxIcfc6gJ8B52Tm\nhd0IdBSZ5EuSJEmSuqlrSb46Z5IvDZ5arbZqx1JJktSac6Y0mLqx8Z4kSZIkSRpgHd3JL3ec/3Pg\nVRS1+OP+apCZh3QtuhHhnXxJkiRJUjet9XL9iHgjxaPmXjhRv8x0dUADk3xJkiRJUjd1Y7n+Z4GV\nwJ8Cm2XmjGavbgUsSVPJZ/5KktQe50xpuKzbQd9tgeMy85KpCkaSJEmSJE1eJ8v17wFOy8xTpzak\n0eNyfUmSJElSN3Vjuf5ZwAERsU73wpIkSZIkSd3SSZJ/EnAzcF1EHBIRu0fEro2vKYpTkrrK+kJJ\nktrjnCkNl05q8jeieGzejhR39ZtJwDv9kiRJkiT1QSc1+ecABwEXAdcAjzXrl5mLuxXcqLAmX5Ik\nSZLUTa1q8jtJ8h8DLszMQ7sd3KgzyZcGz6mnwsKF/Y5CkiRJmpxubLwHcEOX4pGkvlq8uNbvECRJ\nGgrW5EvDpZMk/wpg56kKRJIkSZIkrZ1Oluu/ArgS+Dzw2cx8dioDGyUu15cGw6mnwsUXF5+vugp2\n2634/M53unRfkjSaIsat5O0bfx+WuqsbNfn3ABsDmwMrgP8GVla7AJmZW659uKPFJF8aPPPnwy23\n9DsKSZIkaXJaJfmdPELvXopH5E3050AzWUlD4de/rgFjfY5CkqTBV6vVGBsb63cYktrUdpKfmWNT\nGIck9dQrXtHvCCRJkqTu6+ROviQNtVqteAHceOMYixYVn8fGipckSRqvVhtznpSGSNs1+Zo8a/Kl\nwbNoEauSfEmS1FoE+KusNHha1eR38gg9IuIPI+I7EfFwRKyIiJWV13MRsXLNo0hS/y1ZUut3CJIk\nDYlavwOQ1IG2k/yI2JXiEXqvB64vr70SuJFiM77bga9MQYyS1HXz5/c7AkmSJKn7OrmTfzTFY/O2\nAw4u2z6embsAbwV+Dziru+FJ0tSYP3+s3yFIkjQkxvodgKQOdJLkvx44KzN/w+pH5c0AyMzvAV8D\nPtrd8CRpatQ34JMkSZJGSSdJ/gbAr8rPz5Tvv1M5fwuwYzeCkqSpZk2+JEntOfjgWr9DkNSBTh6h\n92vg5QCZuTQi/i/wB8BF5fk5wIruhidJ3VN9hN4558DcucVnH6EnSVJrCxb0OwJJnWj7EXoRcQEw\nOzP/uDz+Z+AtwJEUKwL+Abg+M/eeoliHlo/QkwaPj9CTJEnSMOvGI/T+CXg4IjYqj48GngK+XJ57\nGvj/1zZQSZIkSZI0OW0n+Zn5vcw8IDOXlcd3A1sD+wLvALbJzNunJkxJ6q7Zs2v9DkGSpKFQc7da\naai0VZMfERsC+wH/lZnX19szcynwrSmKTZKmzPz5/Y5AkiRJ6r527+Q/C5wFvHYKY5Gknhlzpz1J\nktpSq431OwRJHWgryc/MlcAvgU26+eUR8eGI+EZE/CIinouIe9bQf+uIuDgiHo2IpRFxdUTs3qLv\njIg4MiLujIinIuK+iDi5sqdAz8aWJEmShtXxx/c7Akmd6GTjvcXAQRExs4vf/zFgDPgZ8BjQcgv6\niNgK+BGwM/BJ4O+BWcBlEbFnk0tOodjx/w7gcOAbwF8Dl0TE83YgnMqxJQ0m6wslSWpXrd8BSOpA\nWzX5pR8Bfwb8e0R8AbgLWNbYKTOv7mDMLTNzCUBE3AFMdCf8ExQrCXbIzNvKa74C/BQ4A5hX7xgR\n2wFHABdm5n6V9nuA04H3Auf3aGxJkiRJknoi2n1+e0Q810a3zMx1JhVImeRn5pZNzm0MPAL8MDPf\n3HDuI8AJwM6ZeWPZdiJwFPBHmXltpe8G5ThXZeY+Uz125Vy2+3OWJEmSBkkE+KusNHgigswct5K8\nkzv5h3Qxnk5tD6wPXNfkXH23/x2BG8vPOwErgRuqHTPzmYi4tTzfi7ElSZIkSeqZCZP8iHg9cHdm\nPpKZi3sTUlNblO/3NzlXb5vT0P/hzFzeov8bImLdzFwxxWNLGlC1Ws0d9iVJasPBB9cottGSNAzW\ndCf/x8CBwHkAETEL+EfgxMz8jymOrapeq/9Mk3NPN/Spf27Wt7H/41M8tqQpMGj7W1qOI0kaZQsW\n9DsCSZ3oZHd9gJkUG8u9dApimUh9g78Nmpyb2dCn/rlZ33r/rPSfyrElTYHMXOvXccet/Rj1lyRJ\no8yVb9Jw6aQmv58eKN/nNDlXb6sut38AmBcR6zVZVj+HYrn9ikrfqRp7lQULFjB37lwAZs+ezfz5\n81f9B7P+KC+PPfa4d8eLFg1WPB577LHHHnvsscceezzRcf3zkiVLmMiEu+uXO+ofmJnnlcebA78B\n9srMKyYcuUNr2F1/FvAQcG1m7tVw7hjgeJ6/A/5HgaOBXTPzmkrfmRQ74Ncqu+tP2diVc+6uLw2Y\nWq226j+ckiSpNedMaTC12l1/Rj+C6VRmLgUuAcYiYvt6e5mgHwrcVU/CSxdQLJtf2DDUYcCGwLm9\nGFuSJEmSpF5q507+ecDNZdPGFHe2vwT8rNk1mfmZtr884iDgleXhEcB6QP36JZn5tUrfrSgeW7cc\nOAV4giKx3g7YJzO/3zD26cDhwEXApcA25Xdck5l7NPSdsrHL/t7JlyRJ0lBatKh4SRosre7kt5Pk\ndyQz214dEBFXArvVL603l++1Jsn4POCk8pr1gZuARc1KByJiBsXd9vcDcymW5F8AHJuZ4zbGm+Kx\nTfIlSZI0lCLAX2WlwTPZJH+s0y/KzFqn14w6k3xp8CxYUGPx4rF+hyFJ0sCLqJE51u8wJDWYVJKv\n7jDJlwZiY9VsAAARM0lEQVSPv7BIktQe50xpMJnk95FJvjR4XHooSVJ7nDOlwTTUu+tLkiRJkqQ1\nM8mXNE3V+h2AJElD4eCDa/0OQVIHTPIlSZIktbRgQb8jkNQJk3xJ09Jxx431OwRJkobC2NhYv0OQ\n1AE33usBN96TJEmSJHWTG+9JUkWtVut3CJIkDQXnTGm4mORLkiRJkjQiTPIlTUvWF0qS1J5abazf\nIUjqgDX5PWBNviRJkoZVBPirrDR4rMmXpIoFC2r9DkGSpCFR63cAkjpgki9pWjrnnH5HIEmSJHWf\ny/V7wOX60uBx6aEkSe1xzpQGk8v1JUmSJEkacSb5kqapWr8DkCRpQptuWtxF7/cLan2Pof7adNN+\n/68iDb51+x2AJEmSpPEee2wwlsnXajAoT56NcQuTJTXyTr6kaem448b6HYIkSUNhbFAyfEltceO9\nHnDjPUmSJHXKDe/G82cirebGe5JUUavV+h2CJElDwTlTGi4m+ZIkSZIkjQiX6/eAy/UlSZLUKZem\nj+fPRFrN5fqSJEmSJI04k3xJ09KCBbV+hyBJ0lCwJl8aLib5kqalc87pdwSSJElS91mT3wPW5EuD\nx5o+SdKgc64az5+JtJo1+ZIkSZIkjTiTfEnTVK3fAUiSNBSsyZeGi0m+JEmSJEkjwpr8HrAmX1pt\n003hscf6HcVgeeEL4dFH+x2FJGngxLhSW4FF+VKpVU2+SX4PmORLq7lhznj+TCRJzTg/jOfPRFpt\nJDbei4jnWryeaNJ364i4OCIejYilEXF1ROzeYtwZEXFkRNwZEU9FxH0RcXJEbNSif9tjSxpM1hdK\nktQe50xpuKzb7wAm4WrgHxvallcPImIr4EfAs8AngceBw4DLImLvzLy84fpTgCOAbwKfBrYF/hp4\nbUTsVb0NP4mxJUmSJEnqiaFarh8RzwGLM/OQNfT7OrAvsENm3la2bQz8FHg6M+dV+m4H3A5cmJn7\nVdoPB04HDsjM8yczduUal+tLJZfZjefPRJLUjPPDeP5MpNVGYrl+KSJivYiY1eLkxsA7gFo9CQfI\nzCeBs4BXR8ROlUv2L99PbRjqTGAZcOBajC1JkiRJUs8MY5L/Lork+/GIeDAiTo+ITSrntwfWB65r\ncu315fuOlbadgJXADdWOmfkMcGt5frJjSxpQ1hdKktQe50xpuAxbTf4NwNeBnwObAPsAhwO7RcQb\nyzvqW5R9729yfb1tTqVtC+DhzFzeov8bImLdzFwxibElSZIkSeqZoUryM3OXhqavRcRtwMeAvwE+\nDtR3xH+myRBPl+/VXfM3atG3sf/jkxhb0oAaGxvrdwiSJA0F50xpuAzjcv1Gn6bY6f5t5fGy8n2D\nJn1nNvSpf27Wt94/K/07HVuSJEmSpJ4Zqjv5zWTmioj4b2DzsumB8r3Zsvl6W3W5/QPAvIhYr8mS\n/TkUS/lXTHLsVRYsWMDcuXMBmD17NvPnz1/1V9F6nZPHHk+HY6hRq/U/nnpbv38eq+Pp7/d77LHH\nHns8mMeDMD+sjsWfh8ce9/O4/nnJkiVMZKgeoddMRMwEngB+lJm7lbvuPwRcm5l7NfQ9Bjge2Dkz\nbyzbPgocDeyamdc0jPsIUMvMfcq2jsaunPMRelJpUB59U6vVVv2Hs98G5WciSRosgzI/OGdKg2no\nH6EXEZu2OPVRYB3gEoDMXFp+HouI7SvXzwIOBe5qSMIvoFiSv7Bh3MOADYFz6w2TGFvSgBqUX1Yk\nSRp0zpnScBmaO/kRcQqwM3Al8EtgFkUd/hjwY2D38rF3RMRWFDvxLwdOobjTfxiwHbBPZn6/YezT\nKXbpvwi4FNgGOAK4JjP3aOjb0djlNd7Jl0r+BX48fyaSpGacH8bzZyKtNvR38imS+8eBgymS60XA\nbOAoYKye4ANk5t3AmyiS/w9RbM73BPDWZkk4xV38v6NI1D8HvBs4HXh7Y8dJjC1pAFVrmyRJUmvO\nmdJwGZqN9zLz28C3O+h/J/DONvs+B3ymfHV1bEmSJEmSemVolusPM5frS6u5zG48fyaSpGacH8bz\nZyKtNgrL9SVJkiRJ0gRM8iVNS9YXSpLUHudMabiY5EuSJEmSNCKsye8Ba/Kl1aylG8+fiSSpGeeH\n8fyZSKtZky9JkiRJ0ogzyZc0LVlfKElSe5wzpeFiki9JkiRJ0oiwJr8HrMmXVrOWbjx/JpKkZpwf\nxvNnIq1mTb4kSZIkSSPOJF/StGR9oSRJ7XHOlIbLuv0OQNL0kgSMW1Q0vWXl/0qSVBXOmc/zwhf2\nOwJp8FmT3wPW5EuDx5o+SZLa45wpDSZr8iVJkiRJGnEm+ZKmqVq/A5AkaUjU+h2ApA6Y5EuSJEmS\nNCKsye8Ba/KlwWN9oSRJ7XHOlAaTNfmSVHHccf2OQJKk4eCcKQ0Xk3xJ09LYWK3fIUiSNBScM6Xh\nYpIvSZIkSdKIsCa/B6zJlyRJkiR1kzX5kiRJkiSNOJN8SdNSrVbrdwiSJA0F50xpuJjkS5qWFi/u\ndwSSJA0H50xpuFiT3wPW5EuDx2f+SpLUHudMaTBZky9JkiRJ0ogzyZc0TdX6HYAkSUOi1u8AJHXA\nJF+SJEmSpBFhTX4PWJMvDR7rCyVJao9zpjSYrMmXpIrjjut3BJIkDQfnTGm4mORLmpbGxmr9DkGS\npKHgnCkNF5P8SYiIGRFxZETcGRFPRcR9EXFyRGzU79gkSZIkSdOXNfmTEBGnAUcA3wQuBbYtj38I\n7NVYgG9NviRJkiSpm1rV5K/bj2CGWURsR5HQX5iZ+1Xa7wFOB94LnN+n8CRJkiRJ05jL9Tu3f/l+\nakP7mcAy4MDehiNpMmq1Wr9DkCRpKDhnSsPFJL9zOwErgRuqjZn5DHBreV7SgDvppFv6HYIkSUPB\nOVMaLib5ndsCeDgzlzc5dz+weURYBiENuMsu+22/Q5AkaSg4Z0rDxSS/cxsBz7Q493SljyRJkiRJ\nPeUd584tAzZvcW4mkGUfSVMkYtwmopMc5/iujOPTMyRJo21JvwOQ1AGT/M49AMyLiPWaLNmfQ7GU\nf0XjRd1KSiQNHv//W5I06iLO6XcIktpkkt+5G4A3AzsD19QbI2ImMB+oNV7Q7NmFkiRJkiR1mzX5\nnbuAYkn+wob2w4ANgXN7HpEkSZIkSUBYS9q5iDgdOBy4CLgU2AY4ArgmM/foZ2ySJEmSpOnLO/mT\nsxD4O2A74HPAu4HTgbf3MyhpWEXEgoh4LiJ27WMMY2UMB/crBkmSplpELI6I5xraFpVz4CsmMd6k\nr5U0NazJn4TMfA74TPmSNDqyfEmSNMoa57q1mf+cO6UB4518SSpcRbGvxtf6HYgkSVOscVPoE4EN\nM/O+SYy1NtdKmgLeyZckIIsNSp7tdxySJPVaZq4EVvb6WklTwzv5kgbJemVt370R8XRE3BoR72ns\nFBE7RsRFEfFQ2e/OiDgqItZp6FeLiHsi4mURcX5EPBoRT0bEdyPi9xv6Nq3Jj4jNIuLsiHgkIp6I\niMsjYn597Ia+SyLiyoiYFxHfiYjHI+K3EfGNiHhJN39QkqTRUNmXZo+I+Eg5lyyLiOsj4k1ln7GI\nuCYilkbEAxHxkYYx3hIRF0TEL8prH4uIy9rd66ZVXX1EbBIRH4uI/4yIpyLi4Yj4YXVunuDauRHx\n1Yh4sJyrf16OtWFDv3F7BFTOPRcRX25oe19E3FD+G5dGxN0R8bWI2Lydf6s0HXgnX9Ig+SSwEcWG\nlgH8BXB+RMzMzHMAImIf4JvAXcDJwKPAG4ETgPkUG2HWJbAxcDVwHfBhYEvgb4BvRcRryj02aLiG\n8rs2AH4A/A/gy8AN5ecflN/brKZxDnBlGeO3ypj+F7AJ8MeT+JlIkqaHkyhuwJ0KbAD8b+C7EfGX\nwBeALwJfBd4DnBAR92Rm/dHNBwOzgcXAr4CXA4cCl0fE7pl5TafBRMRs4BpgW+AbwBnAOsDrgH0o\nHivd6tpXUsyZvwN8HvgZsDvFPPymiNizXAFQN1FNf3VePoji33g1cAzwFPAKYG/gRcDDnfwbpVFl\nki9pkGwGbJ+ZTwBExBeB24DPRMQ/UyT+/0SRsO9RSdDPjIhby367ZeZVZXsAmwOfysyT618SEQ8B\nnwL2Ar43QTx/SZHUH52Zn6hcfzvFLztLGvoH8Crg3Zn5L5X+zwF/FRGvzsy72v5pSJKmkxnALpm5\nAiAi/oPij8XnAjtn5s1l+9nAvcAHy3MAh2Xmsupg5Rz6U4rEep9JxPNxigT//Zl5VsPYjTX9za7d\nHHhbZn63bPtiRNxL8YSqg4Gzq0O2GdO+wOM8/3cAgOPavF6aFlyuL2mQfKGe4ANk5uMUdy5eSHEH\n4M3Aiyn+ir9pRGxefwGXlpe9pWHMlRSPuKy6snx/1Rri+RNgBXBaQ/tZFL9kNHN/NcHv8PskSdPX\nF+oJfql+9/26eoIPkJnLgRuB36+0rUrwI2JWRGwGPEdxN33nTgOJiBnAe4H/aEzwy+9reee9vPYd\nwM2VBL/uE2Vc+3YaU+m3FCv03t7GHxqkacs7+ZIGyX9O0LYlMKv8fHaTflAs6XtxQ9sDmdm4od4j\n5ftma4jn98rrn3d3JDOXl/X4L2hyzS+atLX7fZKk6et580dmPlbmsfc06fsYlTklIrYCPkZRFtY4\nNzWtd1+DzSmW///bJK59EUUi/tPGE+W/6dcU8+tkfBzYFbgYeCQirqL4I/8Fmbl0kmNKI8ckX9Kw\nqN41+Dvglhb9Hmg4nmjH36m4C9Dr75MkjYZW88eEO9dHxCyKGvUNgVOA24EnKJL7oyhWwg2ypqsC\nImJcnpKZP4+IbYE9y9duwJnA8RGxa2Y2+0O7NO2Y5EsaJNsClzRpg+IOx0bl52WZeUUP4lkC7BkR\nG2fmk/XGiFiP4i7Eoz2IQZKkZurJ8Z7Ay4C/qG9SWxcRH5/k2A9TrBaYP4lrH6L4I8N2jSci4oUU\nsd5caX60PDc7M39bad+y2eDl6rxLyxcRsTfwHeBvgcMnEa80cqzJlzRIPhARm9QPIuIFwP9H8YvG\nVcBlwG+AD5W/KDxPRGxY3tHolm9T7CT8Nw3th1Hsli9JUr/V7/Q/7/f6iHgL8PoW10y0mz3lpnbn\nA9tGxCGdBFNeewnwuohofKrMhyhWtV1Uafuv8v3NDX3/d+PYLR6T9+/l+7jfC6Tpyjv5kgbJQ8D1\n5TNx64/QezlwaGY+DcXzcSlq8f6r3GH4boq6wXkUG/m8k2LZYt3aLJE/i+LxdydGxKsoNjranuIx\nfT+n+AOAJEn9UJ/frgF+DfxDRMwF7qe4A38gxdL9P5jg2ol8BNgDOKv8g8G15XWvBdbJzPdNcO1R\nFEn7xRHxeYq5eleK+fMqoLri4HyKWvt/jIh5FH/YfyvN97H5XkQ8RvFv/iXF/L+AojThq238m6Rp\nwSRf0qBI4P9Q/BLwQeAlFH/dPyAz/3lVp8zvRcROFHcDDqTY4OcxiqT7Hyh+oamOOeHdiiYxrD7I\nfDYi9gQ+DfwpxS8nN1A8eu9MYOZE13dwTpI0vXU6R6ya3zLzt+Ud808BR1D8fv8TimfHHwq8ptW1\nE7WV476BImH/M4o/pD9BsaHeZ9dw7X0RsTNwAsVcPZsiKf84cGL18XeZ+UREvA34TPldS4ELgQMo\n5veqz1PMxe8HNqXY2PZm4IOVx+dK015M8AQMSVITEbEORb3idZn5tn7HI0mSJNVZky9JE4iIxrv1\nUOwT8ALg+z0OR5IkSZqQd/IlaQIR8TVgA+A64BngDcD+FOUBr6vuui9JkiT1m0m+JE0gIg6i2CPg\n1cAsis2N/g04JjMf6mdskiRJUiOTfEmSJEmSRoQ1+ZIkSZIkjQiTfEmSJEmSRoRJviRJkiRJI8Ik\nX5IkSZKkEWGSL0mSJEnSiDDJlyRJkiRpRPw/SccLILX0wcMAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 16 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Compare the area of the frame" ] }, { "cell_type": "code", "collapsed": false, "input": [ "df.boxplot('swf area', 'label')\n", "plt.xlabel('')\n", "plt.ylabel('Frame Area')\n", "plt.title('')\n", "plt.suptitle('')\n", "plt.ylim(0, 750000)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 17, "text": [ "(0, 750000)" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nUQAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 17 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Next compare the perimeter of the frame." ] }, { "cell_type": "code", "collapsed": false, "input": [ "df.boxplot('swf perimeter', 'label')\n", "plt.xlabel('')\n", "plt.ylabel('Frame Perimeter')\n", "plt.title('')\n", "plt.suptitle('')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 18, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 18 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Classification\n", "\n", "#### First we try classifying binaries based on some of features from the SWF header. The values we explored above. There didn't seem to be a lot of separation, so I'm not expecting great results. Yet." ] }, { "cell_type": "code", "collapsed": false, "input": [ "my_seed = 1022\n", "my_tsize = .2" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 19 }, { "cell_type": "code", "collapsed": false, "input": [ "import sklearn.ensemble\n", "clf_simple = sklearn.ensemble.RandomForestClassifier(n_estimators=50)\n", "simple_features = ['entropy', 'frame count', 'frame rate', 'size', 'swf area', 'swf perimeter', 'version']\n", "\n", "X = df.as_matrix(simple_features)\n", "y = np.array(df['label'].tolist())\n", "\n", "scores = sklearn.cross_validation.cross_val_score(clf_simple, X, y, cv=10)\n", "print(\"Accuracy: %0.3f (+/- %0.3f)\" % (scores.mean(), scores.std() * 2))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Accuracy: 0.963 (+/- 0.034)\n" ] } ], "prompt_number": 20 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 96.1%? That was better than I thought it would be. Let's break the numbers down a little more." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import sklearn.ensemble\n", "from sklearn.metrics import confusion_matrix\n", "from sklearn.cross_validation import train_test_split\n", "\n", "# 80/20 Split for predictive test\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)\n", "clf_simple.fit(X_train, y_train)\n", "y_pred = clf_simple.predict(X_test)\n", "labels = ['benign', 'malicious']\n", "cm = confusion_matrix(y_test, y_pred, labels)\n", "plot_cm(cm, labels)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Confusion Matrix Stats\n", "benign/benign: 96.04% (97/101)\n", "benign/malicious: 3.96% (4/101)\n", "malicious/benign: 3.25% (4/123)\n", "malicious/malicious: 96.75% (119/123)\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 21 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Fairly equal on IDing benign and malicious files. Next we will have the classifier tell use which features were most important and how important they were." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Feature Selection\n", "importances = zip(simple_features, clf_simple.feature_importances_)\n", "importances.sort(key=lambda k:k[1], reverse=True)\n", "for idx, im in enumerate(importances[0:10]):\n", " print (str(idx+1) + ':').ljust(4), im[0].ljust(20), round(im[1], 5)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1: entropy 0.27378\n", "2: swf perimeter 0.15704\n", "3: size 0.14867\n", "4: swf area 0.13079\n", "5: version 0.12864\n", "6: frame rate 0.11256\n", "7: frame count 0.04852\n" ] } ], "prompt_number": 22 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Tag Information\n", "\n", "\n", "#### Now we will add information about the tags present in the SWF file. We do not take into condsideration the number of each tags, just that they exist in the file. We also will take into consideration the number of tags. Again, we start by exploring some of these values." ] }, { "cell_type": "code", "collapsed": false, "input": [ "df.boxplot('tag count', 'label')\n", "plt.xlabel('')\n", "plt.ylabel('Number of Tags')\n", "plt.title('')\n", "plt.suptitle('')\n", "plt.ylim(0,400)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 23, "text": [ "(0, 400)" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAA+MAAAE7CAYAAAC2dlC7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmYZGV58P/vPaAMOOKIY0RwaZEIgpKOSnCFkkVNSAgx\ncXuD0hrAnwF0TPSNK/S470wwuASXwQgEDDoJP4O4wAHBBZcMiBFRoCWBgCwzERhkm/v945xiiprq\nnqqZ6j6ner6f6zpUPc95zqm7+7qY03c9W2QmkiRJkiRp7iyoOwBJkiRJkrY0JuOSJEmSJM0xk3FJ\nkiRJkuaYybgkSZIkSXPMZFySJEmSpDlmMi5JkiRJ0hwzGZckSZIkaY41KhmPiO0i4uqIWBcRH+9x\nfreIWBkRt0bE7RFxYUQ8f5p7LYiIN0bEFRFxZ0RcGxEfiYjtZv8nkSRJkiRpeo1KxoF3AUuq99l5\nIiKeCHwH2Af4IPBmYBFwbkQc0ONeJwAfBS4HjgG+BLweODsiYlailyRJkiSpD1vXHUBbRDwNeANl\nkv2xHk3eD2wPPD0zL6uu+QLwU+AkYPeOe+0JHAuclZkv6ai/BjgReDlw+uz8JJIkSZIkzawRPeMR\nsRVwMnAO8JUe5x8CHAIU7UQcIDPvAD4DPCki9u645BXV6/KuW50MrAUOG170kiRJkiQNphHJOPBG\nYDfK4eS9hpDvBTwY+G6Pc9+vXp/RUbc3cB9wSWfDzLwLuLQ6L0mSJElSLWpPxiPiCcAyYFlmXjtN\ns52q1+t6nGvX7dzV/ubMvGea9ksiojFD9CVJkiRJW5bak3HgU8Av6T1PvK29AvpdPc79tqtN+32v\nttO1lyRJkiRpztTaOxwRhwEHAs/LzPtmaLq2et2mx7mFXW3a75f0aNtun13tJUmSJEmaM7Ul4xGx\nDWVv+FeBGyNi1+pUe7j54mo7s5uB67vOdWrXdQ5hvx7YPSIe1GOo+s6UQ9jv7YonkSRJkiRpiDKz\n59badfaMb0vZe/3H1dHtsOp4E/BpymHnz+7R7pnV6w876i4BDqLck/yidmVELATGgaJXQJnm41LT\nTExMsGLFirrDkCSp8XxmSs0T0TMPB+pNxm8HXkI5ZLzT7wCfoNzm7LPAZZl5R0ScDbw4Ivbq2Gd8\nEXAEcGVm/qDjHmcAbwOW0pGMA0dSfglw6iz8PJIkSZIk9aW2ZLwaJn5Wd31EjFVvr8rML3eceitw\nAPD1iDgBuI0yuX40cHDXvS+PiJOAYyLiLMrE/snAsZR7lZ823J9G0mwZGxurOwRJkkaCz0xptIzM\n9l6ZeVVEPAf4APAWyn3HfwS8KDPP63HJUmAKOIoyWb8JOBE4bk4CljQUrVar7hAkSRoJPjOl0dK4\nZDwzp5hmy7XMvAI4tM/7rKNcIG6mLdMkSZIkSZpzTdhnXJIkSZKkLYrJuKSGa9UdgCRJI8Fh6tJo\nMRmX1GhFUXcEkiRJ0vCZjEtqtKmpou4QJEkaCYXfYEsjpXELuElSUazvET/lFGjv1NJqlYckSZI0\n6iIz646hESIi/V1IzTM5WR6SJEnSqIkIMjN6nXOYuqRG+9736o5AkiRJGj6TcUmN9stfFnWHIEnS\nSHDOuDRaTMYlNdqiRXVHIEmSJA2fc8YrzhmXmmP5cli5snx/wQWw337l+0MPhaVL64tLkiRJGsRM\nc8ZNxism41IzjY/DqlV1RyFJkiQNzgXcJI2sa68t6g5BkqSR4JxxabSYjEtqtG23rTsCSZIkafgc\npl5xmLrUHEVRHgDLlsHxx5fvW63ykCRJkkaBw9QlSZIkSWoQe8Yr9oxLzTQ+XrBqVavuMCRJaryi\nKGg5hExqFHvGJY2sBz+47ggkSZKk4TMZl9Roe+zRqjsESZJGgr3i0mgxGZfUaGNjdUcgSZIkDd/W\ndQcgSd0euJp6AbQAV1OXJGkmzhmXRkutyXhE7AYcBzwNeDTwIOA64BvARzLzmo62k1XbXt6UmR/r\nuvcC4A3Aa4HHAzcBZwLHZeba4f4kkoapM+memoLJyfpikSRJkmZD3T3jOwM7AmcB/w3cC+wFvBr4\nPxHxtM6EvLIUuLmr7kc97n0CcCzwZeDDwB7A64Hfj4gDXTpdGg1jY626Q5AkaSTYKy6NllqT8cw8\nDzivuz4iLqTsxT4cmOw6vTIzr53pvhGxJ2UiflZmvqSj/hrgRODlwOmbFbykOeHfFZIkSZqPmrqA\nWzvZvrvHuYiI7SNipi8SXlG9Lu+qPxlYCxy2mfFJmiOrVhV1hyBJ0kgo2guuSBoJjUjGI2KbiFgS\nEY+JiBcAn6ZMyD/bo/llwBrgzoi4OCJe1KPN3sB9wCWdlZl5F3BpdV7SCFi1qu4IJEmSpOFrRDIO\nHAn8mjIB/xpwD/C8zLyxo81qyiT9GOAQ4K2UC7N9NSIO77rfTsDNmXlPj8+6DliykZ51SQ3hnHFJ\nkvrjnHFptEQT1jGLiJ2B3YBFlCurHwv8L3BgZl49w3U7AJcDC4HHZuYdVf1VwFaZOdbjmi9QDlNf\nnJm/6ah3TTepIR64tRkcf3z53q3NJEmSNEoigsyMnueamIBGxFOBHwDnZuafbqTtcZSLvL0wM79R\n1f0EWJKZj+7R/kzgz4FtMvPejnqTcamBJiYKVqxo1R2GJEmN5z7jUvPMlIw3cqh2Zv4kIlYB+/XR\n/FfV6yM66q4Hdo+IB/UYqr4z5RD2e7vqmZiYYGxsDIDFixczPj5+/z9o7QUxLFu2PLflG25oVjyW\nLVu2bNlyU8urqoVWmhKPZctbYrn9fmpqio1pZM84QERcCjwmMx+xkXbvAd4GHJCZ51d17wbeDuyb\nmRd1tF0I3AIUmXlw133sGZcaaGICVqyoOwpJkiRpcDP1jC+Y62A6RcSjpql/PvAU4FtVeauIeFiP\ndo8FXgfcDHyn49QZQAJLuy45EtgWOHWzg5c0J6rBKpIkSdK8Uvcw9U9FxI7AeZQrqS8Eng68DLgR\n+Luq3UOBayLiK8AVlCur7wYcAWwHvKLatgyAzLw8Ik4CjomIs4BzgCdTLgxXZOZpc/HDSdo0RVEe\nAMuWFUALgFarPCRJ0oaKorh/yKyk5qs7GT8NeBXwSuCRlL3ZVwMnAh/KzJuqdmuBfwH2AQ6lXHX9\nJuDrVbsf9rj3UmAKOAo4uGp/InDcLP0skoakM+memoLJyfpikSRJkmZDY+eMzzXnjEvNNDlpMi5J\nkqTR1Ng545K0MY62kyRJ0nxkMi6p4Yq6A5AkaSR0bq0kqflMxiVJkiRJmmMm45IarlV3AJIkjQRX\nUpdGi8m4pEZzxJ0kSZLmI5NxSY02NVXUHYIkSSPBOePSaKl7n3FJ2kBRrO8RP+UUGBsr33fuPy5J\nkiSNMvcZr7jPuNRMrZZD1SVJkjSa3GdckiRJkqQGcZi6pMbpHKZ+wQUFk5MtwGHqkiTNpCgKV1SX\nRojJuKTG6Uy6p6ZgcrK+WCRJkqTZ4DB1SY02NtaqOwRJkkaCveLSaDEZl9Ro/l0hSZKk+chkXFLD\nFXUHIEnSSHCfcWm0mIxLkiRJkjTH3Ge84j7jkiRJkqRhcp9xSZIkSZIaxGRcUqM5/02SpP74zJRG\ni8m4pEZbtaruCCRJkqThMxmX1Ghr1rTqDkGSpJHgPuPSaKk1GY+I3SLi1Ij4WUSsiYg7IuLKiDgp\nIp4wTfuVEXFrRNweERdGxPOnufeCiHhjRFwREXdGxLUR8ZGI2G72fzJJkiRJkqa3dc2fvzOwI3AW\n8N/AvcBewKuB/xMRT8vMawAi4onAd4C7gQ8CvwGOBM6NiD/MzG913fsE4Fjgy8CHgT2A1wO/HxEH\nunS61FxFUR4Ay5YVQAuAVqs8JEnShoqisHdcGiG1JuOZeR5wXnd9RFwInAkcDkxW1e8HtgeenpmX\nVe2+APwUOAnYveP6PSkT8bMy8yUd9dcAJwIvB04f/k8kaRg6k+6pKZicrC8WSZIkaTY0dc74tdXr\n3QAR8RDgEKBoJ+IAmXkH8BngSRGxd8f1r6hel3fd92RgLXDYbAQtafjGxlp1hyBJ0kiwV1waLY1I\nxiNim4hYEhGPiYgXAJ+mTMg/WzXZC3gw8N0el3+/en1GR93ewH3AJZ0NM/Mu4NLqvKQR4N8VkiRJ\nmo82OxmPiGdExEERsXAzbnMk8GvKBPxrwD3A8zLzxur8TtXrdT2ubdft3FG3E3BzZt4zTfslEVH3\nfHlJfSnqDkCSpJHgPuPSaOk7GY+IN0XE2V11p1P2Pp8LXB4Rj9rEOL4CHAgcCrwLeCJwQUTsUp1v\nr4B+V49rf9vVpv2+V9vp2kuSJEmSNGcG6R1+OR3DviNif+BllAuh/QR4B/B3wN8MGkRmXsf6Hu5/\ni4izgB9Qroj+p5TzvAG26XF5u0d+bUfdWmDJNB+3EMiu9gBMTEwwNjYGwOLFixkfH79/7k37m0bL\nli3PbbnVajUqHsuWLVu2bLmp5XZdU+KxbHlLLLffT01NsTHR7w5fEXEzMJmZ/1CVTwT+AnhMZq6L\niI8Ah2Tmk/q64cY/73vAbpn58Ih4FnAx8J7MPK6r3UGUPfNHZ+Ynq7pzgf2B7bqHqkfExcCumfmo\nrnp3O5MkSZIkDU1EkJnR69yCAe7zEODOjvL+wDczc11V/hnwmE0Lsadtgfa9f0I57PzZPdo9s3r9\nYUfdJcBWwD6dDat57eNdbSU1WOe3jJIkaXo+M6XRMkgyfj3lquZExOOBPYALOs4/nOnnafc03Rzz\niHg+8BTgWwCZeTtwNtCKiL062i0CjgCuzMwfdNziDMqh6Eu7bn0kZZJ/6iBxSqrPqlV1RyBJkiQN\n3yBzxv8NODoitqLsjb4b+GrH+T2BqQE//1MRsSNwHuVK6guBp1PORb+Rcg5621uBA4CvR8QJwG2U\nyfWjgYM7b5qZl0fEScAx1fzzc4AnA8cCRWaeNmCckmqyZk2r7hAkSRoJnXPHJTXfIMn4uyl7xv+a\nsgf8DZl5A0BEbAe8mPX7gvfrNOBVwCuBR1L2Zl8NnAh8KDNvajfMzKsi4jnAB4C3UO47/iPgRZl5\nXo97L6X8cuAoymT9puq+x/VoK0mSJEnSnOl7Abf7L4h4GHBnZt7dUbctsBtwbWbeOtwQ54YLuEnN\nURTlAbBsWcHxx7cAaLXKQ5IkbahzJXVJzTDTAm4DJ+Pzlcm41Ex/8AcFl1zSqjsMSZIab/nygqVL\nW3WHIanDTMl438PUI2LfjTRJytXWr83MXw8QnyRN69e/btUdgiRJI8F1VqTRMsic8aJ6TaA7s39A\nXUT8BHhLZp6zWdFJ2uJtPci/UpIkSdKIGOTP3NcARwO/S7k12JVV/W7AX1blU6ryq4B/i4gXTrO4\nmiRNa/lyWLmyfH/VVevnvx16KCzt3rBQkqQtWPc6K9ACXGdFGgV9zxmPiL8G/i+wT2be2HVuR+B7\nwEcz8+MR8WjgUuDSzDxoyDHPCueMS820ww4Ft97aqjsMSZIab3y8YNWqVt1hSOowlDnjlFuFndyd\niANk5g0RcTLlPt4fz8z/qcpHb1LEkrZond/yr17dYnKyfO+3/JIkTW/x4lbdIUgawCDJ+OOAO2Y4\nv7Zq0zYFLNyEmCRt4TqT7i9+kfuTcUmS9ECdX2BfcAF+gS2NkEGS8V8BfxkRn+jcYxwgIrahnDf+\nq47qnYFbNj9ESVuazj8srrqqYHKyBfiHhSRJ3TqfjVNT65+ZkppvkGR8OXAScElEfBL4eVW/O/A6\n4KnAMR3t/xy4ZBhBStqydP5h8b3v2TMuSZKk+afvZDwzPxkR2wOTwCe7Tt8FvC0zPwH395S/GfjF\nkOKUtIXaccdW3SFIkjQSJiZadYcgaQB9r6Z+/wUROwAHAU+oqq4BvpGZtw45tjnlaupSM01MwIoV\ndUchSZIkDW5Yq6kDUCXdZ2x2VJLUhxtuKGjvmSpJkqZXFAUtF1eRRsbAybgkzbbOBdzOPdeVYSVJ\nkjT/DDRMPSJ2Bd4I7AMsBhZ0ngYyM3cZaoRzxGHqUjO1WusTc0mSJGmUDGWYekQ8FbgYeDBwJbAL\n8FNgCfAo4Crgvzc7WklbPPdMlSRJ0nzXd894RHwFeB7wXOBm4NfAQZn5rYg4Eng/sG9m/udsBTub\n7BmXmmn33QuuuKJVdxiSJDWec8al5pmpZ3xBr8ppPBf4x8y8ovtEZp4MnAN8cNNClKTe1qypOwJJ\nkiRp+AZJxh8K/LJ6f3f1+pCO8xdTJuySNDTuMy5JUn/sFZdGyyCrqd8I7Fi9vw24A9it4/xiYKsh\nxSVpC7Z8OaxcWb6/9NL188QPPRSWLq0tLEmSJGloZpwzHhGvAi7MzKmI+Dfg3sx8cXXu/wd+DziM\nsof9n4BrMvN5fX94xJOq619AuSDcQsqF4L4ELM/MtR1tJ4HjprnVmzLzY133XgC8AXgt8HjgJuBM\n4LjO+3a0d8641EDj4wWrVrXqDkOSpMZzzrjUPJuzmvoKymR5CjgVODoits3MO4F3AhcC51dt1wJv\nGzC21wB/DfwrZTJ/D7A/8B7gpRHxzMz8bdc1SykXkOv0ox73PgE4Fvgy8GFgD+D1wO9HxIFm3pIk\nSZKkuvQ9TD0zzwDO6Cj/R0TsCfwZcB/w75l59YCf/yXgvZl5W0fdP0bEL4C3A38FnNR1zcrMvHam\nm1ZxHQuclZkv6ai/BjgReDlw+oCxSqrBxESr7hAkSRoJ9opLo2WQBdw2kJnXZubfZ+Y/bEIiTmb+\nqCsRbzuzet2zx7mIiO0jYqYvEl5RvS7vqj+Zsgf/sMEilVQX54hLkiRpPtqsZHwWPaZ6vbHHucuA\nNcCdEXFxRLyoR5u9KXvrL+mszMy7gEur85JGQFEUdYcgSdJI8JkpjZZ+hqkfFREH9nvDzHzNZsRD\nRGxFOR/9HuC0jlOrgU8D36ne7045f/yrEfGazDylo+1OwM2ZeU+Pj7gOeFZEbJ2Z925OrJIkSZIk\nbYqNraa+btAbZuZm9bZHxMeBo4G3ZuYHN9J2B+ByylXYH5uZd1T1VwFbZeZYj2u+QDlMfXFm/qaj\n3jXdJEmSJElDszmrqQO8kXK181kXEe+mTMQ/vbFEHCAzb42ITwGTwLOBb1Sn1gJLprlsIZBVG0mS\nJEmS5lw/yfhNmTk124FU+4i/HfhcZr5ugEt/Vb0+oqPuemD3iHhQj6HqO1MOYd9giPrExARjY2MA\nLF68mPHx8ftXpWzPwbFs2fLclpcvLxgfpzHxWLZs2bJly00tL1++3L9fLVuuudx+PzU1xcb0M0z9\nsMw8baN32gxVIn4csGLQOecR8R7K/c0PyMzzq7p3Uyb2+2bmRR1tFwK3AEVmHtx1H4epSw00MVGw\nYkWr7jAkSWq8oijuTwwkNcNMw9QXzHUw3SLiOMpE/AvTJeIRsVVEPKxH/WOB1wE3Uy7s1nYG5VD0\n7k2RjgS2BU4dQuiS5kSr7gAkSRoJJuLSaNnYMPULgV/P1odHxNGU872vBb4VEd37f9+Qmd8EHgpc\nExFfAa6gXE19N+AIYDvgFdW2ZQBk5uURcRJwTEScBZwDPBk4lrJXfFZ7+iVtnqIoD4BTToFq9git\nVnlIkiRJo27GYeqz/uERnwde1S72aFJk5v4R8WDgJGAfyj3IFwE3ARcDH8rMH/a49wLKnvGjgLGq\n/RnAcZm5weJtDlOXmml8vGDVqlbdYUiS1HgOU5eaZ3NXU581mflq4NV9tLubcoj5IPdeB3ysOiSN\nkM6e8UsvhcnJ8r0945IkSZovau0ZbxJ7xqVmmpiAFSvqjkKSJEkaXKMXcJMkSZIkaUtjMi6p0W64\noag7BEmSRkLnPseSmm/aZDwiromIQzrKx0fEU+YmLEkq7bhj3RFIkiRJwzfTAm6PpdxSrO144BfA\n5bMakaQt3gO3Nmu5tZkkSX1wJXVptMyUjF8P7AWcOkexSBKwYdLdXk1dkiRNryj80loaJTMl4yuB\nN0fEC4HVVd3bI+KImW6YmfsPKzhJ+t73CqBVcxSSJDXfihXuMy6NkpmS8bdQJuEHAY+v6h4JPGSG\na9wbTNJQTU3VHYEkSZI0fH3vMx4R64BXZua8HLbuPuNSM42NmZBLkjSdznVWli2D448v37vOitQM\nM+0zPkgyPgFckJnXDDG2xjAZl5rDPywkSRrci14EX/ta3VFI6jRTMj7TMPUHyMwVHTdcAoxVxWsy\n85bNCVCSOq1atT4Zh4KiaAGweLHJuCRJ01m1qsB1VqTR0XfPOEBEjAMnAs/tqE7gIuD1mXnpcMOb\nO/aMS8207bYFd97ZqjsMSZIab9ddC375y1bdYUjqMKxh6k8BvgssBM4G/rM6tQdwCLAWeFZm/nSz\nI66BybjUTIsWwe231x2FJEnNtHw5rFxZvr/gAthvv/L9oYfC0qX1xSWpNKxk/MvA84H9MvOyrnNP\nAb4NnJ+ZL97MeGthMi41h3PGJUkaXKvVOc1LUhPMlIwvGOA++wIndSfiAJl5OXBS1UaShqioOwBJ\nkkbCmjVF3SFIGkDfC7hR7i/+PzOcvwFYtHnhSNIDe8BXroTJyRqDkSRpRCzyL3FppAzSM34N8Ccz\nnD8YuHrzwpGkBxofb9UdgiRJI2HrrVt1hyBpAIMk46cAL4iI0yPiKRGxVXU8NSJOA14IrJiVKCVt\nsSYm6o5AkiRJGr5Bhql/FHga8LLquK+q36p6PbNqI0lDVOCeqZIk9fbA1dQLWtU8L1dTl5pvoH3G\nASLiIODPgCdUVVcDX8nMbw45tjnlaupSMxXF+j8sJEnS9MbHC1atatUdhqQOQ9nabDZExJOAw4AX\nALtQ7mF+FfAlYHlmru1qvxvwQcpV2x8M/Bg4PjPP73HvBcAbgNcCjwduouy9P677vlV7k3FJkiSN\nLLc2k5pnWFubzYbXAEuBXwDLgDcBPwfeA3wnIha2G0bEE4HvAPtQJuRvply9/dyIOKDHvU+gHDZ/\nOXAMZYL/euDsiOj5y5AkSZJG1aGH1h2BpEHU3TP+dODKzLytq/7dwNuBYzPzpKruTMrh8U9v73Ue\nEQ8Bfgr8NjN377h+T+AnwFmZ+ZKO+mOAE4G/zMzTuz7TnnFpiJr2nZf/f0uS5jundknN09ie8cz8\nUXciXjmzet0T7k+6DwGKdiJeXX8H8BngSRGxd8f1r6hel3fd92RgLeXQeEmzKDOHcpx//vlDuY8k\nSZLUJHUPU5/OY6rXG6vXvSjniH+3R9vvV6/P6Kjbm3K190s6G2bmXcCl1XlJI6AoWnWHIEnSiGjV\nHYCkATQuGY+IrYB3AvcAp1XVO1Wv1/W4pF23c0fdTsDNmXnPNO2XRMQg27pJqsmyZXVHIEnSaHDx\nNmm09JWMR8S2EXF4ROwz2wFRDi1/JuWq57+o6rarXu/q0f63XW3a73u1na69pMYq6g5AkqSRMDVV\n1B2CpAH02zt8N+V869ezflj40FULtx0NfDozP9hxqr0V2TY9LlvY1ab9fsk0H7MQyK72kiRJ0sgp\nivU94qecAmNj5ftWqzwkNVdfyXhm3hcR/wVsP1uBRMQk5Qrqn8vM13Wdvr563ZkNtes6h7BfD+we\nEQ/qMVR9Z8oh7Pd232hiYoKx6l+wxYsXMz4+fv+KlEX1r5xly5bnutxqWDyWLVu2bNlys8qTk2V5\nagparaL2eCxb3pLL7fdTU1NsTN9bm0XEO4GXAntn5m831n4QVSJ+HLAiM1/T4/wi4Cbg4sw8sEdc\ny4B9MvMHVV17a7R9M/OijrYLgVuAIjMP7rqPW5tJDRQB/q8pSdLGTU6Wh6TmGNbWZt8B7gX+IyJe\nHxEvioh9u49NCO44ykT8C70ScYDMvB04G2hFxF4d1y4CjqDcq/wHHZecQTkUfWnXrY4EtgVOHTRO\nSfU4/PCi7hAkSRoJN99c1B2CpAEMsqL4Nzred+/f3ZbAVv3eMCKOBiaBa4FvRUT3/t83ZOY3q/dv\nBQ4Avh4RJwC3USbXjwYe0MudmZdHxEnAMRFxFnAO8GTgWMpe8dP6jVFSvSYm6o5AkqTRcPvtdUcg\naRCDJOM9e6030zMoE/jHAqf0OF8A3wTIzKsi4jnAB4C3UO47/iPgRZl5Xo9rlwJTwFGUyfpNwImU\nvfCSRkR7Ho4kSZrZ2Fir7hAkDaDvOePznXPGJUmSNGqKojwAli2D448v37da5SGpXjPNGTcZr5iM\nS81UFIW945Ik9WFiomDFilbdYUjqMKwF3IiIx0XE5yPiuoi4JyL2r+p/p6rfexgBS5IkSZI0n/Wd\njEfEE4AfAi8GfkrHQm2Z+WvK+d9HDDtASVu2omjVHYIkSSNhYqJVdwiSBjDIPuOnAfsDfwCsBX4N\nHNhePC0iPgj8cWbuOUuxziqHqUvN5D7jkiRJGlXDGqZ+IPCJzLx2mvO/olwVXZKGqKg7AEmSRkLR\nXslN0kgYJBnfHrh+hvMPZrCt0iRJkiRJ2iINkoz/NzDTEPR9gF9uXjiS1K1VdwCSJI0Edx+RRssg\nyfhZwF9FxFOBB8zgjIg/B14KnDnE2CRJkiRJmpcGScbfB/wX8D3gi1Xd30XE94AvAZcCHx1ueJK2\ndIcfXtQdgiRJI8E549Jo6TsZz8z/BZ4NfAZo7yd+EPAk4CSglZl3Dj1CSVu0iYm6I5AkSZKGr++t\nzR5wUUQAjwQCuCkz1w07sLnm1maSJEmSpGGaaWuzTUrG5yOTcUmSJEnSMA1rn3Gi9LKI+OeI+H51\nnB4RLxtOqJL0QM5/kySpPz4zpdHS977gEfEQ4F+B/auq/61e9wZeFhGvBf4kM+8YboiSJEmSJM0v\ng/SMv5cyET8R2CkzH56ZDwd2rupalCuuS9LQFEWr7hAkSRoJ7jMujZa+54xHxP8A387Ml05z/kvA\nczPz0UOMb844Z1xqpgjwf01JkiSNomHNGd8eOG+G8+cDDxskMEnauKLuACRJGgnLlxd1hyBpAIMk\n4z8BfneG87sCl21eOJIkSZI2xapVdUcgaRCDJOPvAI6KiEO6T0TEnwJHAm8bVmCSVGrVHYAkSSNh\nbKxVdwiSBjDtauoR8Xmge6bm1cDKiLgC+FlV92RgN+By4DBmHsouSZIkaUiKojwAli1bX99qlYek\n5pp2Abfy5eRAAAAZzUlEQVSIWLcpN8zMvnvbI+KtwNOApwNjwK8y8wnTtJ0EjpvmVm/KzI91tV8A\nvAF4LfB44CbgTOC4zFzb4/4u4CY10MREwYoVrbrDkCSp8XxmSs0z0wJu0/aMD5JUb4b3ArcAP6Zc\n/K2fbHgpcHNX3Y96tDsBOBb4MvBhYA/g9cDvR8SBZt7SaJiYqDsCSZIkafimTcbnyC6ZOQUQEZcD\n2/VxzcrMvHamBhGxJ2UiflZmvqSj/hrKPdFfDpy+qUFLmjvumSpJUn8mJlp1hyBpAHPR+z2tdiI+\noIiI7SNipi8SXlG9Lu+qPxlYSzm3XZIkSZo3/P5aGi0DJeMR8ZyIOC0iLomIqyLi6o7jmoi4erYC\n7XAZsAa4MyIujogX9WizN3AfcElnZWbeBVxanZc0Aor2qjSSJGlGPjOl0dL3MPWIOBL4NHAX8HPg\nv3o0m8152Kurz/9O9X53yvnjX42I12TmKR1tdwJuzsx7etznOuBZEbF1Zt47i/FKkiRJktTTtKup\nb9CwnG+9GnhBZnYvoLb5gVRzxjNzlwGu2YFyS7WFwGMz846q/ipgq8wc63HNFyiHqS/OzN901Lum\nm9RAk5PlIUmSJI2amVZTH2SY+qOAz8xGIr6pMvNW4FPAYuDZHafWAttMc9lCyh78DbY3k9Q8nXum\nSpIkSfPFIKupXwHsMFuBbIZfVa+P6Ki7Htg9Ih7UY6j6zpRD2DcYoj4xMcHY2BgAixcvZnx8/P6V\nnNtzcCxbtjzX5YL2FLhmxGPZsmXLli03s7x8+XL/frVsueZy+/3U1BQbM8gw9T8HPg7snZnX9XXR\nADZlmHp13XuAtwEHZOb5Vd27gbcD+2bmRR1tF1Lua15k5sFd93GYutRAEQWZrbrDkCSp8ZYvL1i6\ntFV3GJI6zDRMve+e8cw8KyIeBvwsIlYC11CuWN7d7l2bHOk0ImIrYFFm/m9X/WOB1wE3Uy7s1nYG\nZYK+FLioo/5IYFvg1GHHKGm2tOoOQJKkkbBmTavuECQNYJDV1J8MLAMWMfM+3X0n4xHxSuDxVfGR\nwIMi4h1VeSozv1i9fyhwTUR8hXK4/GpgN+AIYDvgFdW2ZQBk5uURcRJwTEScBZwDPBk4lrJX/LR+\nY5QkSZIkadgGmTN+EvBw4A2Uvc2rh/D5rwH2q963x4i3k/kCaCfja4F/AfYBDqX8QuAm4OvAhzLz\nhz3uvRSYAo4CDq7anwgcN4S4Jc2Rww8vsHdckqTeiqI8AJYtK2g/M1ut8pDUXIPMGb8d+GhmHj+7\nIdXDOeNSMxVFcf/CGJIkaXoTEwUrVrTqDkNSh2FtbfYb4NfDCUmS+mMiLklSf8bGWnWHIGkAgyTj\n/wy8eLYCkSRJkrTp/P5aGi2DJOMnAw+NiH+NiAMi4gkR8bjuY7YClbRl6tyzUZIkTW/VqqLuECQN\nYJAF3H7a8f5PpmmTwFabHo4kSZKkTbFqVd0RSBrEIMl4P1uWuQKapKEqipbD7iRJ6oNzxqXR0vdq\n6vOdq6lLzRQB/q8pSVJvD9zaDI6v9j1yazOpGWZaTd1kvGIyLjVTREFmq+4wJElqPLc2k5pnpmS8\n72HqEbFvP+0y88J+7ylJkiRJ0pao757xiFg3w+kEAsjMHMkF3OwZl5rJYeqSJPWnKByaLjXNUIap\nR8REj+qtgV2AVwNTwKcy85RNC7NeJuNSM5mMS5IkaVQNZZh6Zq6Y4QM+DPyYsndckobm8MMLoFVz\nFJIkNV9RFLTsGpdGxoJh3CQzVwOfAd48jPtJUtvERN0RSJIkScM3tNXUI+Jo4KOZuXAoN5xjDlOX\nJEmSJA3TTMPUh9IzHhHbAocBNwzjfpIkSZIkzWeDbG32ecpV07vtADwbWAL83yHFJUmA898kSeqX\nz0xptPSdjAOHT1N/K3AlsDQzT9v8kCRJkiRJmt8GWU19KEPaJWkQRdFyz1RJkvpgr7g0Woa2gNuo\ncwE3qZncZ1ySJEmjatYXcJOk2VPUHYAkSSOhKIq6Q5A0gBmHqUfE2fRetG1amXnIZkUkSZIkSdI8\nN+Mw9YhYN+D9MjO36vvDI94KPA14OjAG/CoznzBD+92ADwL7Ag8Gfgwcn5nn92i7AHgD8Frg8cBN\nwJnAcZm5tkd7h6lLDeQwdUmSJI2qTR6mnpkLNnYAzwd+UF0y6D7j7wVawC+A1czQCx8RTwS+A+xD\nmZC/GVgEnBsRB/S45ATgo8DlwDHAl4DXA2dHRM9fhiRJkiRJc2GT54xHxFMj4t+B84HdgHcCuw54\nm10y85GZ+ULgfzbS9v3A9sALM/ODmflJ4HnA9cBJXbHtCRwLnJWZf5GZn83MvwX+hvLLg5cPGKek\nmhx+eFF3CJIkjQTnjEujZeBkPCIeFxGnAP8B7A/8PfDEzHxvZt45yL0yc6rPz3wIcAhQZOZlHdff\nAXwGeFJE7N1xySuq1+VdtzoZWAscNkickuozMVF3BJIkSdLw9Z2MR8QOEfFR4OeUyew/A7tn5hsz\n85bZCrCyF+Uc8e/2OPf96vUZHXV7A/cBl3Q2zMy7gEur85JGgHumSpLUH5+Z0mjZaDIeEQsj4i3A\nVcAbgQuBp2fmYf32bA/BTtXrdT3Otet27mp/c2beM037JREx40rykiRJkiTNlhmT8Yg4Avgl8L7q\n9aDMfGFmrpqL4DpsV73e1ePcb7vatN/3ajtde0kN5fw3SZL64zNTGi0b6x3+x+r1h5Tbgv1eRPze\nTBdk5seGEViX9lZk2/Q4t7CrTfv9kmnutZBy1fYNtjebmJhgbGwMgMWLFzM+Pn7/cJ/2P26WLVu2\nbNmyZcuWLTexvGrVqkbFY9nyllhuv5+ammJjhr3PONV2ZwOLiMuB7TJzlx7nngVcDLwnM4/rOncQ\ncC5wdLXCOhFxLuXictt1D1WPiIuBXTPzUV317jMuNdDkZHlIkqSZFQVUeYGkhphpn/GN9YzvPwvx\nbIqfUA47f3aPc8+sXn/YUXcJcBDlnuQXtSsjYiEwDhSzEqWkoVu2zGRckqR+mIxLo2XGZDwzizmK\nY0aZeXtEnA28OCL2am9vFhGLgCOAKzPzBx2XnAG8DVhKRzIOHAlsC5w6N5FL2nwF0Ko5BkmSmm9q\nqsBnpjQ6al1RPCJeCTy+Kj4SeFBEvKMqT2XmFzuavxU4APh6RJwA3EaZXD8aOLjzvpl5eUScBBwT\nEWcB5wBPBo4Fisw8bbZ+JkmSJGmuFEV5AJxyClTLH9Fq2UsuNd2Mc8Zn/cMjzgf2q4rtQNrj6YvM\n3L+r/e7AB6prHgz8CJjMzPN63HsBZc/4UcAYcBNlj/lxmbnB4m3OGZeaKQL8X1OSpI1znRWpeTZn\nzvisysznD9j+CuDQPtuuAz5WHZIkSZIkNcYmrXwuaX7bYYeyR7oJBxS1xxBR/k4kSWqyxYuLukOQ\nNIBae8YlNdPq1c0ZGt6UlWGj5+AiSZKaY3y87ggkDaLWOeNN4pxxaT3naW/I34kkSZIGNdOccYep\nS5IkSZI0x0zGJTVa0d6vRZIkzchnpjRaTMYlSZIkSZpjzhmvOGdcWs/50RvydyJJkqRBOWdckiRJ\nkqQGMRmX1GjOf5MkqT8+M6XRYjIuSZIkzQOrVtUdgaRBmIxLarRWq1V3CJIkjYQ1a1p1hyBpACbj\nkiRJkiTNsa3rDkCSZlIUhb3jkiRNoyjKA2DZsgJoAdBqlYek5jIZlyRJkkZUZ9I9NQWTk/XFImkw\nDlOX1Gj2ikuS1J+xsVbdIUgagMm4JEmSNA/4/bU0WkzGJTWae6ZKktSvou4AJA3AZFySJEmSpDkW\nmVl3DI0QEenvQipFgP87PJC/E0mSJA0qIsjM6HVupHrGI2LdNMdtPdruFhErI+LWiLg9Ii6MiOfX\nEbckSZIkSZ1GKhmvXAgc1nW8prNBRDwR+A6wD/BB4M3AIuDciDhgTqOVtFmcMy5JUn98ZkqjZRT3\nGb86M0/bSJv3A9sDT8/MywAi4gvAT4GTgN1nN0RJkiRJkqY3UnPGI2IdcApwFLBNZt7eo81DgFuA\nb2fmQV3n3gG8C9gnM3/Qdc4541LF+dEb8nciSZKkQc2bOeOVvwDWAr+JiBsj4sSI2L7j/F7Ag4Hv\n9rj2+9XrM2Y5RkmSJEmSpjVqyfglwPHAnwOvAs4DjgG+XfWIA+xUvV7X4/p23c6zGaSk4XH+myRJ\n/fGZKY2WkZoznpnP7Kr6YkRcBrwXeAPwPmC76txdPW7x2+p1ux7nJEmSJEmaE6PWM97Lh4G7gT+q\nymur1216tF3Y1UZSw7VarbpDkCRpJPjMlEbLSPWM95KZ90bE/wBLqqrrq9deQ9Hbdb2GsDMxMcHY\n2BgAixcvZnx8/P5/1NrDfixb3hLKUFAUzYmnKWVoVjyWLVu2bNmyZcuWm1Vuv5+ammJjRmo19V4i\nYiFwG/CdzNwvIhYBNwEXZ+aBXW3fCSzD1dSlGTVp5fCiKO7/R65OTfqdSJLUS1OemZLWmxerqUfE\nDtOcejewFXA2QLXd2dlAKyL26rh+EXAEcGV3Ii5JkiRJ0lwamZ7xiDgB2Ac4H/gvYBHlPPEW8D3g\n+Zl5V9X2iZQrr98DnEDZc34ksCdwcGZ+o8f97RmXKvYCb8jfiSSp6ZYvh6VL645CUqeZesZHKRk/\nBPhr4CnAI4D7gCuBM4GPZebdXe13Bz4A7Ee57/iPgMnMPG+a+5uMSxUTzw35O5EkNd34OKxaVXcU\nkjrNi2R8tpmMS+s1KfFsyvy3Jv1OJEnqZccdC264oVV3GJI6zJSMj/xq6pIkSdKWavlyWLmyfH/j\njdD+/vrQQx2yLjWdybikRmtCr7gkSU01Pg5r1pTvL7igdX8yPj5eW0iS+uQw9YrD1KX1HJK9IX8n\nkqSmW7x4fWIuqRnmxdZmkrZMRVHUHYIkSSNh662LukOQNACHqUuSJEkjqijKA+CWW2Bysnzfaq2f\nPy6pmRymXnGYurSeQ7I35O9EktR0O+wAt95adxSSOrmauiRJkjQPdfaMr15tz7g0SpwzLqnRnDMu\nSVK/iroDkDQAe8YlSZKkEbVq1fqecVj/fvFie8alpnPOeMU549J6zo/ekL8TSVLTLVgA69bVHYWk\nTs4ZlyRJkuahzjnjmc4Zl0aJPeMVe8al9ZrUC1wUBa0G/DXRpN+JJEm9RBRktuoOQ1KHmXrGXcBN\nkiRJGlHPfS4sXFgesP79c59bb1ySNs6e8Yo949J69gJvyN+JJKnpfFZJzeOccUmSJGkeipi+bGIu\nNZvJuKRGa8qccUmSmuj889cv4LZsWcHxx7cAF2+TRoHJuCRJkjSi3vEO+OEP15c/8IHy9ZvfhIsu\nqicmSf1xznjFOePSes4525C/E0nSbInuseabbB3DWJ/Zv4ml4XHOuKSBJAHD+rtgnsiO/0qSNEzD\nSn7LL459Vkmjwq3NJG0gyLIbuAFHcf75tcdAZvk7kSSp0Yq6A5A0gHmbjEfEgoh4Y0RcERF3RsS1\nEfGRiNiu7tgkSZIkSVu2eTtnPCL+HjgW+DJwDrBHVf42cGD3BHHnjEvrOT96Q/5OJEm97LADrF5d\ndxTN8vCHw6231h2F1Axb3JzxiNiTMvE+KzNf0lF/DXAi8HLg9JrCk0bC0NaSmSce/vC6I5AkNdGt\nq31gbmA1uM6KtHHzdZj6K6rX5V31JwNrgcPmNhxptDRgivb9BxS1x5DpN/ySpN5cZ2XDw3VWpP7M\ny55xYG/gPuCSzsrMvCsiLq3OS5pFw9umZTi99E5DkSTNluaMJlsFtOoOwtFkUp/ma8/4TsDNmXlP\nj3PXAUsiYr5+ESE1QmYO5Tj++OOHch9JkmZDAzqi7z9gTe0xZDqaTOrXfE1ItwPumubcbzva/GZu\nwpEkSZJ6G+5osmWbfQ+/xJbmxnztGV8LbDPNuYVAVm0kNdzU1FTdIUiSNKuGNZrs8MMPdzSZNELm\n5dZmEXEusD+wXfdQ9Yi4GNg1Mx/VVT//fhGSJEmSpFptUVubUS7cdhCwD3BRuzIiFgLjQNF9wXS/\nIEmSJEmShm2+DlM/g3Io+tKu+iOBbYFT5zwiSZIkSZIq83KYOkBEnAgcA3wFOAd4MnAscFFm7l9n\nbJIkSZKkLdt87RmHslf8TcCewD8ALwVOBP64zqCkURURExGxLiL2rTGGVhXD4XXFIEnSbIuIFRGx\nrqtusnoGPm4T7rfJ10qaPfN1zjiZuQ74WHVImj+yOiRJms+6n3Wb8/zz2Sk10HzuGZc0/1xAue7D\nF+sORJKkWda9uPB7gG0z89pNuNfmXCtplszbnnFJ80+Wi1zcXXcckiTNtcy8D7hvrq+VNHvsGZc0\nqAdVc89+FRG/jYhLI+Jl3Y0i4hkR8ZWIuKlqd0VEvC0itupqV0TENRHx6Ig4PSJujYg7IuJrEfG7\nXW17zhmPiEdExOci4paIuC0ivhUR4+17d7WdiojzI2L3iPhqRPwmItZExJci4lHD/EVJkuaHjnVT\n9o+Id1TPkrUR8f2IeE7VphURF0XE7RFxfUS8o+seL4iIMyLi6ura1RFxbr9rsUw37zsito+I90bE\nzyLizoi4OSK+3flsnuHasYj4p4i4sXpW/7K617Zd7TaYw95xbl1EfL6r7lURcUn1M94eEVdFxBcj\nYkk/P6u0pbBnXNKgPghsR7kwYgCvBk6PiIWZeQpARBwMfBm4EvgIcCvwbOBdwDjlgoptCTwEuBD4\nLvBWYBfgDcC/RsRTqjUg6LqG6rO2Ab4J/B7weeCS6v03q8/tNeduZ+D8KsZ/rWJ6LbA98MJN+J1I\nkrYMH6DszFoObAP8LfC1iPgr4JPAp4B/Al4GvCsirsnM9pa6hwOLgRXAfwOPAY4AvhURz8/MiwYN\nJiIWAxcBewBfAk4CtgKeBhxMud3vdNc+nvKZ+VDgE8AvgOdTPoefExEHVD3qbTPNOe98Lr+S8me8\nEHgncCfwOOAPgUcCNw/yM0rzmcm4pEE9AtgrM28DiIhPAZcBH4uIf6ZM0D9LmVjv35FInxwRl1bt\n9svMC6r6AJYAH8rMj7Q/JCJuAj4EHAh8fYZ4/ooy+X57Zr6/4/qfUP5RMtXVPoBdgZdm5r90tF8H\n/HVEPCkzr+z7tyFJ2pIsAJ6ZmfcCRMR/Un6peyqwT2b+uKr/HPAr4OjqHMCRmbm282bVM/SnlAnw\nwZsQz/soE/GjMvMzXffunnPe69olwB9l5tequk9FxK8odyQ6HPhc5y37jOnPgN/wwL8BAI7v83pp\ni+EwdUmD+mQ7EQfIzN9Q9gQ8nPIb9YOA36H8VnyHiFjSPoBzqste0HXP+yi3Hux0fvW660bi+RPg\nXuDvu+o/Q/nHQC/XdSbiA36eJGnL9cl2Il5p92Z/t52IA2TmPcAPgN/tqLs/EY+IRRHxCGAdZe/0\nPoMGEhELgJcD/9mdiFefN21PdnXtIcCPOxLxtvdXcf3ZoDFV1lCOePvjPr4QkLZo9oxLGtTPZqjb\nBVhUvf9cj3ZQDmX7na666zOze2G2W6rXR2wknidU1z+gtyEz76nmiz+sxzVX96jr9/MkSVuuBzw/\nMnN1lW9e06PtajqeKRHxROC9lNOhup9NPedjb8QSymHv/74J1z6SMmH+afeJ6me6gfL5uineB+wL\nrARuiYgLKL+MPyMzb9/Ee0rzksm4pGHq/Bb+TcCqadpd31WeaYXX2fhWfa4/T5I0P0z3/JhxpfKI\nWEQ5h3pb4ATgJ8BtlEn42yhHljVZz172iNggl8jMX0bEHsAB1bEfcDKwLCL2zcxeX4hLWySTcUmD\n2gM4u0cdlD0G21Xv12bmeXMQzxRwQEQ8JDPvaFdGxIMov9W/dQ5ikCSpl3YSewDwaODV7cVO2yLi\nfZt475spe9/HN+Hamyi/DNiz+0REPJwy1h93VN9anVucmWs66nfpdfNqtNs51UFE/CHwVeBvgGM2\nIV5pXnLOuKRBvS4itm8XIuJhwP9H+QfBBcC5wK+Bt1QP9AeIiG2rHoJh+TfKlWPf0FV/JOXq6JIk\n1a3dc/6Av70j4gXAH0xzzUyrl1MtjnY6sEdEvGaQYKprzwaeFhHdu4i8hXKU2Fc66n5evR7U1fZv\nu+89zfZl/1G9bvB3gbQls2dc0qBuAr5f7Sna3trsMcARmflbKPcXpZwr9vNqRdmrKOe17U65IMyh\nlMP12jZnaPhnKLcle09E7Eq5YM5elNun/ZIyUZckqQ7t59tFwA3ARyNiDLiOskf7MMoh60+d4dqZ\nvAPYH/hMldhfXF33+8BWmfmqGa59G2VyvTIiPkH5rN6X8vl5AdDZg3865Vzwf4yI3Sm/gH8RvddZ\n+XpErKb8mf+L8vk/QTkk/5/6+JmkLYbJuKRBJPB3lA/ro4FHUX5b/peZ+c/3N8r8ekTsTfnt+mGU\nC8WspkyOP0r5h0fnPWf89r9HDOsLmXdHxAHAh4E/pfwj4hLKLdFOBhbOdP0A5yRJW7ZBnxH3P98y\nc03VA/0h4FjKv8F/SLn39hHAU6a7dqa66r7PokysX0z5hfdtlAuzfXwj114bEfsA76J8Vi+mTJ7f\nB7ync1uyzLwtIv4I+Fj1WbcDZwF/Sfl87/QJymfxUcAOlAuk/hg4umNbU0lAzLDrgSSNrIjYinI+\n3Xcz84/qjkeSJEnq5JxxSSMvIrp7v6Gcx/4w4BtzHI4kSZK0UfaMSxp5EfFFYBv+Xzt3aIRAAANA\n8N5TBwXgKAXxpdAWLVAMFaAe8QaBDjCzW0HszSSpe/WsztWlfS3+9P5lHQAAfoEYB/7esixr+w37\nsTq0P8m5Vddt2x7fnA0AAD4R4wAAADDMzTgAAAAME+MAAAAwTIwDAADAMDEOAAAAw8Q4AAAADBPj\nAAAAMOwFJsC0vqy7U9AAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 23 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Next we switch it up to see how many files contain several tags from each file classification." ] }, { "cell_type": "code", "collapsed": false, "input": [ "p = df.groupby(['PlaceObject2','label'])['PlaceObject2'].count().unstack('PlaceObject2').fillna(0).plot(\n", " kind='bar', stacked=False, grid=False)\n", "p.set_xlabel('')\n", "p.plot()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 24, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nwUsEV4DNNtuMn/zkJ8yZM2eJr9Fazw033MCwYcPo3bs3m2yyCePGjWPBggWLjWvvmtf333+fU045\nhS233JLGxkY++clPcthhh1XdqvzRRx9xwQUXMHz4cPr27cuaa67JDjvswKWXXgrAl7/8Zc4666xF\ndbdu4W69Lnf06NGLBddWBx98MABPP/30En0riiuvkiRJkgojM3nhhReICNZdd12effbZJca89tpr\n/PznP+fAAw/k8MMPZ5VVVqGlpYULLriAyZMn8+tf/3qx8UcccQTXX389O+20E6eddhprrrkmzzzz\nDDfffPOikDZv3jz23ntvHnzwQY488khOPPFE3nvvPS6//HJ23nln7r//fkaOHAnAL3/5SwCOPfbY\ndt/HmDFjGDhwIL/61a/46KOPFguAkyZN4sUXX+SEE05g/fXX59Zbb2XcuHG8/PLL/Od//meH/33e\nf/99Ro8ezauvvspXv/pVtt56a9544w1+/OMfM2rUKB555JFF24w/+ugjPvvZz/Lb3/6Wz372sxx5\n5JE0NjYyZcoUJk6cyPHHH8/Xv/51Zs6cycSJE7nkkksYMGAAAMOGDeuwjtdeew2A9dZbr8NxXSoz\nu81HqVxJktSdAAnphx9d+EG9/1prKTrzZ/Sb3/wmIyLPOuusfOedd/Ltt9/OJ554Io8++uiMiBw9\nenRmZk6YMCEjIn/7298ueu1HH32U8+fPX2LO008/PSMiH3rooUVtN954Y0ZEHnnkkR3Wc9FFF2VE\n5F133bVY+4wZM3LjjTfOpqamRW0jRozIhoaGnD59eodz7rvvvhkR+fTTT2dm5ksvvZQRkausskpO\nnjx5sbGf//znMyLyj3/846K2M888MyMiX3755UVtJ554Yvbp0yenTJmy2OtffvnlXGONNfLLX/7y\norYf/vCHGRH5/e9/f4naFi5c2OHX6cjMmTNzs802y7XWWmup/w0yl+3fbHks1T7cNixJkiSpbs48\n80w++clPst566zF8+HCuvPJK9t9/f2655ZZ2X7PqqqsuuhZ0/vz5TJ8+nXfffZc99tgDgIceemjR\n2Ouuu46I4MILL+ywjmuvvZYhQ4YwYsQI3n333UUfc+fOZc899+SBBx5g7ty5AMyYMQOAT3ziEx3O\nucYaawAscRDSXnvtxfDhwxdr++53vwvAxIkT250vM7nuuuvYZZdd2HDDDRers0+fPowaNYq77rpr\nsfe+9tprc8YZZywx1/KeYrxgwQIOP/xwpk6dymWXXcaaa665XPMsD7cNS5IkSaqbr33taxx00EFE\nBH379mXQoEGdCkQ//vGP+clPfsKf//znJW6rM3369EWfP//882ywwQasu+66Hc73zDPP8OGHH7Y7\nLiJ49913GThw4GKhtKNa2wu5Q4YMWWJsa1tHt9h55513mDZtGnfeeWe7dVYe8PT8888zYsSIqtes\nLo+FCxfyla98hUmTJnHeeedxyCGHdMm8nWV4lSRJklQ3n/70p9l9992X6TUXXXQR3/72t/nsZz/L\nySefzIYbbshqq63Ga6+9xpe//OXlukdsZjJs2DAuuuiidse0Xg+67bbbMnnyZB599NFFq73VTJ48\nedG9X7tCaVdtaeX2lFNO6ZI5O2vhwoUcffTRXHPNNTQ3N/O9732vpl8fDK+SJEmSuplrrrmGzTbb\njDvuuGOx9rYHNQEMGjSISZMm8fbbb/PJT36y3TkHDRrE22+/zW677bbULbUHHHAAV199NVdccUW7\n4fXXv/41r7/+Ov/8z//Mqquuuljfn//85yXGt7Ztvvnm7X7dddddlzXXXJP333+/U4F/q6224pln\nnlniwKi2lvZ+W4PrlVdeyemnn151G3IteM2rJEmSpG5llVVKa3CVK6zz58/n/PPPX2Ls4YcfDpSu\nKW1duWxV+fzII4/kzTffbHfl9a233lr0+X777cfOO+/MjTfeyIQJE5YYO3XqVL72ta/Ru3fvRacZ\nV7rnnnuYPHnyYnVccMEFAHzuc5+r+vUBGhoa+OIXv8hDDz3EzTffXHXM22+/vejzL37xi0yfPp1z\nzjlniXGV771fv34A/PWvf6067phjjuHKK6/k+9//ftX3UyuuvEqSJEnqVg488EBOPfVUxowZw+c/\n/3lmzJjB9ddfX3V18cADD+SQQw7h6quv5vnnn2ffffdlrbXW4rnnnuOuu+7iySefBOCkk07i7rvv\n5jvf+Q733Xcfu+22G2ussQavvPIK9957L7179+a+++5bNO8vfvELxowZw1e/+lVuuukmxowZQ9++\nfZkyZQoTJkxg4cKF3HDDDQwdOnSJmoYNG8buu+/O8ccfv+hWOffeey9HHnkko0aN6vC9n3vuufz+\n97/n4IMP5uCDD2bUqFGsttpqvPzyy/zqV79i++23XxSoTzrpJG677TbOOeccHn74Yfbaay8aGxt5\n+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\nRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 24 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### DoABC tags mean that the file contains ActionScript3" ] }, { "cell_type": "code", "collapsed": false, "input": [ "p = df.groupby(['DoABC','label'])['DoABC'].count().unstack('DoABC').fillna(0).plot(\n", " kind='bar', stacked=False, grid=False)\n", "p.set_xlabel('')\n", "p.plot()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 25, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nrdkJqB4r9cxrROxOaab0vE5CLgA2AA7MzO9k5n8C/wi8CFxWNdZOlArXGzPzyMy8KjP/FTgb2A84\neqU+SUF1FJg333wzAM899xzvf//7GT9+PMceeyyXXHIJI0eO5IILLuDggw9myZIlK4xx1VVXsemm\nm/Kxj32MUaNGsd1223H11Vd3+p5vvfUWf/vb35g9ezYvvfQSDz74IJ/73OdYZ511lit4x48fD8Ap\np5zSkx9ZkiRJknpc3cVrRPQDrgBuASbU6F8POAxoz8zHOtoz8w3gSmD7iNij4pZjytdLqoa6ApgP\nHFtvbkX2nve8B4CnnnoKgK9+9avMnj2bCRMm8P3vf59/+Zd/Ydy4cXzxi1/k7rvv5pprrlnu/hdf\nfJHJkydz3HHH0dJS+nGdeOKJPPDAA0ybNq3me06ePJlNNtmEd77znWy++ebsvffePPDAA/zqV7/i\nIx/5yLK4qVOnEhHsuuuua+KjS5IkSVKPWZmZ17OAHYDTgFprkHeh9IzrAzX6Hixf31fRtgewBHio\nMjAzFwKPlvvXehtssAEAc+fOJTOZNGkSu+++OwcddNByceeccw4tLS1MnDhxufaf/exnLFmyhBNO\nOGFZW8csamezr3vttRe33XYbt912G7feeis/+clP2GqrrTjqqKOYPHnysri5c+cul6MkSZIkFVVd\nz7xGxDbAGKAtM2dGxNY1wjYvX1+o0dfRNrQqfnZmLuokfu+IWCczF9eTY1FVFoizZs3ijTfeYKed\ndloh7h3veAebbropzz777LK2zOTqq6/mPe95Dy0tLTz99NPL+vbee2+uu+46LrjgAvr167fcWB3H\n3FQ66qijePe7381JJ53E9OnT6dev37Kidd68eau9G7IkSZIkrUn1zrz+GHgauKiLmEHl68IafW9W\nxXS8rhXbWfxa6bHHSiuod9hhh5W+96677uLZZ5/l8ccf593vfjfbb7/9sq977rmHl19+md/85jd1\njbX++uuz11578fzzzy9bwrzzzjuTmTz88MMrnZskSZIkNVK3M68RcSxwAPCPmbnibkJ/13G0Tf8a\nfQOqYjpeD6kR2xGfVfFrpauuugqAQw45hCFDhjB48GD+9Kc/rRD3yiuv8Je//IXdd999WdvVV19N\n//79ue6665Y979ohM/nnf/5nrrrqKg4//PC6clm0qDTJPW/ePACOPPJIrrvuOq688kr222+/Vfp8\n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\nbbnlndQ6hcEAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 25 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### DoABCDefine is a deprecated way to do the same things." ] }, { "cell_type": "code", "collapsed": false, "input": [ "p = df.groupby(['DoABCDefine','label'])['DoABCDefine'].count().unstack('DoABCDefine').fillna(0).plot(\n", " kind='bar', stacked=False, grid=False)\n", "p.set_xlabel('')\n", "p.plot()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 26, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nwgsArLvuuh3KW1paWHvttVeozyJy2rAkSZKkpmtpaWHixInssssu/P73v+fOO+9sr3vqqac46qij\n2GCDDejduzdbbrklX//61ztMz6107bXXMnPmTD796U8zbtw4Xn/99SVGQpdlo402AuiQ/P32t7/l\n9ttv5+Mf//gSiWubLbfckq985Stdeo1NN92UK6+8kpaWFr7+9a8vUX/fffdx4IEH8s53vpPevXsz\nZMgQTj/9dBYtWtTepqWlhQkTJgCwxRZb0NLSwhZbbAHQfs/rbbfd1t6+reyWW25h4sSJDBo0iN69\ne7PVVltxySWX1IzzxhtvZK+99mLdddelT58+7LDDDpx33nldeo/1ZPIqSZIkqTA+/elPA3DdddcB\n8PTTT/OBD3yAK6+8kiOPPJJzzjmHESNG8P3vf5/Ro0d3SOTaTJo0iQ033JCPfexjjBw5ki233JIL\nL7yw09d86623ePnll3nppZd44YUXmD59Oscccww9e/ZsjwdoH1H9zGc+U7f3+973vpdddtmFv/3t\nbzz22GPt5ddddx0f/vCHefzxx/niF7/Ij370I3beeWdOO+00xo4d295u8uTJ7SPD55xzDpdeeik/\n/OEPl/m6X/va1/jFL37B8ccfz5lnnklLSwvHHHMMd911V4d2P/vZz9hrr72YN28ep556KmeffTaD\nBg3i+OOP58tf/nKd/hS6KDNXm59SuJIkSZKKpiuf1W+55ZaMiPzBD37QaZsZM2ZkROQhhxySmZlH\nHHFERkRef/31Hdp96UtfyojISZMmdSh//vnns2fPnvmVr3ylveyMM87IiMhHHnlkideLiJo/6623\nXl577bUd2g4fPjxbWlrylVdeWeZ7bXP00UdnROTLL7/caZvx48dnRORvf/vbzMycP39+brDBBjly\n5MhctGhRh7Znn312RkS2tra2l33zm9/MiMinn366Q9uLLrooIyJvvfXWJcqGDx+eCxYsaC9//vnn\ns1evXjl27Nj2sr///e/Zq1ev/MQnPrFEzCeddFL26NEjn3jiiWX+GSxPHlduWzMfdORVkiRJUmG8\n7W1vA2DOnDlkJlOnTmX48OF89KMf7dDuq1/9Ki0tLUyZMqVD+cUXX8yiRYs49thj28vaRlE7G33d\naaeduPHGG7nxxhuZNm0aP/vZz3j3u9/N4Ycfzh/+8If2dnPmzOkQY71UvmeAG264gRdffJFjjjmG\nWbNm8dJLL7X/jB49GqBDXCvis5/9LD17/msJpI033pjBgwfz+OOPt5ddeeWVvPXWWxx77LEdYnjp\npZf42Mc+xuLFi7nxxhtXKo7l4YJNkiRJkgqjMkGcOXMmr7/+Ottss80S7dZdd1023HBDnnjiifay\nzOTCCy9ku+22o6WlpUMitvPOOzN58mS+//3v06NHjw59tW1zU+nwww/nve99L+PGjePJJ5+kR48e\n7Unm3LlzV3o15M7eM5S2+QE6JOCVIoIXX3xxpV7zPe95zxJl6623Hs8++2z787Y49thjj1UWx/Iw\neZUkSZJUGA899BAAW2211XKfe+utt7Yns+9973trtvntb3/L/vvvv8y+1llnHXbaaSemTp3KX//6\nV4YMGcK2227LH//4R+6//35222235Y6vM9XvuTR7FiZOnNhh65tKG2+88Uq9ZnUC36bttSsfT548\nuX0Bq2pti0M1gsmrJEmSpMKYNGkSAPvuuy8DBgygf//+/PnPf16i3SuvvMI//vEPhg8f3l524YUX\n0qtXLyZPnkxLS8c7JDOTf/u3f2PSpEldSl6htOUOlEZaobTdzeTJk7ngggvqlrw+9thj3H777Qwe\nPJgtt9wSgMGDBwPQt2/fJUaEG6ktjvXXX7+pcbTxnldJkiRJTbdo0SK++MUvcuedd7Lvvvuy8847\n09LSwpgxY7j//vuZNm1ah/ZnnHEGmdm+0u6rr77KlVdeyd57780hhxzCQQcd1OHn4IMPZsyYMVx/\n/fXt+6IuzcyZM7nrrrvo06cPW2+9NQD77bcfu+66K5dddhk//elPa573+OOPc8YZZ3TpPT/zzDMc\neuihAHzve99rL997771517vexRlnnMErr7yyxHnz58/ntdde69JrrIzDDjuMXr168c1vfpM33nhj\nifpXX32Vt956a5XH0caRV0mSJEkNNWPGDC699FKgNKr5l7/8hSlTpvDMM8+w995788tf/rK97emn\nn84NN9zAAQccwGc/+1kGDRrEbbfdxhVXXMHIkSM5+uijAbjssst44403OPjggzt93YMPPpiLL76Y\nn//85/zHf/xHe/lzzz3XHs+iRYt45plnmDRpEnPmzOF73/se/fr1a2975ZVXst9++3HCCScwefJk\n9ttvPzbccENmz57NHXfcwbXXXlszhl//+tf069ePhQsX8vLLL3PPPfcwdepUoLTFTeU5ffv25ZJL\nLuGAAw5gq6224thjj2XQoEHMnj2bRx99lKuvvpopU6aw6667rsgf/1JVThseOHAgP/3pTxk3bhxD\nhw7lqKOOYrPNNmPmzJk8/PDDXHPNNTzyyCNsttlmdY+jFpNXSZIkSQ0REQD86le/4rLLLqOlpYX+\n/fuz6aabsttuuzF27Fj22muvDudsttlmTJ8+ndNOO41LL72U2bNns+mmm/K1r32NU089tX168IUX\nXshaa63FmDFjOn39Pffck3XWWYeLL764Q/L64IMP8slPfrL9+TrrrMP73vc+zjzzTA477LAOfQwY\nMIDbb7+dSy65hMsuu4yzzjqLV199lXXWWYftt9+es88+m3Hjxi3xno8//ngA1l57bd7+9rczZMgQ\nvvSlL3Hsscey+eabLxHrXnvtxb333ssZZ5zBpZdeysyZM1l33XXZcsst+cIXvsB2223X4TXaXqez\nP/NllXXWzzHHHMPgwYOZOHEi5513HrNnz2bAgAEMGTKE7373u2ywwQY1+1oVojKzLrqIyNUpXkmS\nJGlNERH4WV21LM/fjXLbmtm197xKkiRJkgrPacOSJGmV6mx6mrQyHOGT1jwmr5IkqQFMNFRPfiEi\nrYmcNixJkiRJKrwuJa8RsbiTn7k12m4VEVMiYlZEvBYRt0VEzR18I6IlIk6JiEcjYn5EPBMREyOi\n78q+MUmSJElS97E804ZvA35WVbag8klEDALuAt4C/hOYAxwHTIuI0Zl5U9X5ZwPjgd8A/wVsDXwO\neF9E7OHSwpIkSZIk6OJWORGxGLg4M49dRrsrgAOBEZn5ULmsH/Bn4I3MHFLRdhvgYeCqzDy0ovxE\n4FzgE5l5WVX/5rOSJK1mSgs2ef1WPbklSxG5VY4604ytciIi1oqI/p1U9gPGAK1tiStAZr4OXAAM\njogdK04ZWz6eU9XV+cA84MjliE2SJEmS1I0tT/J6CKWkck5E/DMizo2It1XUbw+sDdxd49zp5eP7\nK8p2BBYB91Q2zMw3gQfL9ZIkSZIkdfme13uAK4DHgbcB+wInAiMj4kPl0dWNy22fr3F+W9nAirKN\ngZcyc0En7XeOiJ6ZubCLMUqSJEmSuqkuJa+ZuVNV0aUR8RDwPeAk4HSgbYXgN2t08Ub5WLmKcN9O\n2la3n9OVGCVJkiRJ3dfyrDZc7b+AbwL7UEpe55XLe9Vo27t8nFdRNg8Y0EnfvSmt7DCvumLChAnt\nj0eNGsWoUaOWI2RJkiRJUlG0trbS2trapbZdWm2405MjngTezMwhEbEzcCfw3cw8rardnsA04ITM\n/Gm5bBqwO9C3eupwRNwJbJmZG1SVu9pwgZRWj5Tqx3/fUvfkasOqP1e1LSJXG1ZnmrHacHWnvYFN\ngH+Wix6mNA34QzWat007vq+i7B6gB/DBGv0Oq2qrwkp//KnTjyRJktosXLiQiRMnsv3229O3b18G\nDBjAvvvuy+23375C/T311FN86lOfYuDAgfTu3ZstttiCk046iVmzZtU58lVnmclrRKzXSdV3KCWf\n1wJk5mvlx6MiYvuK8/sD44DHMvPeivMvp/SJ9eSqfo8D+gC/6OJ7kCRJktRNRcRq9VMPCxYsYPTo\n0Xz5y1/mhRdeYL/99mOHHXZg2rRp7LbbbkyePHm5+nvwwQcZNmwYP//5z9lggw046KCDWHvttfnR\nj37E8OHD+cc//lGXuFe1ZU4bjoizKY2O3gI8C/SndJ/rKOB/gd3K29sQEYMojaguAM4G5lJKRrcB\n9s3MG6r6PpfSqsVXA9cDQ4HxwB2ZuXuNWJw2XCBOA1N9OdVI6q68Xqj+vGYU0aqaNrx6/R9Snz+D\n008/nVNPPZXhw4dz00038fa3vx2Am266idGjR9OjRw8ee+wxNt1002X2tWjRIrbbbjseffRRvvWt\nb/GNb3wDgMxk3LhxXHTRRYwePZrrrrtupePuTL2mDXcleR0DfBbYFlif0t6sj1HaOueszHyrqv0Q\n4AxgJKV9X2cAEzLz5hp9t1Aaef0MsDkwk9KI7GmZucRiTSavxbJ6/Uei4vODiNRdeb1Q/XnNKCKT\nV6jH382FCxey4YYb8sorr3D33XfzgQ98oEP98ccfz3nnncfnP/95Jk6cuMz+pkyZwkEHHcTWW2/N\nn/70pw518+fPZ5NNNuGVV17hoYceYtttt12p2DvTsHteM3NqZn40MzfJzD6Z2T8zh2fmGdWJa7n9\no5l5QGaum5n9MnPXWolrue3izDwrM4dkZu/M3DQzv1grcZUkSZKk7u6uu+5i1qxZbL755kskrgAf\n//jHAZg6dWqX+mtrd/jhhy9R16dPH8aMGQPANddcs6IhN8wKL9gkSZIkSaqvP/7xjwCMGDGiZn1b\n+d/+9jdef/31le5v+PDhADzwwAPLHWujmbxKkiRJUkE8/fTTAJ3ez9q/f3/WWWedDm2X1V9EdNrf\nJpts0uW+ms3kVZIkSZIK4rXXXgOgX79+nbbp378/AHPnzl3p/panr2YzeZUkSZIkFZ7JqyRJkiQV\nRNtI6NLuZ20bTW2bPrwy/S1PX81m8ipJkiRJBfHud78bgGeffbZm/dy5c9un+La1XVZ/mdlpf889\n91yX+2o2k1dJkiRJKoi21X9nzJhRs76t/D3vec9S74ut7u++++5ban/Dhg1b7lgbzeRVkiRJkgri\nQx/6EOuvvz5PPvkk06dPX6L+V7/6FQAHHHBAl/pr28f18ssvX6Ju3rx5TJ06lYhg//33X4moG8Pk\nVZIkSZIKokePHnz+858H4IQTTuDVV19tr7vxxhuZNGkSvXv35qSTTupw3pAhQxg6dCj33ntvh/L9\n9tuPoUOH8sgjj/Cd73ynvXzx4sWMHz+e2bNnM3r0aLbddttV+K7qIzKz2TF0WUTk6hRvdxcRgL8P\n1Uvgv2+pe/J6ofrzmlFEEavm97J6/R9Snz+DhQsXss8++3DjjTey/vrrM2rUKGbNmkVraysRwUUX\nXcRRRx3V4ZyWltK4ZGtrK7vuumuHugcffJCRI0cyZ84chg0bxuDBg7n//vt5/PHH2Wyzzbj77rvZ\naKONVjruzizP341y26hV58irJEmSJBVIz549+d3vfseZZ57JhhtuyHXXXccDDzzARz/6UVpbW5dI\nXNuUEv0l7bDDDjzwwAMcffTR/POf/+Saa65hwYIFfO5zn+P+++9fpYlrPTnyqhW2en0LpuLzW3Sp\nu/J6ofrzmlFEq3bkdfXh380l1WvktWddo5IkSZKkOjIZVBunDUuSJEmSCs/kVZIkSZJUeCavkiRJ\nkqTCM3mVJEmSJBWeyaskSZIkqfBMXiVJkiRJhWfyKkmSJEkqPJNXSZIkSVLhmbxKkiRJkgrP5FWS\nJEmSVHgmr5IkSZKkwjN5lSRJkiQVnsmrJEmSJKnwTF4lSZIkqSDuv/9+zjzzTA477DC22GILWlpa\naGlp4f/+7/9WuM+nnnqKT33qUwwcOJDevXuzxRZbcNJJJzFr1qw6Rr7qRWY2O4Yui4hcneLt7iIC\n8Pehegn89y11T14vVH9eM4ooYtX8Xkr/h6w+VvbP4IADDmDq1KnAv/5MI4KHH36Yrbfeern7e/DB\nBxk5ciRz5sxh2LBhDBkyhBkzZvDXv/6VzTbbjLvvvpuNNtpopWJeluX5u1FuW/OX3rOuUUmSJElS\nvU1odgBdNGHlu/jQhz7EDjvswIgRIxgxYgQf/vCHefbZZ1eor0WLFjF27FjmzJnDt771Lb7xjW8A\npQR73LhxXHTRRYwbN47rrrtu5QNvAEdetcL8Jl315bfoUnfl9UL15zWjiFbpyOuEune7akxY+ZHX\naptvvjnPPvvsCo28TpkyhYMOOoitt96aP/3pTx3q5s+fzyabbMIrr7zCQw89xLbbblvPsDuo18ir\n97xKkiRJUjfUNv348MMPX6KuT58+jBkzBoBrrrmmoXGtKJNXSZIkSeqG/vjHPwIwYsSImvXDhw8H\n4IEHHmhYTCtjuZPXiOgbEU9ExOKI+FGN+q0iYkpEzIqI1yLitojYrZO+WiLilIh4NCLmR8QzETEx\nIvquyJuRJEmSJJU8/fTTRASbbrppzfpNNtmkvd3qYEVGXr8NDCg/7jBxOSIGAXcBHwT+E/gS0B+Y\nFhEfqdHX2cAPgD8BJwK/Bj4HXBur27JikiRJklQgr732GgD9+vWrWd+/f38A5s6d27CYVsZyrTYc\nEcOBkyglpWfVaPJ94G3AiMx8qHzOJcCfgZ8AQyr62gYYD1yVmYdWlD8JnAt8HLhseeKTJEmSJHVP\nXR55jYgewPnA9cDVNer7AWOA1rbEFSAzXwcuAAZHxI4Vp4wtH8+p6up8YB5wZFdjkyRJkiR11Day\n+vrrr9esbxuZXWeddRoW08pYnmnDpwBbUZreW2tK7/bA2sDdNeqml4/vryjbEVgE3FPZMDPfBB4s\n10uSJEmSVsC73/1uMrPTfWKfe+659nargy4lrxGxBfAt4FuZ+UwnzTYuH5+vUddWNrCq/UuZuaCT\n9gMiYrmmNUuSJEmSStpWE77vvvtq1s+YMQOAYcOGNSymldHVkdf/AR6n9n2ubdpWCH6zRt0bVW3a\nHtdq21l7SZIkSVIXte3jevnlly9RN2/ePKZOnUpEsP/++zc6tBWyzOQ1Io4E9gCOz8xFS2k6r3zs\nVaOud1Wbtse12ra1z6r2kiRJkrRGysxO64YMGcLQoUO59957O5Tvt99+DB06lEceeYTvfOc77eWL\nFy9m/PjxzJ49m9GjR7PtttuusrjraanTciOiF6XR1uuAf0bEluWqtum/7yhvj/MS8PequkptZZVT\niv8ODImItWpMHR5IaUrxwuqOJkyY0P541KhRjBo1amlvQZIkSZJWG9ddd12HRPOFF14gMzniiCPo\n06cPACNGjOAnP/lJe5vHHnsMgPnz53foq6WlhV/+8peMHDmSb37zm1x99dUMHjyY+++/n8cff5zN\nNtuM888/vwHvqnOtra20trZ2qW0sLYOPiHcAs7rQzxeB8yglsXdm5h5V/XyD0j2zH8zMe8tl3wG+\nDuyamXdUtO0NvExp1eJ9q/rJpcWrxiptxevvQ/USS/1GUdLqy+uF6s9rRhFFrJrfS0TAhLp3u2pM\nWPoIaVf8/Oc/51Of+lT5/87aRo4cyc0339z+vKWlhYjglltuYdddd12i/VNPPcW3vvUt/vCHPzBr\n1iw23HBD9t9/f0477TTWW2+9lYq3K5bn70a5bc03v6zktSewP0tecd4F/DelbXMmAQ9l5uMRcQVw\nEDC8Yp/X/pT2eZ2fmZX7vG5LaVXhqzPzkIry8cAPgSMz85dV8Zi8FogfRlRffhCRuiuvF6o/rxlF\ntEqT19WIfzeX1JDkdSkdbg48Afw4Mz9XUT6I0tY3C4CzgbnAccA2wL6ZeUNVP+dS2nrnakqJ8FBg\nPHBHZu5e43VNXgvEDyOqLz+ISN2V1wvVn9eMIlpVyatWf/VKXuu6FU1m/i0iPgycAXyF0r6vM4CP\nZubNNU45GXgK+AywLzATOBc4rZ5xSZIkSZJWbys08tosjrwWi9+kq778tlbqrrxeqP68ZhSRI6/q\nTL1GXru6z6skSZIkSU1j8ipJkiRJKjyTV0mSJElS4Zm8SpIkSZIKz+RVkiRJklR4Jq+SJEmSpMIz\neZUkSZIkFZ7JqyRJkiSp8Ho2OwBJkiRJ3UNENDsEdWMmr5IkSZJWWmY2OwR1c04bliRJkiQVnsmr\nJEmSJKnwTF4lSZIkSYVn8ipJkiRJKjyTV0mSJElS4Zm8SpIkSZIKz+RVkiRJklR4Jq+SJEmSpMIz\neZUkSZIkFZ7JqyRJkiSp8ExeJUmSJEmFZ/IqSZIkSSo8k1dJkiRJUuGZvEqSJEmSCs/kVZIkSZJU\neCavkiRJkqTCM3mVJEmSJBWeyaskSZIkqfBMXiVJkiRJhWfyKkmSJEkqPJNXSZIkSVLhmbxKkiRJ\nkgrP5FWSJEmSVHjLTF4jYquI+EVEPBIRsyPi9Yh4LCJ+EhFbdNJ+SkTMiojXIuK2iNitk75bIuKU\niHg0IuZHxDMRMTEi+tbjzUmSJEmSuofIzKU3iNgd+DpwN/AcsBDYHvhU+fHwzHyy3HYQcA/wFnAO\n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\nvAIAADDeL3DAgYC6DoatAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 26 }, { "cell_type": "code", "collapsed": false, "input": [ "p = df.groupby(['DefineBitsJPEG2','label'])['DefineBitsJPEG2'].count().unstack('DefineBitsJPEG2').fillna(0).plot(\n", " kind='bar', stacked=False, grid=False)\n", "p.set_xlabel('')\n", "p.plot()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 27, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAA68AAAGFCAYAAAASMMWQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xuc3dO9+P/Xe6SRy1AkVIi4JCUJIk3qfslQ2kZcwu+g\naakg4bTE7bRH6ReT6k2l4jjFUTTqUqVVQVEqNYKmInGJS6lWIi7n9CDIjchl/f7Ye8/Z2dmTzEx2\nZn9m8no+Hnl89l5rfdZ+fybhs9+z1metSCkhSZIkSVKW1VQ7AEmSJEmS1sTkVZIkSZKUeSavkiRJ\nkqTMM3mVJEmSJGWeyaskSZIkKfNMXiVJkiRJmWfyKkmSJEnKvDUmrxFRHxErVvPnk5L2O0XE5IiY\nFxELI2JqRBzYRN81EXFORLwcER9FxNyImBAR3Sp1gZIkSZKk9i9SSqtvELErsGuZqt2AbwO/Syn9\nS75tX2A68AlwBTAfGAvsAgxPKU0p6fs/gHHA74AHgIH5948BB6c1BSdJkiRJWi+sMXlt8sSIa8kl\npiNSSg/ky+4AjgKGppRm5cu6Ay8CH6eU+hedvzPwPHBnSumYovIzgCuBr6WUbmtVcJIkSZKkDqVV\nz7zmE9KvAG8AfygqOwJoKCSuACmlRcD1wI4RsXtRN6PyxytKur8OWAwc35rYJEmSJEkdT2sXbDoG\n2Ai4sWhq7yCgMzCtTPsn88fPF5XtDiwnN824UUppCfBcvl6SJEmSpFYnr6cAK4BfFJVtlT++VaZ9\noWzrkvbvppSWNtG+Z0R0amV8kiRJkqQOpMXJa0TsBOwL/Cml9HpRVWGF4CVlTvu4pE3hdbm2TbWX\nJEmSJK2nWjPyekr+eH1J+eL8ccMy53QpaVN4Xa5toX0qaS9JkiRJWk+1aFpufhrv14F3gbtKqt/O\nH7dmVYWy4inFbwP9I+JTZaYOb01uSvGyks936xxJkiRJ6sBSSlGuvKXPlB4ObAFcUSbhfJ7cNOB9\nypy3V/44o6hsOnAIsCfweKEwIroAg4GGcgG49avUMdXX11NfX1/tMCRJ7YD3DKnjiiibtwItnzZc\nmDJ8Q2lFSmkhcC9QFxGDij68FhgD/C2l9FTRKbeTmxp8dklXY4GuwK0tjE2SJEmS1EE1e+Q1IrYC\nvgw8mVJ6sYlm5wNfAB6KiInAAnLJaC9gRHHDlNILEXEVcEZE3Ak8AAwAxpHbK/ZXLb0YSZIkSVLH\n1JJpw6OBYNWFmhqllP4REfsCPwa+Q27f15nAl1NKfypzytnAHOBUcsntO8CVwEUtiEtSB1BXV1ft\nECRJ7YT3DGn9FO3pGdKISO0pXkmSJElS80VEkws2tWarHEmSJEmS2pTJqyRJkiQp80xeJUmSJEmZ\nZ/IqSZIkSco8k1dJkiRJUua1ZKscSZIkSe1URNkFXKU2UYldY0xeJUmSpPWE206qGir1ixOnDUuS\nJEmSMs/kVZIkSZKUeSavkiRJkqTMM3mVJEmSJGWeyaskSZIkKfNMXiVJkiRJmWfyKkmSJEnKPJNX\nSZIkSW1m9uzZjBw5ks0335yamhpOPvlkAGpqajjppJOqHF15c+bMoaamhvHjx1c7lPWayaskSZIk\nABoaGqipqWn806lTJzbbbDN23XVXRo8ezYMPPrjWnzF69GimTp3K+eefzy233MJpp53WWBcRa91/\nc9x4440rXWdNTQ21tbXstNNOnHXWWbz55ptlzyuO78MPP6S+vp5HH3201XGMHj2ampoa5s2b12Rs\nG2ywAZtssgn7778/N99880rn19fXr3IdxX8OOeSQVT7z448/5uqrr+aggw5iiy22oHPnzmy66abs\nsccefOc73+GVV15Zqf3TTz/Nt771LYYMGcJmm23GZpttxh577ME111zDsmXLWn3trdGpTT9NkiRJ\nUuZ99atf5dBDDyWlxIIFC3j55ZeZPHkyN910EwcffDC/+c1v+PSnP93ifpcsWcLjjz/OuHHjOPfc\nc1eq+/jjj9lggw0qdQnNctZZZ7H77rsDsGDBAqZPn85VV13FXXfdxUsvvURtbS0A22233Srxvf/+\n+3zve9+jpqaGYcOGtTqGphL2QmwrVqxg9uzZXHfddZx44om8+eabnH/++Su1veSSS9h+++1X6aNX\nr14rvX/ttdc47LDDePnll6mrq+Pcc8+lV69eLFy4kGeeeYZf/OIXTJgwgTfeeKPx3J/85CdMmTKF\no446itNOO43ly5dz7733cvrpp3P33Xfzhz/8odXX3lImr5IkSZJWMmTIEL761a+uVHb55Zfz7//+\n71x++eWMGjWK+++/v8X9/vOf/ySlxKabbrpKXefOnVsdb2vtv//+HH300Y3vTzvtNDbZZBMmTpzI\nww8/zMiRI9cYX0pprWJo6vzS2E466SR22mknLr30Us477zxqav5vEu3w4cMZMmTIaj/no48+YsSI\nEcyePZu77rqLI488cpU2S5Ys4Yorrlip7Mwzz+Smm25a6fq/+c1vcsIJJ3Drrbdy3333MWLEiGZd\n69py2rAkSZKkNaqpqWHChAnst99+/OEPf+CJJ55orPvwww8577zz6NevH126dGGLLbbgq1/9KrNn\nz25sM3r0aLbbbjsAxo8f3zi1derUqY39lz7zWiibNm0aw4YNo7a2lp49ezJ27FgWLVq0Soz//d//\nzTe+8Q369OnDhhtuyNZbb81pp53GO++80+zrLIw4brjhho1lpc+8NjQ0sMMOO6xyLcWjnzfddBN7\n7LEHm266KbW1tfTt25fjjz+ed999t9mxFOvduzcDBgxgwYIFLbqeguuvv55XXnmFb3/722UTV8hd\n83nnnbfSiO0+++xTNnE/9thjAXjxxRdbHEtrOfIqSZIkqdlOOeUUHn/8ce677z723XdfPvzwQ/bZ\nZx/eeOMNTjnlFHbeeWfefvttrr76avbcc09mzJhBnz59+Nd//Vc+97nPcc4553D00Uc3jioOGDCg\nse9yU2ifffZZDj/8cE4++WSOP/54HnnkEW644QZqamq49tprG9vNnTuXvffem2XLlnHKKafQt29f\nXn31Va655hoeeeQRZsyYwcYbb7xS3/Pnz29MJhcuXMiMGTO47LLL+OxnP8tBBx20SiyF+AYOHMjE\niRNXuZbCNOObb76Z0aNHc8ABB3DJJZfQtWtX5s6dywMPPMA777xDz549W/xzX7JkCXPnzqVTp05s\nsskmK9V98MEHZZPi2tpaunTpAsBvf/tbIoIxY8a0+LPLKTwX/JnPfKYi/TWHyaskSZKkZtt1110B\nePXVVwG46KKLmDNnDn/5y18a6yA30rrrrrty8cUXM2nSJPbaay+23HJLzjnnHAYNGrTKtOSmPP/8\n80ybNq3x2dSxY8cyf/58Jk2axMSJE+nWrRsA48aNY/ny5TzzzDNstdVWjecfc8wx7LXXXkycOJGL\nL754pb4LKx0X23ffffntb3+70shrqS222IIjjzyyyWu566672HjjjfnTn/600vTelqxWXEisV6xY\nweuvv84PfvAD3n33XUaNGrVKbAcffHDZPiZMmND4bPELL7zAxhtvzLbbbrtSmxUrVqy0YBSsnPSW\ns3DhQi677DI22WSTJkdx1wWTV0mSJEnNVhi9nD9/PgC33norBxxwAFtttdVKo3/dunVjzz335KGH\nHlqrz9t7770bE9eCAw88kPvvv585c+YwcOBAPvzwQ37/+99zyimn0Llz55Xi2Hbbbenbty8PPfTQ\nKsnrxRdfzP777w/AokWLmDlzJhMnTmTEiBE8/PDDq4xwNtcmm2zCokWL+P3vf8/hhx/eqlWUSxPr\nzp07M3r0aH72s5+t0vbqq69mxx13XKX8s5/9bOPr+fPnr5TUF7z00ksMGjRopbLLLruMf/u3fysb\n1/Llyzn++OOZM2cOt912W6t/Rq1h8ipJkiSp2QpJ68Ybb8w777zDvHnzePDBB9l8883Ltl/bFYQL\nz5YW69GjBwDvvfceAK+88gopJa6//nquv/76sv307dt3lbJdd911penBhx9+OAMHDuQrX/kKl156\nKT/60Y9aFfMFF1zA1KlTGTlyJD169GDYsGEMHz6c4447rnFq8ZoUEuuamho22mgj+vfvT/fu3cu2\n3WOPPda4YNPGG2/c+HdXbIcdduDhhx8GclO0v/WtbzWZbK9YsYKTTz6Ze+65hx/+8Iccd9xxzbqW\nSjF5lSRJktRss2bNAmCnnXZqXCn3kEMO4bzzzlsnn7e65Lfw+YXjCSecwIknnli2bdeuXZv1eV/8\n4hcBeOSRR1oS5kr69evHSy+9xJQpU5gyZQqPPvooY8eO5eKLL2bq1KllE/JSpYn12tpll1147LHH\nmDNnTuPCWZAbIS98TvEU51IrVqxgzJgx3HzzzdTX1/Od73ynYrE1l8mrJEmSpGa74YYbABgxYgSb\nb745m2yyCR9++GFFE62W6tevHxHBkiVL1jqOpUuXArl9X1dnTVOBO3fuzPDhwxk+fDgADzzwACNG\njODyyy8vO/V3XTvmmGN47LHHuP766/n+97/fonMLieuNN97IhRdeyEUXXbSOolw9t8qRJEmStEbL\nly/nW9/6Fk888QQjRoxg7733JiL42te+xvTp07nzzjvLnteabV1aqkePHhx66KH87ne/48knn1yl\nPqXU7C1qJk+eDMDQoUNX264w/bcwdblYuc/63Oc+B8D777/frDgqbcyYMfTv35/LLrus8RpLldtz\nNqXE2LFjufHGG/nud7/bokWnKq3ZI68RsRlwATAS2BpYALwAXJRSeryo3U7ApcABQGfgaeDilNIq\n4+4RUQOcBZwGbAu8A9yR73NxK69JkiRJ0lqYOXMmt9xyC5AbgXzllVeYPHkyc+fO5Utf+hK/+tWv\n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\n+CnwAnAG8BvgTODecCk0SZIkSVJei1YbjoghwFnkktLLyzT5EbAxMDSlNCt/zk3Ai8BVQP+ivnYG\nxgF3ppQdzUQEAAAc8klEQVSOKSqfDVwJfAW4rSXxSZIkSZI6pmaPvEbEBsB1wAPAXWXquwNHAA2F\nxBUgpbQIuB7YMSJ2LzplVP54RUlX1wGLgeObG5skSZIkqWNrybThc4CdyE3vLTeldxDQGZhWpu7J\n/PHzRWW7A8uB6cUNU0pLgOfy9ZIkSZIkNS95jYjtgfHA+JTS3CaabZU/vlWmrlC2dUn7d1NKS5to\n3zMiWjStWZIkSZLUMTV35PW/gL9T/jnXgsIKwUvK1H1c0qbwulzbptpLkiRJktZTaxzZjIjjgYOB\n/VNKy1fTdHH+uGGZui4lbQqve5ZpW2ifStoDUF9f3/i6rq6Ourq61YQkSZIkScqqhoYGGhoamtU2\nUkpNV0ZsCLwB/IXcM6+FZ123Bh4BbiE3nfhdYCDwBPD9lNJFJf0cAjwInJ5SuiZf9iBwENCtdOpw\nRDwB9EspfaakPK0uXkmSlD253e+8f6uSAr8TSh1TRJBSKrtt6pqmDXclNzp6GPAq8Lf8n0fy9cfn\ny08BZpGbBrxPmX72yh9nFJVNBzYgtydscbBdgMElbSVJkiRJ67E1TRteCBzDqr8u3QK4mty2OTcA\ns1JKiyLiXuDoiBhUtM9rLTAG+FtK6amiPm4HLgDOBh4vKh9LLmm+tXWXJEmSJEnqaFY7bbjJkyK2\nA14DfpZSOrOovC+5EdWlwERgAblkdGdgRErpjyX9XElu6527yCXCA4BxwOMppYPKfK7ThiVJamec\nNqzKc9qw1FGtbtpwRbeiSSn9IyL2BX4MfIfcvq8zgS+nlP5U5pSzgTnAqcAI4B3gSuCiMm0lSZIk\nSeupVo28Vosjr5IktT+OvKryHHmVOqq1WbBJkiRJkqSqM3mVJEmSJGWeyaskSZIkKfNMXiVJkiRJ\nmWfyKkmSJEnKPJNXSZIkSVLmmbxKkiRJkjLP5FWSJEmSlHkmr5IkSZKkzDN5lSRJkiRlnsmrJEmS\nJCnzTF4lSZIkSZln8ipJkiRJyjyTV0mSJElS5pm8SpIkSZIyz+RVkiRJkpR5Jq+SJEmSpMwzeZUk\nSZIkZZ7JqyRJkiQp80xeJUmSJEmZ16naAaj9iohqh6AOJqVU7RAkSZKUUSavWksmG6oUfxkiSZKk\npjltWJIkSZKUeSavkiRJkqTMM3mVJEmSJGWeyaskSZIkKfPWmLxGxE4RcWtE/DUiPoiIRRHxt4i4\nKiK2b6L95IiYFxELI2JqRBzYRN81EXFORLwcER9FxNyImBAR3SpxcZIkSZKkjiHWtDVFRBwEfBeY\nBrwJLAMGASflXw9JKc3Ot+0LTAc+Aa4A5gNjgV2A4SmlKSV9/wcwDvgd8AAwMP/+MeDgVBJcRJQW\nqYpyW+X496FKCbfKkToo7xeqPO8ZUkcVEaSUym5DscbkdTWd/gtwB/C9lFJ9vuwO4ChgaEppVr6s\nO/Ai8HFKqX/R+TsDzwN3ppSOKSo/A7gS+FpK6baSzzR5zRC/jKiy/CIidVTeL1R53jOkjmp1yeva\nPPM6N3/8JP8h3YEjgIZC4gqQUloEXA/sGBG7F50/Kn+8oqTf64DFwPFrEZskSZIkqQNpdvIaERtG\nRM+I6B0RXwSuJZfA3pBvMgjoTG56cakn88fPF5XtDiwnN824UUppCfBcvl6SJEmSpBaNvI4F/pdc\nwvoHYCmwf0rpn/n6rfLHt8qcWyjbuqhsK+DdlNLSJtr3jIhOLYhPkiRJktRBtSQ5vAt4CagFhpBb\nWOnRiDg4pfQaUFgheEmZcz/OH4tXEe7WRNvS9vNbEKMkSZIkqQNqdvKaUnqL/xtBvSci7gSeAiYC\nR5J7ThVgwzKnd8kfFxeVLQZ6NvFxXcit7LC4tKK+vr7xdV1dHXV1dc2KX5IkSZKULQ0NDTQ0NDSr\nbatXGwaIiL8AO6WUNo2IvYEngO+nlC4qaXcI8CBwekrpmnzZg8BBQLfSqcMR8QTQL6X0mZJyVxvO\nEFePVGW5cqTUUXm/UOV5z5A6qnW12jBAV2BF/vXz5KYB71Om3V7544yisunABsCexQ0jogswuKSt\nJEmSJGk9tsbkNSI+00T5gcAuwBSAlNJC4F6gLiIGFbWrBcYAf0spPVXUxe3kfg17dknXY8klxbc2\n/zIkSZIkSR3ZGqcNR8RdwJbAn8itNNwFGAocB7wH7JtSmp1v25fciOpScs/CLiCXjO4MjEgp/bGk\n7yuBM8gtBvUAMIDcQlCPp5QOKhOL04YzxGlgqiyngEkdlfcLVZ73DKmjWt204eYkr8cAXwd2AzYn\nd/d5jVyy+ZOU0jsl7fsDPwaGkdv3dSZQn1L6U5m+a8iNvJ4KbAe8Q25E9qKU0iqLNZm8ZotfRlRZ\nfhGROirvF6o87xlSR7VWyWuWmLxmi19GVFl+EZE6Ku8XqjzvGVJHtS4XbJIkSZIkaZ0zeZUkSZIk\nZZ7JqyRJkiQp80xeJUmSJEmZZ/IqSZIkSco8k1dJkiRJUuaZvEqSJEmSMs/kVZIkSZKUeSavkiRJ\nkqTMM3mVJEmSJGWeyaskSZIkKfNMXiVJkiRJmWfyKkmSJEnKPJNXSZIkSVLmmbxKkiRJkjLP5FWS\nJEmSlHkmr5IkSZKkzDN5lSRJkiRlnsmrJEmSJCnzTF4lSZIkSZln8ipJkiRJyjyTV0mSJElS5pm8\nSpIkSZIyz+RVkiRJkpR5Jq+SJEmSpMxbY/IaETtGxPci4i8R8b8RMT8inomICyKiW5n2O0XE5IiY\nFxELI2JqRBzYRN81EXFORLwcER9FxNyImFCuX0mSJEnS+itSSqtvEPFj4JvA3cBfgKXAQcCxwCxg\nr5TSx/m2fYHpwCfAFcB8YCywCzA8pTSlpO//AMYBvwMeAAbm3z8GHJxKgouI0iJVUUQA/n2oUgL/\n+5Y6Ju8XqjzvGVJHFRGklKJsXTOS16HA31JKC0rKLwG+C4xLKV2VL7sDOAoYmlKalS/rDrwIfJxS\n6l90/s7A88CdKaVjisrPAK4EvpZSuq3kM01eM8QvI6osv4hIHZX3C1We9wypo1pd8rrGacMppZml\niWveHfnjzvkP6Q4cATQUEtf8+YuA64EdI2L3ovNH5Y9XlPR7HbAYOH5NsUmSJEmS1g9rs2BT7/zx\nn/njIKAzMK1M2yfzx88Xle0OLCc3zbhRSmkJ8Fy+XpIkSZKk1iWvEbEBcCG5519/lS/eKn98q8wp\nhbKti8q2At5NKS1ton3PiOjUmvgkSZIkSR1La0derwD2Ai5KKb2aLyusELykTPuPS9oUXpdr21R7\nSZIkSdJ6qsXJa36hptOBa1NKlxZVLc4fNyxzWpeSNoXX5doW2qeS9pIkSZKk9VSLpuVGRD25FYZ/\nkVL6Rkn12/nj1qyqUFY8pfhtoH9EfKrM1OGtyU0pXlbaUX19fePruro66urqmhu+JEmSJClDGhoa\naGhoaFbbNW6V09gwl7heBNyYUjq5TH0t8A7wRErp4JK6C4HxwJ4ppafyZYWtdg5IKT1e1LYL8B65\nVYtHlPTjVjkZ4tYHqiy3PZA6Ku8XqjzvGVJHtVZb5eQ7uIhc4npTucQVIKW0ELgXqIuIQUXn1gJj\nyO0V+1TRKbeTu5OdXdLVWKArcGtzYpMkSZIkdXxrHHmNiNOB/wTmklthuPSE/0kpPZxv25fc1jdL\ngYnAAnLJ6M7AiJTSH0v6vhI4A7gLeAAYAIwDHk8pHVQmFkdeM8TfpKuy/C261FF5v1Dlec+QOqrV\njbw2J3mdBHy98LZMk4biRDMi+gM/BoaR2/d1JlCfUvpTmb5ryI28ngpsR27a8e3kVjFeZbEmk9ds\n8cuIKssvIlJH5f1Clec9Q+qo1ip5zRKT12zxy4gqyy8iUkfl/UKV5z1D6qjW+plXSZIkSZKqyeRV\nkiRJkpR5Jq+SJEmSpMwzeZUkSZIkZZ7JqyRJkiQp80xeJUmSJEmZZ/IqSZIkScq8TtUOQJIKcntB\nSpXjPpCSJHUcJq+SsqO+2gGoQ6mvdgCSJKmSnDYsSZIkSco8k1dJkiRJUuaZvEqSJEmSMs/kVZIk\nSZKUeSavkiRJkqTMM3mVJEmSJGWeyaskSZIkKfNMXiVJkiRJmWfyKkmSJEnKPJNXSZIkSVLmmbxK\nkiRJkjLP5FWSJEmSlHkmr5IkSZKkzDN5lSRJkiRlnsmrJEmSJCnzTF4lSZIkSZln8ipJkiRJyrw1\nJq8RcX5E/CYiXouIFRExew3td4qIyRExLyIWRsTUiDiwibY1EXFORLwcER9FxNyImBAR3Vp7QZIk\nSZKkjqc5I68/AOqAV4H3gdRUw4joC/wZ2BO4FPg2UAs8GBFfKHPKROCnwAvAGcBvgDOBeyMimn0V\nkiRJkqQOrVMz2uyQUpoDEBEvAKsbFf0RsDEwNKU0K3/OTcCLwFVA/0LDiNgZGAfcmVI6pqh8NnAl\n8BXgtpZcjCRJkiSpY1rjyGshcV2TiOgOHAE0FBLX/PmLgOuBHSNi96JTRuWPV5R0dR2wGDi+OZ8r\nSZIkSer4Krlg0yCgMzCtTN2T+ePni8p2B5YD04sbppSWAM/l6yVJkiRJqmjyulX++FaZukLZ1iXt\n300pLW2ifc+IaM60ZkmSJElSB1fJ5LXwLOySMnUfl7QpvC7Xtqn2kiRJkqT1VCWT18X544Zl6rqU\ntCm8Lte20D6VtJckSZIkracqOS337fxx6zJ1hbLiKcVvA/0j4lNlpg5vTW5K8bLSjurr6xtf19XV\nUVdX19p4JUmSJElV1NDQQENDQ7PaRkpNbtu6auP8VjkppR3K1NUC7wBPpJQOLqm7EBgP7JlSeipf\ndgnwXeCAlNLjRW27AO+RW7V4REk/qSXxat3KbcXr34cqJaC+2jGoQ6kH7xnZ4P1ClRf+9y11UBFB\nSinK1VVs2nBKaSFwL1AXEYOKPrwWGAP8rZC45t1O7k52dklXY4GuwK2Vik2SJEmS1L6tcdpwRJwA\nbJt/uznwqYj4f/n3c1JKtxQ1Px/4AvBQREwEFpBLRnsBK42ippReiIirgDMi4k7gAWAAMI7cqOuv\nWn9ZkiRJkqSOZI3ThiPiEWBY/m2hcWEYtyGldFBJ+/7Aj/PndAZmAvUppT+V6buG3MjrqcB25KYd\n3w5clFJaZbEmpw1ni9PAVFlOG1aF1TttOCu8X6jynDYsdVSrmzbcomdeq83kNVv8MqLKMnlVhdWb\nvGaF9wtVnsmr1FG1yTOvkiRJkiStKyavkiRJkqTMM3mVJEmSJGWeyaskSZIkKfNMXiVJkiRJmWfy\nKkmSJEnKPJNXSZIkSVLmmbxKkiRJkjLP5FWSJEmSlHkmr5IkSZKkzDN5lSRJkiRlnsmrJEmSJCnz\nTF4lSZIkSZln8ipJkiRJyjyTV0mSJElS5pm8SpIkSZIyz+RVkiRJkpR5Jq+SJEmSpMwzeZUkSZIk\nZZ7JqyRJkiQp80xeJUmSJEmZZ/IqSZIkSco8k1dJkiRJUuaZvEqSJEmSMs/kVZIkSZKUeSavkiRJ\nkqTMq2ryGhE1EXFORLwcER9FxNyImBAR3aoZlyRJkiQpW6o98joR+CnwAnAG8BvgTODeiIhqBiZJ\nkiRJyo5O1frgiNgZGAfcmVI6pqh8NnAl8BXgtiqFJ0mSJEnKkGqOvI7KH68oKb8OWAwc37bhSJIk\nSZKyqprJ6+7AcmB6cWFKaQnwXL5ekiRJkqTqTRsGtgLeTSktLVP3FrB3RHRKKS1r47gkSZKUcS6P\nokpLKVU7BK1BNZPXbsCSJuo+Lmozv23CkSRJUrtRX+0A1KHUVzsANUc1pw0vBjZsoq4LkPJtJEmS\nJEnruajW8HhEPAgcBHQrnTocEU8A/VJKnykpdyxfkiRJkjqwlFLZ5wKqOW14OnAIsCfweKEwIroA\ng4GG0hOaughJkiRJUsdWzWnDt5ObGnx2SflYoCtwa5tHJEmSJEnKpKpNGwaIiCuBM4C7gAeAAcA4\n4PGU0kFVC0ySJEmSlCnVTl5ryI28ngpsB7xDbkT2opSSizVJkiRJkoAqJ6+S1l8RsSPQD+gBrPI8\n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\n", "text": [ "" ] } ], "prompt_number": 27 }, { "cell_type": "code", "collapsed": false, "input": [ "p = df.groupby(['End','label'])['End'].count().unstack('End').fillna(0).plot(\n", " kind='bar', stacked=False, grid=False)\n", "p.set_xlabel('')\n", "p.plot()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 28, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 28 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Now we add that information to the classifier and check the results again." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import sklearn.ensemble\n", "clf_tags = sklearn.ensemble.RandomForestClassifier(n_estimators=50)\n", "tag_features = ['entropy', 'frame count', 'frame rate', 'size', 'swf area', 'swf perimeter', 'version',\n", " 'CSMTextSettings', 'DebugID', 'DefineBinaryData', 'DefineBits',\n", " 'DefineBitsJPEG2', 'DefineBitsJPEG3', 'DefineBitsLossless',\n", " 'DefineBitsLossless2', 'DefineButton', 'DefineButton2',\n", " 'DefineButtonSound', 'DefineEditText', 'DefineFont', 'DefineFont2',\n", " 'DefineFont3', 'DefineFont4', 'DefineFontAlignZones', 'DefineFontInfo',\n", " 'DefineFontInfo2', 'DefineFontName', 'DefineMorphShape',\n", " 'DefineMorphShape2', 'DefineScalingGrid', 'DefineSceneAndFrameLabelData',\n", " 'DefineShape', 'DefineShape2', 'DefineShape3', 'DefineShape4',\n", " 'DefineSound', 'DefineSprite', 'DefineText', 'DefineText2',\n", " 'DefineVideoStream', 'DoABC', 'DoABCDefine', 'DoAction', 'DoInitAction',\n", " 'EnableDebugger2', 'End', 'ExportAssets', 'FileAttributes', 'FrameLabel',\n", " 'ImportAssets2', 'JPEGTables', 'Metadata', 'PlaceObject', 'PlaceObject2',\n", " 'PlaceObject3', 'ProductInfo', 'Protect', 'RemoveObject2', 'ScriptLimits',\n", " 'SetBackgroundColor', 'ShowFrame', 'SoundStreamBlock', 'SoundStreamHead',\n", " 'SoundStreamHead2', 'SymbolClass', 'Unknown', 'tag count']\n", "\n", "X = df.as_matrix(tag_features)\n", "y = np.array(df['label'].tolist())\n", "\n", "scores = sklearn.cross_validation.cross_val_score(clf_tags, X, y, cv=10)\n", "print(\"Accuracy: %0.3f (+/- %0.3f)\" % (scores.mean(), scores.std() * 2))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Accuracy: 0.971 (+/- 0.029)\n" ] } ], "prompt_number": 29 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### They didn't really seem to help that much unfortunately. Below, we check out the confusion matrix, and see similar results as before." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import sklearn.ensemble\n", "from sklearn.metrics import confusion_matrix\n", "from sklearn.cross_validation import train_test_split\n", "\n", "# 80/20 Split for predictive test\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)\n", "clf_tags.fit(X_train, y_train)\n", "y_pred = clf_tags.predict(X_test)\n", "labels = ['benign', 'malicious']\n", "cm = confusion_matrix(y_test, y_pred, labels)\n", "plot_cm(cm, labels)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Confusion Matrix Stats\n", "benign/benign: 97.85% (91/93)\n", "benign/malicious: 2.15% (2/93)\n", "malicious/benign: 4.58% (6/131)\n", "malicious/malicious: 95.42% (125/131)\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 30 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### When checking the feature importance, we see that the new features were not really that important." ] }, { "cell_type": "code", "collapsed": false, "input": [ "importances = zip(tag_features, clf_tags.feature_importances_)\n", "importances.sort(key=lambda k:k[1], reverse=True)\n", "for idx, im in enumerate(importances[0:25]):\n", " print (str(idx+1) + ':').ljust(4), im[0].ljust(40), round(im[1], 5)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1: PlaceObject2 0.08836\n", "2: swf perimeter 0.08419\n", "3: entropy 0.08106\n", "4: swf area 0.07323\n", "5: tag count 0.06813\n", "6: size 0.06797\n", "7: frame rate 0.06583\n", "8: version 0.05843\n", "9: DefineShape 0.04059\n", "10: DefineShape3 0.03661\n", "11: ProductInfo 0.02833\n", "12: DefineFontName 0.02659\n", "13: Unknown 0.02473\n", "14: DefineFontAlignZones 0.01981\n", "15: frame count 0.01832\n", "16: ScriptLimits 0.01822\n", "17: DefineBitsJPEG2 0.0174\n", "18: DefineFont3 0.01693\n", "19: ExportAssets 0.01529\n", "20: Metadata 0.01521\n", "21: DefineBitsJPEG3 0.01431\n", "22: DefineSprite 0.01369\n", "23: DefineBinaryData 0.00869\n", "24: DebugID 0.00738\n", "25: DoABCDefine 0.00667\n" ] } ], "prompt_number": 31 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### ActionScript\n", "\n", "#### Next we will add in some features about ActionScript. First up is the number of strings." ] }, { "cell_type": "code", "collapsed": false, "input": [ "df.boxplot('abc string count', 'label')\n", "plt.xlabel('')\n", "plt.ylabel('Number of ActionScript Strings')\n", "plt.title('')\n", "plt.suptitle('')\n", "plt.ylim(0, 1000)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 32, "text": [ "(0, 1000)" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 32 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### This next feature is taking the length of every string and calculating the mean length and the median length of the string." ] }, { "cell_type": "code", "collapsed": false, "input": [ "df.boxplot('abc string m/m ratio', 'label')\n", "plt.xlabel('')\n", "plt.ylabel('ActionScript Mean/Median Ratio')\n", "plt.title('')\n", "plt.suptitle('')\n", "plt.ylim(0, 15)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 33, "text": [ "(0, 15)" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 33 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Now let's check out the classifier with these new features." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import sklearn.ensemble\n", "clf_abc = sklearn.ensemble.RandomForestClassifier(n_estimators=50)\n", "abc_features = ['entropy', 'frame count', 'frame rate', 'size', 'swf area', 'swf perimeter', 'version',\n", " 'CSMTextSettings', 'DebugID', 'DefineBinaryData', 'DefineBits',\n", " 'DefineBitsJPEG2', 'DefineBitsJPEG3', 'DefineBitsLossless',\n", " 'DefineBitsLossless2', 'DefineButton', 'DefineButton2',\n", " 'DefineButtonSound', 'DefineEditText', 'DefineFont', 'DefineFont2',\n", " 'DefineFont3', 'DefineFont4', 'DefineFontAlignZones', 'DefineFontInfo',\n", " 'DefineFontInfo2', 'DefineFontName', 'DefineMorphShape',\n", " 'DefineMorphShape2', 'DefineScalingGrid', 'DefineSceneAndFrameLabelData',\n", " 'DefineShape', 'DefineShape2', 'DefineShape3', 'DefineShape4',\n", " 'DefineSound', 'DefineSprite', 'DefineText', 'DefineText2',\n", " 'DefineVideoStream', 'DoABC', 'DoABCDefine', 'DoAction', 'DoInitAction',\n", " 'EnableDebugger2', 'End', 'ExportAssets', 'FileAttributes', 'FrameLabel',\n", " 'ImportAssets2', 'JPEGTables', 'Metadata', 'PlaceObject', 'PlaceObject2',\n", " 'PlaceObject3', 'ProductInfo', 'Protect', 'RemoveObject2', 'ScriptLimits',\n", " 'SetBackgroundColor', 'ShowFrame', 'SoundStreamBlock', 'SoundStreamHead',\n", " 'SoundStreamHead2', 'SymbolClass', 'Unknown', 'tag count', \n", " 'abc string count', 'abc string m/m ratio',\n", " 'bytecode name count', 'first abc bytecode name', 'long hex string',\n", " 'unique bytecode name count']\n", "\n", "X = df.as_matrix(abc_features)\n", "y = np.array(df['label'].tolist())\n", "\n", "scores = sklearn.cross_validation.cross_val_score(clf_abc, X, y, cv=10)\n", "print(\"Accuracy: %0.3f (+/- %0.3f)\" % (scores.mean(), scores.std() * 2))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Accuracy: 0.970 (+/- 0.028)\n" ] } ], "prompt_number": 34 }, { "cell_type": "code", "collapsed": false, "input": [ "#### Again, not a real improvement." ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 35 }, { "cell_type": "code", "collapsed": false, "input": [ "import sklearn.ensemble\n", "from sklearn.metrics import confusion_matrix\n", "from sklearn.cross_validation import train_test_split\n", "\n", "# 80/20 Split for predictive test\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)\n", "clf_abc.fit(X_train, y_train)\n", "y_pred = clf_abc.predict(X_test)\n", "labels = ['benign', 'malicious']\n", "cm = confusion_matrix(y_test, y_pred, labels)\n", "plot_cm(cm, labels)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Confusion Matrix Stats\n", "benign/benign: 97.22% (105/108)\n", "benign/malicious: 2.78% (3/108)\n", "malicious/benign: 1.72% (2/116)\n", "malicious/malicious: 98.28% (114/116)\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 36 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### We see the number of strings in actionscript is a relatively important feature, but not enough to make a significant improvement in the classifier." ] }, { "cell_type": "code", "collapsed": false, "input": [ "importances = zip(abc_features, clf_abc.feature_importances_)\n", "importances.sort(key=lambda k:k[1], reverse=True)\n", "total = 0\n", "for idx, im in enumerate(importances[0:20]):\n", " total += round(im[1], 5)\n", " print (str(idx+1) + ':').ljust(4), im[0].ljust(35), round(im[1], 5), total" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1: abc string count 0.08828 0.08828\n", "2: entropy 0.08444 0.17272\n", "3: swf area 0.06474 0.23746\n", "4: swf perimeter 0.05966 0.29712\n", "5: tag count 0.05951 0.35663\n", "6: PlaceObject2 0.05094 0.40757\n", "7: DefineShape3 0.05022 0.45779\n", "8: size 0.04628 0.50407\n", "9: frame rate 0.04317 0.54724\n", "10: version 0.04204 0.58928\n", "11: abc string m/m ratio 0.03019 0.61947\n", "12: DefineShape 0.02958 0.64905\n", "13: long hex string 0.02897 0.67802\n", "14: DefineSprite 0.02816 0.70618\n", "15: DefineFont3 0.02448 0.73066\n", "16: DefineBitsJPEG2 0.02426 0.75492\n", "17: DefineFontName 0.01949 0.77441\n", "18: ProductInfo 0.01839 0.7928\n", "19: Unknown 0.01636 0.80916\n", "20: first abc bytecode name 0.01585 0.82501\n" ] } ], "prompt_number": 37 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Testing on a large corpus of files\n", "\n", "#### In the next couple steps, we train a classifier on all the data, and then test it on approximately 289K files. This data is not labeled, but I would expect them all to be benign. Maybe a few malicious ones, but a small number." ] }, { "cell_type": "code", "collapsed": false, "input": [ "clf_everything = sklearn.ensemble.RandomForestClassifier(n_estimators=50)\n", "abc_features = ['entropy', 'frame count', 'frame rate', 'size', 'swf area', 'swf perimeter', 'version',\n", " 'CSMTextSettings', 'DebugID', 'DefineBinaryData', 'DefineBits',\n", " 'DefineBitsJPEG2', 'DefineBitsJPEG3', 'DefineBitsLossless',\n", " 'DefineBitsLossless2', 'DefineButton', 'DefineButton2',\n", " 'DefineButtonSound', 'DefineEditText', 'DefineFont', 'DefineFont2',\n", " 'DefineFont3', 'DefineFont4', 'DefineFontAlignZones', 'DefineFontInfo',\n", " 'DefineFontInfo2', 'DefineFontName', 'DefineMorphShape',\n", " 'DefineMorphShape2', 'DefineScalingGrid', 'DefineSceneAndFrameLabelData',\n", " 'DefineShape', 'DefineShape2', 'DefineShape3', 'DefineShape4',\n", " 'DefineSound', 'DefineSprite', 'DefineText', 'DefineText2',\n", " 'DefineVideoStream', 'DoABC', 'DoABCDefine', 'DoAction', 'DoInitAction',\n", " 'EnableDebugger2', 'End', 'ExportAssets', 'FileAttributes', 'FrameLabel',\n", " 'ImportAssets2', 'JPEGTables', 'Metadata', 'PlaceObject', 'PlaceObject2',\n", " 'PlaceObject3', 'ProductInfo', 'Protect', 'RemoveObject2', 'ScriptLimits',\n", " 'SetBackgroundColor', 'ShowFrame', 'SoundStreamBlock', 'SoundStreamHead',\n", " 'SoundStreamHead2', 'SymbolClass', 'Unknown', 'tag count', \n", " 'abc string count', 'abc string m/m ratio',\n", " 'bytecode name count', 'first abc bytecode name', 'long hex string',\n", " 'unique bytecode name count']\n", "\n", "X_all = df.as_matrix(abc_features)\n", "y_all = np.array(df['label'].tolist())\n", "clf_everything.fit(X_all, y_all)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 38, "text": [ "RandomForestClassifier(bootstrap=True, compute_importances=None,\n", " criterion='gini', max_depth=None, max_features='auto',\n", " min_density=None, min_samples_leaf=1, min_samples_split=2,\n", " n_estimators=50, n_jobs=1, oob_score=False, random_state=None,\n", " verbose=0)" ] } ], "prompt_number": 38 }, { "cell_type": "code", "collapsed": false, "input": [ "swf_malware_df = pd.read_hdf('data/swf_malware_df.hd5', 'table')\n", "swf_malware_df['label'] = 'malicious'\n", "swf_malware_df.shape" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "/opt/visiblerisk/lib/python2.7/site-packages/pandas/io/pytables.py:520: DeprecationWarning: openFile() is pending deprecation, use open_file() instead. You may use the pt2to3 tool to update your source code.\n", " self._handle = tables.openFile(self._path, self._mode, **kwargs)\n", "/opt/visiblerisk/lib/python2.7/site-packages/pandas/io/pytables.py:1017: DeprecationWarning: getNode() is pending deprecation, use get_node() instead. You may use the pt2to3 tool to update your source code.\n", " return self._handle.getNode(self.root, key)\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 39, "text": [ "(621, 89)" ] } ], "prompt_number": 39 }, { "cell_type": "code", "collapsed": false, "input": [ "swf_bigpile_df = pd.read_hdf('data/swf_bigpile_df.hd5', 'table')\n", "swf_bigpile_df['label'] = 'benign'\n", "swf_bigpile_df.shape" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "/opt/visiblerisk/lib/python2.7/site-packages/pandas/io/pytables.py:520: DeprecationWarning: openFile() is pending deprecation, use open_file() instead. You may use the pt2to3 tool to update your source code.\n", " self._handle = tables.openFile(self._path, self._mode, **kwargs)\n", "/opt/visiblerisk/lib/python2.7/site-packages/pandas/io/pytables.py:1017: DeprecationWarning: getNode() is pending deprecation, use get_node() instead. You may use the pt2to3 tool to update your source code.\n", " return self._handle.getNode(self.root, key)\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 40, "text": [ "(288846, 90)" ] } ], "prompt_number": 40 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### One of the features of the classifier is the ability to give a probability that the feature set belongs to a specific class. In the code below, we are asking the classifier to give us the probability the feature set (file) belongs to the malicious class. We interpret these results as anything less the 0.5 is benign, 0.5 - 0.8 is a gray area, and 0.8 and above is malicious." ] }, { "cell_type": "code", "collapsed": false, "input": [ "clean = 0\n", "gray = 0\n", "bad = 0\n", "for x in swf_bigpile_df.as_matrix(abc_features):\n", " try:\n", " score = clf_everything.predict_proba(x)[:,1][0]\n", " if score < 0.5:\n", " clean += 1\n", " elif score < 0.8:\n", " gray += 1\n", " else:\n", " bad += 1\n", " except:\n", " print \"Sad\"\n", " print x\n", " break\n", "\n", "print swf_bigpile_df.shape\n", "print clean\n", "print gray\n", "print bad" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(288846, 90)\n", "279673\n", "7215\n", "1958\n" ] } ], "prompt_number": 41 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 279K of the files were marked as clean. Almost 8K of the files are in the gray area, and almost 2K were classified as malicious. Clearly, this doesn't fit our expectations. But, we only started with a small number of files to train on. Next we will take 5K of the files, and blindly accept them as benign and add them to our training set. Ideally, we'd like to verify this first, but for now, we will just assume the random 5K are actually benign." ] }, { "cell_type": "code", "collapsed": false, "input": [ "swf_random_df = swf_bigpile_df.reindex(np.random.permutation(swf_bigpile_df.index))\n", "swf_random_5k_df = swf_random_df[0:5000]\n", "swf_random_the_rest_df = swf_random_df[5000:]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 42 }, { "cell_type": "code", "collapsed": false, "input": [ "swf_bigger_df = pd.concat([swf_malware_df, swf_random_5k_df], ignore_index=True)\n", "swf_bigger_df.fillna(0, inplace=True)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 43 }, { "cell_type": "code", "collapsed": false, "input": [ "import sklearn.ensemble\n", "from sklearn.metrics import confusion_matrix\n", "from sklearn.cross_validation import train_test_split\n", "\n", "clf_5k = sklearn.ensemble.RandomForestClassifier(n_estimators=50)\n", "abc_features = ['entropy', 'frame count', 'frame rate', 'size', 'swf area', 'swf perimeter', 'version',\n", " 'CSMTextSettings', 'DebugID', 'DefineBinaryData', 'DefineBits',\n", " 'DefineBitsJPEG2', 'DefineBitsJPEG3', 'DefineBitsLossless',\n", " 'DefineBitsLossless2', 'DefineButton', 'DefineButton2',\n", " 'DefineButtonSound', 'DefineEditText', 'DefineFont', 'DefineFont2',\n", " 'DefineFont3', 'DefineFont4', 'DefineFontAlignZones', 'DefineFontInfo',\n", " 'DefineFontInfo2', 'DefineFontName', 'DefineMorphShape',\n", " 'DefineMorphShape2', 'DefineScalingGrid', 'DefineSceneAndFrameLabelData',\n", " 'DefineShape', 'DefineShape2', 'DefineShape3', 'DefineShape4',\n", " 'DefineSound', 'DefineSprite', 'DefineText', 'DefineText2',\n", " 'DefineVideoStream', 'DoABC', 'DoABCDefine', 'DoAction', 'DoInitAction',\n", " 'EnableDebugger2', 'End', 'ExportAssets', 'FileAttributes', 'FrameLabel',\n", " 'ImportAssets2', 'JPEGTables', 'Metadata', 'PlaceObject', 'PlaceObject2',\n", " 'PlaceObject3', 'ProductInfo', 'Protect', 'RemoveObject2', 'ScriptLimits',\n", " 'SetBackgroundColor', 'ShowFrame', 'SoundStreamBlock', 'SoundStreamHead',\n", " 'SoundStreamHead2', 'SymbolClass', 'Unknown', 'tag count', \n", " 'abc string count', 'abc string m/m ratio',\n", " 'bytecode name count', 'first abc bytecode name', 'long hex string',\n", " 'unique bytecode name count']\n", "\n", "X = swf_bigger_df.as_matrix(abc_features)\n", "y = np.array(swf_bigger_df['label'].tolist())\n", "\n", "scores = sklearn.cross_validation.cross_val_score(clf_5k, X, y, cv=10)\n", "print(\"Accuracy: %0.3f (+/- %0.3f)\" % (scores.mean(), scores.std() * 2))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Accuracy: 0.990 (+/- 0.006)\n" ] } ], "prompt_number": 44 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### You can see we actually get significant improvement in the classifier. The rate is higher and the margin of error is smaller too. And looking at the confusion matrix below shows one classification detection isn't better than the other." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import sklearn.ensemble\n", "from sklearn.metrics import confusion_matrix\n", "from sklearn.cross_validation import train_test_split\n", "\n", "# 80/20 Split for predictive test\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)\n", "clf_5k.fit(X_train, y_train)\n", "y_pred = clf_abc.predict(X_test)\n", "labels = ['benign', 'malicious']\n", "cm = confusion_matrix(y_test, y_pred, labels)\n", "plot_cm(cm, labels)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Confusion Matrix Stats\n", "benign/benign: 95.01% (953/1003)\n", "benign/malicious: 4.99% (50/1003)\n", "malicious/benign: 0.00% (0/122)\n", "malicious/malicious: 100.00% (122/122)\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 45 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Not surprisingly, the feature importance is very similar to the smaller training set" ] }, { "cell_type": "code", "collapsed": false, "input": [ "importances = zip(abc_features, clf_5k.feature_importances_)\n", "importances.sort(key=lambda k:k[1], reverse=True)\n", "total = 0\n", "for idx, im in enumerate(importances[0:20]):\n", " total += round(im[1], 5)\n", " print (str(idx+1) + ':').ljust(4), im[0].ljust(35), round(im[1], 5), total" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1: swf perimeter 0.11688 0.11688\n", "2: swf area 0.0828 0.19968\n", "3: entropy 0.08055 0.28023\n", "4: abc string m/m ratio 0.06875 0.34898\n", "5: size 0.05404 0.40302\n", "6: abc string count 0.05321 0.45623\n", "7: frame rate 0.04839 0.50462\n", "8: tag count 0.04693 0.55155\n", "9: frame count 0.04146 0.59301\n", "10: PlaceObject2 0.0363 0.62931\n", "11: Unknown 0.03536 0.66467\n", "12: End 0.03411 0.69878\n", "13: first abc bytecode name 0.02746 0.72624\n", "14: version 0.02738 0.75362\n", "15: DoABCDefine 0.02428 0.7779\n", "16: DefineShape3 0.01646 0.79436\n", "17: bytecode name count 0.01576 0.81012\n", "18: DefineShape 0.01375 0.82387\n", "19: DefineSprite 0.01213 0.836\n", "20: FrameLabel 0.01186 0.84786\n" ] } ], "prompt_number": 46 }, { "cell_type": "code", "collapsed": false, "input": [ "#### Next we training over all the data again, and test on the large corpus of files." ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 47 }, { "cell_type": "code", "collapsed": false, "input": [ "clf_everything_2 = sklearn.ensemble.RandomForestClassifier(n_estimators=50)\n", "abc_features = ['entropy', 'frame count', 'frame rate', 'size', 'swf area', 'swf perimeter', 'version',\n", " 'CSMTextSettings', 'DebugID', 'DefineBinaryData', 'DefineBits',\n", " 'DefineBitsJPEG2', 'DefineBitsJPEG3', 'DefineBitsLossless',\n", " 'DefineBitsLossless2', 'DefineButton', 'DefineButton2',\n", " 'DefineButtonSound', 'DefineEditText', 'DefineFont', 'DefineFont2',\n", " 'DefineFont3', 'DefineFont4', 'DefineFontAlignZones', 'DefineFontInfo',\n", " 'DefineFontInfo2', 'DefineFontName', 'DefineMorphShape',\n", " 'DefineMorphShape2', 'DefineScalingGrid', 'DefineSceneAndFrameLabelData',\n", " 'DefineShape', 'DefineShape2', 'DefineShape3', 'DefineShape4',\n", " 'DefineSound', 'DefineSprite', 'DefineText', 'DefineText2',\n", " 'DefineVideoStream', 'DoABC', 'DoABCDefine', 'DoAction', 'DoInitAction',\n", " 'EnableDebugger2', 'End', 'ExportAssets', 'FileAttributes', 'FrameLabel',\n", " 'ImportAssets2', 'JPEGTables', 'Metadata', 'PlaceObject', 'PlaceObject2',\n", " 'PlaceObject3', 'ProductInfo', 'Protect', 'RemoveObject2', 'ScriptLimits',\n", " 'SetBackgroundColor', 'ShowFrame', 'SoundStreamBlock', 'SoundStreamHead',\n", " 'SoundStreamHead2', 'SymbolClass', 'Unknown', 'tag count', \n", " 'abc string count', 'abc string m/m ratio',\n", " 'bytecode name count', 'first abc bytecode name', 'long hex string',\n", " 'unique bytecode name count']\n", "\n", "X_all_2 = swf_bigger_df.as_matrix(abc_features)\n", "y_all_2 = np.array(swf_bigger_df['label'].tolist())\n", "clf_everything_2.fit(X_all_2, y_all_2)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 48, "text": [ "RandomForestClassifier(bootstrap=True, compute_importances=None,\n", " criterion='gini', max_depth=None, max_features='auto',\n", " min_density=None, min_samples_leaf=1, min_samples_split=2,\n", " n_estimators=50, n_jobs=1, oob_score=False, random_state=None,\n", " verbose=0)" ] } ], "prompt_number": 48 }, { "cell_type": "code", "collapsed": false, "input": [ "clean = 0\n", "gray = 0\n", "bad = 0\n", "for x in swf_random_the_rest_df.as_matrix(abc_features):\n", " try:\n", " score = clf_everything_2.predict_proba(x)[:,1][0]\n", " if score < 0.5:\n", " clean += 1\n", " elif score < 0.8:\n", " gray += 1\n", " else:\n", " bad += 1\n", " except:\n", " print \"Sad\"\n", " print x\n", " break\n", "\n", "print swf_bigpile_df.shape\n", "print clean\n", "print gray\n", "print bad" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(288846, 90)\n", "282662\n", "800\n", "384\n" ] } ], "prompt_number": 49 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### You can see that there is a big improvement in the gray and malicious classification. There is still room for improvement, but we are moving closer to a manageable level of detections an analyst could look at.\n", "\n", "\n", "#### Next we explore the idea that since we added features about actionscript, maybe we should limit the classifier to only train and test on files that contain actionscript since those features will be meaningless when actionscript is not present." ] }, { "cell_type": "code", "collapsed": false, "input": [ "df_abc_only = swf_bigger_df[(swf_bigger_df['DoABC'] == 1) | (swf_bigger_df['DoABCDefine'] == 1)]\n", "df_abc_only.shape" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 50, "text": [ "(3246, 90)" ] } ], "prompt_number": 50 }, { "cell_type": "code", "collapsed": false, "input": [ "import sklearn.ensemble\n", "from sklearn.metrics import confusion_matrix\n", "from sklearn.cross_validation import train_test_split\n", "\n", "clf_abc_only = sklearn.ensemble.RandomForestClassifier(n_estimators=50)\n", "abc_features = ['entropy', 'frame count', 'frame rate', 'size', 'swf area', 'swf perimeter', 'version',\n", " 'CSMTextSettings', 'DebugID', 'DefineBinaryData', 'DefineBits',\n", " 'DefineBitsJPEG2', 'DefineBitsJPEG3', 'DefineBitsLossless',\n", " 'DefineBitsLossless2', 'DefineButton', 'DefineButton2',\n", " 'DefineButtonSound', 'DefineEditText', 'DefineFont', 'DefineFont2',\n", " 'DefineFont3', 'DefineFont4', 'DefineFontAlignZones', 'DefineFontInfo',\n", " 'DefineFontInfo2', 'DefineFontName', 'DefineMorphShape',\n", " 'DefineMorphShape2', 'DefineScalingGrid', 'DefineSceneAndFrameLabelData',\n", " 'DefineShape', 'DefineShape2', 'DefineShape3', 'DefineShape4',\n", " 'DefineSound', 'DefineSprite', 'DefineText', 'DefineText2',\n", " 'DefineVideoStream', 'DoABC', 'DoABCDefine', 'DoAction', 'DoInitAction',\n", " 'EnableDebugger2', 'End', 'ExportAssets', 'FileAttributes', 'FrameLabel',\n", " 'ImportAssets2', 'JPEGTables', 'Metadata', 'PlaceObject', 'PlaceObject2',\n", " 'PlaceObject3', 'ProductInfo', 'Protect', 'RemoveObject2', 'ScriptLimits',\n", " 'SetBackgroundColor', 'ShowFrame', 'SoundStreamBlock', 'SoundStreamHead',\n", " 'SoundStreamHead2', 'SymbolClass', 'Unknown', 'tag count', \n", " 'abc string count', 'abc string m/m ratio',\n", " 'bytecode name count', 'first abc bytecode name', 'long hex string',\n", " 'unique bytecode name count']\n", "\n", "X = df_abc_only.as_matrix(abc_features)\n", "y = np.array(df_abc_only['label'].tolist())\n", "\n", "scores = sklearn.cross_validation.cross_val_score(clf_abc_only, X, y, cv=10)\n", "print(\"Accuracy: %0.3f (+/- %0.3f)\" % (scores.mean(), scores.std() * 2))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Accuracy: 0.992 (+/- 0.008)\n" ] } ], "prompt_number": 51 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Surprisingly (at least to me), no significant improvement was noticed." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import sklearn.ensemble\n", "from sklearn.metrics import confusion_matrix\n", "from sklearn.cross_validation import train_test_split\n", "\n", "# 80/20 Split for predictive test\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)\n", "clf_abc_only.fit(X_train, y_train)\n", "y_pred = clf_abc.predict(X_test)\n", "labels = ['benign', 'malicious']\n", "cm = confusion_matrix(y_test, y_pred, labels)\n", "plot_cm(cm, labels)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Confusion Matrix Stats\n", "benign/benign: 96.92% (535/552)\n", "benign/malicious: 3.08% (17/552)\n", "malicious/benign: 0.00% (0/98)\n", "malicious/malicious: 100.00% (98/98)\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 53 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### When we check the importance, we see some of the actionscript feature are more prominent, but they don't contain enough information to make a significant improvement to the classifier." ] }, { "cell_type": "code", "collapsed": false, "input": [ "importances = zip(abc_features, clf_abc.feature_importances_)\n", "importances.sort(key=lambda k:k[1], reverse=True)\n", "total = 0\n", "for idx, im in enumerate(importances[0:20]):\n", " total += round(im[1], 5)\n", " print (str(idx+1) + ':').ljust(4), im[0].ljust(35), round(im[1], 5), total" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1: abc string count 0.08828 0.08828\n", "2: entropy 0.08444 0.17272\n", "3: swf area 0.06474 0.23746\n", "4: swf perimeter 0.05966 0.29712\n", "5: tag count 0.05951 0.35663\n", "6: PlaceObject2 0.05094 0.40757\n", "7: DefineShape3 0.05022 0.45779\n", "8: size 0.04628 0.50407\n", "9: frame rate 0.04317 0.54724\n", "10: version 0.04204 0.58928\n", "11: abc string m/m ratio 0.03019 0.61947\n", "12: DefineShape 0.02958 0.64905\n", "13: long hex string 0.02897 0.67802\n", "14: DefineSprite 0.02816 0.70618\n", "15: DefineFont3 0.02448 0.73066\n", "16: DefineBitsJPEG2 0.02426 0.75492\n", "17: DefineFontName 0.01949 0.77441\n", "18: ProductInfo 0.01839 0.7928\n", "19: Unknown 0.01636 0.80916\n", "20: first abc bytecode name 0.01585 0.82501\n" ] } ], "prompt_number": 54 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Finally, we test on the large corpus of files, but limit them to just actionscript again." ] }, { "cell_type": "code", "collapsed": false, "input": [ "swf_abc_only_the_rest_df = swf_random_the_rest_df[(swf_random_the_rest_df['DoABC'] == 1) | (swf_random_the_rest_df['DoABCDefine'] == 1)]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 55 }, { "cell_type": "code", "collapsed": false, "input": [ "clf_everything_abc = sklearn.ensemble.RandomForestClassifier(n_estimators=50)\n", "abc_features = ['entropy', 'frame count', 'frame rate', 'size', 'swf area', 'swf perimeter', 'version',\n", " 'CSMTextSettings', 'DebugID', 'DefineBinaryData', 'DefineBits',\n", " 'DefineBitsJPEG2', 'DefineBitsJPEG3', 'DefineBitsLossless',\n", " 'DefineBitsLossless2', 'DefineButton', 'DefineButton2',\n", " 'DefineButtonSound', 'DefineEditText', 'DefineFont', 'DefineFont2',\n", " 'DefineFont3', 'DefineFont4', 'DefineFontAlignZones', 'DefineFontInfo',\n", " 'DefineFontInfo2', 'DefineFontName', 'DefineMorphShape',\n", " 'DefineMorphShape2', 'DefineScalingGrid', 'DefineSceneAndFrameLabelData',\n", " 'DefineShape', 'DefineShape2', 'DefineShape3', 'DefineShape4',\n", " 'DefineSound', 'DefineSprite', 'DefineText', 'DefineText2',\n", " 'DefineVideoStream', 'DoABC', 'DoABCDefine', 'DoAction', 'DoInitAction',\n", " 'EnableDebugger2', 'End', 'ExportAssets', 'FileAttributes', 'FrameLabel',\n", " 'ImportAssets2', 'JPEGTables', 'Metadata', 'PlaceObject', 'PlaceObject2',\n", " 'PlaceObject3', 'ProductInfo', 'Protect', 'RemoveObject2', 'ScriptLimits',\n", " 'SetBackgroundColor', 'ShowFrame', 'SoundStreamBlock', 'SoundStreamHead',\n", " 'SoundStreamHead2', 'SymbolClass', 'Unknown', 'tag count', \n", " 'abc string count', 'abc string m/m ratio',\n", " 'bytecode name count', 'first abc bytecode name', 'long hex string',\n", " 'unique bytecode name count']\n", "\n", "X_all_3 = df_abc_only.as_matrix(abc_features)\n", "y_all_3 = np.array(df_abc_only['label'].tolist())\n", "clf_everything_abc.fit(X_all_3, y_all_3)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 56, "text": [ "RandomForestClassifier(bootstrap=True, compute_importances=None,\n", " criterion='gini', max_depth=None, max_features='auto',\n", " min_density=None, min_samples_leaf=1, min_samples_split=2,\n", " n_estimators=50, n_jobs=1, oob_score=False, random_state=None,\n", " verbose=0)" ] } ], "prompt_number": 56 }, { "cell_type": "code", "collapsed": false, "input": [ "clean = 0\n", "gray = 0\n", "bad = 0\n", "for x in swf_abc_only_the_rest_df.as_matrix(abc_features):\n", " try:\n", " score = clf_everything_abc.predict_proba(x)[:,1][0]\n", " if score < 0.5:\n", " clean += 1\n", " elif score < 0.8:\n", " gray += 1\n", " else:\n", " bad += 1\n", " except Exception as e:\n", " print \"Sad\"\n", " print e\n", " print x\n", " break\n", "\n", "print swf_abc_only_the_rest_df.shape\n", "print clean\n", "print gray\n", "print bad" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(152768, 90)\n", "151967\n", "474\n", "327\n" ] } ], "prompt_number": 57 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### The percentage marked as gray and malicious are about the same, so again, no real improvement." ] } ], "metadata": {} } ] }