Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
aaqibsaeed authored Jul 17, 2016
1 parent 4579aec commit b2f882b
Show file tree
Hide file tree
Showing 4 changed files with 1,182 additions and 0 deletions.
261 changes: 261 additions & 0 deletions Anomaly Detection.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,261 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"%matplotlib inline\n",
"\n",
"from numpy import genfromtxt\n",
"from scipy.stats import multivariate_normal\n",
"from sklearn.metrics import precision_recall_fscore_support"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def read_dataset(filePath,delimiter=','):\n",
" return genfromtxt(filePath, delimiter=delimiter)\n",
"\n",
"def feature_normalize(dataset):\n",
" mu = np.mean(dataset,axis=0)\n",
" sigma = np.std(dataset,axis=0)\n",
" return (dataset - mu)/sigma\n",
"\n",
"def estimateGaussian(dataset):\n",
" mu = np.mean(dataset, axis=0)\n",
" sigma = np.cov(dataset.T)\n",
" return mu, sigma\n",
" \n",
"def multivariateGaussian(dataset,mu,sigma):\n",
" p = multivariate_normal(mean=mu, cov=sigma)\n",
" return p.pdf(dataset)\n",
"\n",
"def selectThresholdByCV(probs,gt):\n",
" best_epsilon = 0\n",
" best_f1 = 0\n",
" f = 0\n",
" \n",
" stepsize = (max(probs) - min(probs)) / 1000;\n",
" epsilons = np.arange(min(probs),max(probs),stepsize)\n",
" \n",
" for epsilon in np.nditer(epsilons):\n",
" predictions = (probs < epsilon) * 1\n",
" p, r, f, s = precision_recall_fscore_support(gt, predictions,average='binary')\n",
"\n",
" if f > best_f1:\n",
" best_f1 = f\n",
" best_epsilon = epsilon\n",
" \n",
" return best_f1, best_epsilon"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"tr_data = read_dataset('tr_server_data.csv')\n",
"cv_data = read_dataset('cv_server_data.csv')\n",
"gt_data = read_dataset('gt_server_data.csv')\n",
"\n",
"n_training_samples = tr_data.shape[0]\n",
"n_dim = tr_data.shape[1]\n",
"\n",
"print('Number of datapoints in training set: %d' % n_training_samples)\n",
"print('Number of dimensions/features: %d' % n_dim)\n",
"\n",
"\n",
"print(tr_data[1:5,:])\n",
"\n",
"plt.xlabel('Latency (ms)')\n",
"plt.ylabel('Throughput (mb/s)')\n",
"plt.plot(tr_data[:,0],tr_data[:,1],'o')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"mu, sigma = estimateGaussian(tr_data)\n",
"p = multivariateGaussian(tr_data,mu,sigma)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"#selecting optimal value of epsilon using cross validation\n",
"p_cv = multivariateGaussian(cv_data,mu,sigma)\n",
"fscore, ep = selectThresholdByCV(p_cv,gt_data)\n",
"print fscore, ep"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"#selecting outlier datapoints \n",
"outliers = np.asarray(np.where(p < ep))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"plt.figure()\n",
"plt.xlabel('Latency (ms)')\n",
"plt.ylabel('Throughput (mb/s)')\n",
"plt.plot(tr_data[:,0],tr_data[:,1],'bx')\n",
"plt.plot(tr_data[outliers,0],tr_data[outliers,1],'ro')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 104,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"d = pd.read_csv('mavg.tsv','\\t',header=None)\n",
"mavg = d.rolling(3).mean().dropna()\n",
"mavg_array = np.asarray(mavg)"
]
},
{
"cell_type": "code",
"execution_count": 105,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[ 2004. 5. ]\n",
" [ 2005. 6.33333333]\n",
" [ 2006. 7.33333333]\n",
" [ 2007. 7.33333333]\n",
" [ 2008. 6. ]\n",
" [ 2009. 4. ]\n",
" [ 2010. 4.66666667]\n",
" [ 2011. 6. ]]\n"
]
}
],
"source": [
"print mavg_array"
]
},
{
"cell_type": "code",
"execution_count": 107,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7f41e5112d10>]"
]
},
"execution_count": 107,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f41e808f050>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure()\n",
"plt.xlim([2002,2012])\n",
"plt.ylim([0,7])\n",
"plt.plot(mavg_array[:,0],mavg_array[:,1])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.12"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Loading

0 comments on commit b2f882b

Please sign in to comment.