Commit b79f5c74 authored by Sushil Bhattacharjee's avatar Sushil Bhattacharjee

fixed files in virtual machine

parent cde201cc
Pipeline #24354 failed with stage
in 2 seconds
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Gaussian Mixture Modeling for 2D Data"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# start with k-means, and explain the difference between k-means and GMM\n",
"#HOUSEKEEPING: initial set up\n",
"%matplotlib inline\n",
"import numpy as np\n",
"#from sklearn.mixture import GMM\n",
"from sklearn.mixture import GaussianMixture as GMM2\n",
"from matplotlib import pyplot as plt\n",
"from matplotlib.patches import Ellipse\n",
"\n",
"import warnings\n",
"import time\n",
"\n",
"warnings.simplefilter(\"ignore\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#define function to plot k-means results\n",
"from sklearn.cluster import KMeans\n",
"from scipy.spatial.distance import cdist\n",
"warnings.simplefilter(\"ignore\")\n",
"\n",
"def plot_kmeans(kmeans, X, n_clusters=4, rseed=0, axs=None):\n",
" labels = kmeans.fit_predict(X)\n",
"# define some plotting functions\n",
"\n",
" # plot the input data\n",
" ax = axs or plt.gca()\n",
"def plot_data_points(ds, labels=None):\n",
" fig=plt.figure(figsize=(12, 7))\n",
" fig.subplots_adjust(left=0.12, right=0.97, bottom=0.21, top=0.9, wspace=0.5)\n",
" \n",
" ax = fig.add_subplot(111)\n",
" ax.axis('equal')\n",
" ax.scatter(X[:, 0], X[:, 1], c=labels, s=40, cmap='viridis', zorder=2)\n",
"\n",
" # plot the representation of the KMeans model\n",
" centers = kmeans.cluster_centers_\n",
" radii = [cdist(X[labels == i], [center]).max() for i, center in enumerate(centers)]\n",
" for c, r in zip(centers, radii):\n",
" ax.add_patch(plt.Circle(c, r, fc='#CCCCCC', lw=3, alpha=0.5, zorder=1))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Generate some data\n",
"from sklearn.datasets.samples_generator import make_blobs\n",
"X, y_true = make_blobs(n_samples=500, centers=4, cluster_std=0.60, random_state=0)\n",
"X = X[:, ::-1] # flip axes for better plotting"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Plot the data with K Means Labels\n",
"from sklearn.cluster import KMeans\n",
"kmeans = KMeans(4, random_state=0, max_iter=1)\n",
"labels = kmeans.fit(X).predict(X)\n",
" ax.scatter(ds[:,0], ds[:,1], c=labels, s=40, cmap='viridis', zorder=2)\n",
"\n",
"fig = plt.figure(figsize=(12, 7))\n",
"fig.subplots_adjust(left=0.12, right=0.97, bottom=0.21, top=0.9, wspace=0.5)\n",
"\n",
"ax = fig.add_subplot(111)\n",
"ax.scatter(X[:,0], X[:,1])\n",
"ax.axis('equal')\n",
"#ax.scatter(X[:, 0], X[:, 1], c=labels, s=40, cmap='viridis');\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"fig = plt.figure(figsize=(12, 7))\n",
"fig.subplots_adjust(left=0.12, right=0.97, bottom=0.21, top=0.9, wspace=0.5)\n",
"ax = fig.add_subplot(111)\n",
"kmeans = KMeans(n_clusters=4, random_state=0, max_iter=1)\n",
"plot_kmeans(kmeans, X, n_clusters=4, axs=ax)\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"rng = np.random.RandomState(8)\n",
"X_stretched = np.dot(X, rng.randn(2, 2))\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"fig = plt.figure(figsize=(12, 7))\n",
"fig.subplots_adjust(left=0.12, right=0.97, bottom=0.21, top=0.9, wspace=0.5)\n",
"ax = fig.add_subplot(111)\n",
"ax.axis('equal')\n",
"ax.scatter(X_stretched[:, 0], X_stretched[:, 1])#, c=labels, s=40, cmap='viridis');\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"fig = plt.figure(figsize=(12, 7))\n",
"fig.subplots_adjust(left=0.12, right=0.97, bottom=0.21, top=0.9, wspace=0.5)\n",
"ax = fig.add_subplot(111)\n",
"\n",
"kmeans = KMeans(n_clusters=4, random_state=0)\n",
"plot_kmeans(kmeans, X_stretched)\n",
"#ax.set_ylim(-4,4)\n",
"#ax.set_xlim(0,10)\n",
"#plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#try clustering with gmm\n",
"#from sklearn.mixture import GaussianMixture as GMM\n",
"\n",
"fig = plt.figure(figsize=(12, 7))\n",
"fig.subplots_adjust(left=0.12, right=0.97, bottom=0.21, top=0.9, wspace=0.5)\n",
"ax = fig.add_subplot(111)\n",
"\n",
"gmm = GMM2(n_components=4).fit(X)\n",
"labels = gmm.predict(X)\n",
"plt.scatter(X[:, 0], X[:, 1]);\n",
"#plt.scatter(X[:, 0], X[:, 1], c=labels, s=40, cmap='viridis');"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#define some plotting functions\n",
"from matplotlib.patches import Ellipse\n",
"\n",
"def draw_ellipse(position, covariance, ax=None, **kwargs):\n",
" \"\"\"Draw an ellipse with a given position and covariance\"\"\"\n",
......@@ -178,8 +55,12 @@
" ax.add_patch(Ellipse(position, nsig * width, nsig * height,\n",
" angle, **kwargs))\n",
" \n",
"def plot_gmm(gmm, X, label=True, ax=None):\n",
" ax = ax or plt.gca()\n",
"def plot_gmm(gmm, X, label=True):\n",
" fig = plt.figure(figsize=(12, 7))\n",
" fig.subplots_adjust(left=0.12, right=0.97, bottom=0.21, top=0.9, wspace=0.5)\n",
" ax = fig.add_subplot(111)\n",
"\n",
" #ax = ax or plt.gca()\n",
" labels = gmm.fit(X).predict(X)\n",
" if label:\n",
" ax.scatter(X[:, 0], X[:, 1], c=labels, s=40, cmap='viridis', zorder=2)\n",
......@@ -190,7 +71,7 @@
" w_factor = 0.2 / gmm.weights_.max()\n",
" gmm_pars = zip(gmm.means_, gmm.covariances_, gmm.weights_)\n",
" for pos, covar, w in gmm_pars:\n",
" draw_ellipse(pos, covar, alpha=w * w_factor)\n"
" draw_ellipse(pos, covar, alpha=w * w_factor)"
]
},
{
......@@ -199,11 +80,22 @@
"metadata": {},
"outputs": [],
"source": [
"#plot GMM results\n",
"fig = plt.figure(figsize=(12, 7))\n",
"fig.subplots_adjust(left=0.12, right=0.97, bottom=0.21, top=0.9, wspace=0.5)\n",
"ax = fig.add_subplot(111)\n",
"# Generate some data\n",
"from sklearn.datasets.samples_generator import make_blobs\n",
"X, y_true = make_blobs(n_samples=500, centers=4, cluster_std=0.6, random_state=0)\n",
"X = X[:,::-1] #flip axes for better plotting\n",
"\n",
"#plot the data\n",
"plot_data_points(X)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#plot GMM results\n",
"gmm = GMM2(n_components=4, covariance_type='full', random_state=42)\n",
"plot_gmm(gmm, X)"
]
......@@ -212,28 +104,33 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"## Full Covariance Matrix\n",
"<table>\n",
" <tr>\n",
" <td>\n",
" Full Covariance Matrix\n",
"\\begin{bmatrix} \n",
" \\sigma_{11} & \\sigma_{12} \\\\\n",
" \\sigma_{21} & \\sigma_{22} \\\\\n",
" \\huge \\sigma_{11} & \\huge \\sigma_{12} \\\\\n",
" \\huge \\sigma_{21} & \\huge \\sigma_{22} \\\\\n",
"\\end{bmatrix}\n",
" </td>\n",
" </tr>\n",
"</table>\n",
"\n",
"\n",
"## Diagonal Covariance Matrix\n",
"<table>\n",
" <tr>\n",
" <td>\n",
" ~~~\n",
" </td>\n",
" <td>\n",
" Diagonal Covariance Matrix\n",
"\\begin{bmatrix}\n",
" \\huge\n",
" \\sigma_{11} & 0 \\\\\n",
" 0 & \\sigma_{22}\n",
" \\huge \\sigma_{11} & \\huge 0 \\\\\n",
" \\huge 0 & \\huge \\sigma_{22}\n",
"\\end{bmatrix}\n",
" </td>\n",
" </tr>\n",
"</table>"
"</table>\n",
"\n",
"\n",
"## Why does this covariance matrix have dimensions $2 \\times 2$ ?"
]
},
{
......@@ -242,8 +139,11 @@
"metadata": {},
"outputs": [],
"source": [
"#rng = np.random.RandomState(8)\n",
"rng = np.random.RandomState(10)\n",
"X_stretched = np.dot(X, rng.randn(2, 2))"
"X_stretched = np.dot(X, rng.randn(2, 2))\n",
"#X_stretched = X_stretched[:,::-1] #flip axes\n",
"plot_data_points(X_stretched)"
]
},
{
......@@ -253,15 +153,22 @@
"outputs": [],
"source": [
"#GMM approximation of X_stretched\n",
"# change the 'covariance_type' ('diag' or 'full') to see the difference.\n",
"fig = plt.figure(figsize=(12, 7))\n",
"fig.subplots_adjust(left=0.12, right=0.97, bottom=0.21, top=0.9, wspace=0.5)\n",
"ax = fig.add_subplot(111)\n",
"\n",
"\n",
"# change the 'covariance_type' ('diag' or 'full') to see the difference.\n",
"gmm2 = GMM2(n_components=4, covariance_type='full', random_state=42)\n",
"plot_gmm(gmm2, X_stretched)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Modeling complex data distributions\n",
"\n",
"### Complex data distributions can be modelled by ensembles of Gaussians."
]
},
{
"cell_type": "code",
"execution_count": null,
......@@ -279,21 +186,33 @@
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Try to find a good fit for a GMM by varying the number of components\n",
"\n",
"## Change the covariance-type ('full' or 'diag') to see which option is better for this data."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"fig = plt.figure(figsize=(12, 7))\n",
"fig.subplots_adjust(left=0.12, right=0.97, bottom=0.21, top=0.9, wspace=0.5)\n",
"ax = fig.add_subplot(111)\n",
"\n",
"#try different number of n_components\n",
"my_gmm2 = GMM2(n_components=2, covariance_type='full', random_state=0)\n",
"plot_gmm(my_gmm2, Xmoon)\n",
"print(\"Log Likelikelihood:???\")"
"#print(\"Log Likelikelihood:???\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
......@@ -312,7 +231,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.5"
"version": "3.6.6"
}
},
"nbformat": 4,
......
......@@ -280,7 +280,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.5"
"version": "3.6.6"
}
},
"nbformat": 4,
......
......@@ -9,7 +9,7 @@
},
{
"cell_type": "code",
"execution_count": 1,
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
......@@ -37,18 +37,9 @@
},
{
"cell_type": "code",
"execution_count": 2,
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Enrolled Clients: 10\n",
" ['Saul', 'Shane', 'Steltek', 'rortiz', 'scottlacysalley', 'sharrington', 'soulphox', 'tomhannen', 'topherfangio', 'unbridledrage']\n"
]
}
],
"outputs": [],
"source": [
"# HOUSEKEEPING: Initialize a GMM variable.\n",
"# This will hold the UBM-GMM, and given a speaker-identity and a feature-set,\n",
......@@ -88,19 +79,9 @@
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Thresholds from dev set:\n",
"FMR @ 0.1%: 0.92\n",
"FMR @ 0.01%: 1.44\n"
]
}
],
"outputs": [],
"source": [
"# determine score-thresholds from 'dev' set\n",
"# repeated from previous exercise\n",
......@@ -138,7 +119,7 @@
},
{
"cell_type": "code",
"execution_count": 4,
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
......@@ -158,7 +139,7 @@
},
{
"cell_type": "code",
"execution_count": 5,
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
......@@ -167,27 +148,9 @@
},
{
"cell_type": "code",
"execution_count": 6,
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Computing scores for genuine presentations:\n",
"Claimed id 1: Saul\n",
"Claimed id 2: Shane\n",
"Claimed id 3: Steltek\n",
"Claimed id 4: rortiz\n",
"Claimed id 5: scottlacysalley\n",
"Claimed id 6: sharrington\n",
"Claimed id 7: soulphox\n",
"Claimed id 8: tomhannen\n",
"Claimed id 9: topherfangio\n",
"Claimed id 10: unbridledrage\n"
]
}
],
"outputs": [],
"source": [
"#compute probe-presentation scores for genuine and ZEI presentations...\n",
"\n",
......@@ -203,38 +166,9 @@
},
{
"cell_type": "code",
"execution_count": 7,
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Computing scores for ZEI presentations:\n",
"Claimed id 1: Saul\n",
"ZEI attackers: ['Shane', 'Steltek', 'rortiz', 'scottlacysalley', 'sharrington', 'soulphox', 'tomhannen', 'topherfangio', 'unbridledrage']\n",
"Claimed id 2: Shane\n",
"ZEI attackers: ['Saul', 'Steltek', 'rortiz', 'scottlacysalley', 'sharrington', 'soulphox', 'tomhannen', 'topherfangio', 'unbridledrage']\n",
"Claimed id 3: Steltek\n",
"ZEI attackers: ['Saul', 'Shane', 'rortiz', 'scottlacysalley', 'sharrington', 'soulphox', 'tomhannen', 'topherfangio', 'unbridledrage']\n",
"Claimed id 4: rortiz\n",
"ZEI attackers: ['Saul', 'Shane', 'Steltek', 'scottlacysalley', 'sharrington', 'soulphox', 'tomhannen', 'topherfangio', 'unbridledrage']\n",
"Claimed id 5: scottlacysalley\n",
"ZEI attackers: ['Saul', 'Shane', 'Steltek', 'rortiz', 'sharrington', 'soulphox', 'tomhannen', 'topherfangio', 'unbridledrage']\n",
"Claimed id 6: sharrington\n",
"ZEI attackers: ['Saul', 'Shane', 'Steltek', 'rortiz', 'scottlacysalley', 'soulphox', 'tomhannen', 'topherfangio', 'unbridledrage']\n",
"Claimed id 7: soulphox\n",
"ZEI attackers: ['Saul', 'Shane', 'Steltek', 'rortiz', 'scottlacysalley', 'sharrington', 'tomhannen', 'topherfangio', 'unbridledrage']\n",
"Claimed id 8: tomhannen\n",
"ZEI attackers: ['Saul', 'Shane', 'Steltek', 'rortiz', 'scottlacysalley', 'sharrington', 'soulphox', 'topherfangio', 'unbridledrage']\n",
"Claimed id 9: topherfangio\n",
"ZEI attackers: ['Saul', 'Shane', 'Steltek', 'rortiz', 'scottlacysalley', 'sharrington', 'soulphox', 'tomhannen', 'unbridledrage']\n",
"Claimed id 10: unbridledrage\n",
"ZEI attackers: ['Saul', 'Shane', 'Steltek', 'rortiz', 'scottlacysalley', 'sharrington', 'soulphox', 'tomhannen', 'topherfangio']\n"
]
}
],
"outputs": [],
"source": [
"print('\\nComputing scores for ZEI presentations:')\n",
"zei_score_dict = {}\n",
......@@ -260,7 +194,7 @@
},
{
"cell_type": "code",
"execution_count": 8,
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
......@@ -287,32 +221,9 @@
},
{
"cell_type": "code",
"execution_count": 9,
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA6UAAAJBCAYAAAC+gxNmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xu8VVW9N/7v2IAockkFRbmachFBNNBuVCT4OlqhJR0sb4dOqWnpT61TmZeszJ6erPzlUcrK40nN1Ow5ig/ZL0VELCstNEUwUxAMFQHBCyKwx++PtXchbthrwd5M95rv9+s1XpM111hzftceW+XjGHPOlHMOAAAAKEJD0QUAAABQXkIpAAAAhRFKAQAAKIxQCgAAQGGEUgAAAArTuegCAADo2B544IHdO3fu/OOIGBkmPahOY0Q8vH79+k+NGTPmuaKLoVhCKQAA26Rz584/7tu37359+vRZ2dDQ4HmDtKqxsTEtW7ZsxDPPPPPjiDiy6Hoolv+TBQDAthrZp0+f1QIp1WpoaMh9+vRZFZXZdUpOKAUAYFs1CKTUqul3Rh7BLwEAAADFEUoBAOjwOnXqNGb48OEjmtuCBQt2uO2223qklMZ873vf693c7957790ppTTmggsu2CMiYvLkyYP79es3avjw4SOGDRs24pZbbulR7TkbGxtj6tSpAwYOHDhy6NChI+bMmdOtpX6nn356v759+x7QrVu3g7b9m0L9EUoBAOjwunbt2jh//vx5zW3YsGGvRUQMGTJkzS9+8Ytdmvtde+21uw4bNmzNxp+96KKLlsyfP3/eJZdcsviMM84YVO05b7rppl5PPPHEjgsXLnx42rRpi0477bSBLfX78Ic//MLvf//7R7f2u0G9E0oBAKhb/fr1e23t2rUNixcv7tzY2BgzZ87sNWHChFUt9Z0wYcJLzz33XJdqj33LLbe85bjjjlve0NAQEyZMeHn16tWdFy1a9IbPT5gw4eVBgwat25bvAfXMI2EAAGhbhxwy7A37jj56RXzpS8vixRcbYsKEIW94//jjn48zzlgeS5d2jqOO2ud17/3hDwtaO+XatWsbhg8fPiIiYsCAAWt/85vf/K35vQ9/+MMrr7nmml3Gjh37yqhRo17p2rVrizdluvnmm3tNnDjxhebXn/zkJwfce++9b1jOe/TRR6+4+OKLn1m6dGmXwYMHv9a8f88993xt0aJFXQRQqI1QCgBAh9e8fLel90488cQVkydP3mf+/Pk7HXvssSvmzJnTfeP3zzvvvP7nn39+/xUrVnS+++67/7HM9ic/+cniLZ0z5zdm25TSVn4DKC+hFACAtrWlmc0ePRq3+P6ee66vZma0FgMHDlzfpUuXPHv27J5XXXXVU5uG0osuumjJiSeeuPIb3/jG7lOnTt37kUceeTSi9ZnSvfbaa93ChQt3aN6/dOnSHQYOHGiWFGoklAIAUPe++tWvPv3MM8906dy55b/+durUKc4777znrr/++t4333xzz8mTJ69ubab0yCOPfOGKK67Y/aSTTlpx11137dyjR48Nlu5C7dzoCACAunfYYYe9fMIJJ7ywpT4NDQ3xxS9+8e+XXHJJ32qOOWXKlFWDBg1aO2jQoJGnnnrqoMsvv3xR83vN17dGRHz605/uv8ceexzw6quvNuyxxx4HnH322Xtt/TeB+pNaWgsPAADVevDBBxeOHj36+aLroON58MEHe48ePXpw0XVQLDOlAAAAFEYoBQAAoDBCKQAAAIURSgEAACiMUAoAAEBhhFIAAAAKI5QCANDhderUaczw4cNHNLcFCxbscNttt/VIKY353ve+17u537333rtTSmnMBRdcsEdExOTJkwf369dv1PDhw0cMGzZsxC233NKj2nM2NjbG1KlTBwwcOHDk0KFDR8yZM6dbS/3uueeebkOHDh0xcODAkVOnTh3Q2NgYERFXXXXVLvvuu+/+DQ0NY2bPnt3iZ6EMhFIAADq8rl27Ns6fP39ecxs2bNhrERFDhgxZ84tf/GKX5n7XXnvtrsOGDVuz8WcvuuiiJfPnz593ySWXLD7jjDMGVXvOm266qdcTTzyx48KFCx+eNm3aotNOO21gS/1OO+20QVdcccWihQsXPvzEE0/s+Itf/KJnRMSBBx645uabb3587NixL23dt4b6IJQCAFC3+vXr99ratWsbFi9e3LmxsTFmzpzZa8KECata6jthwoSXnnvuuS7VHvuWW255y3HHHbe8oaEhJkyY8PLq1as7L1q06HWfX7RoUZeXXnqpYeLEiS83NDTEcccdt/x//ud/domIeNvb3vbq6NGj127bN4SOr3PRBQAAUGduP2TYG/YNOHpF7P+lZbHuxYa4c8KQN7y/9/HPx7AzlseapZ3j7qP2ed17h/9hQWunXLt2bcPw4cNHREQMGDBg7W9+85u/Nb/34Q9/eOU111yzy9ixY18ZNWrUK127ds0tHePmm2/uNXHixBeaX3/yk58ccO+9975hOe/RRx+94uKLL35m6dKlXQYPHvxa8/4999zztUWLFnUZNGjQuuZ9ixYt6rLnnnv+4/WgQYNeW7p0adXBF8pAKAUAoMNrXr7b0nsnnnjiismTJ+8zf/78nY499tgVc+bM6b7x++edd17/888/v/+KFSs633333Y827//JT36yeEvnzPmN2TalVHMfKDuhFACAtrWlmc0uPRq3+P5Oe66vZma0FgMHDlzfpUuXPHv27J5XXXXVU5uG0osuumjJiSeeuPIb3/jG7lOnTt37kUceeTSi9ZnSvfbaa93ChQt3aN6/dOnSHQYOHLhu476DBw9et/HM6KJFi3bo27fv6/pA2QmlAADUva9+9atPP/PMM106d275r7+dOnWK884777nrr7++980339xz8uTJq1ubKT3yyCNfuOKKK3Y/6aSTVtx111079+jRY8PGS3cjIgYNGrRu5513brzzzjt3fv/73//yddddt9tnPvOZ59rwq0GH50ZHAADUvcMOO+zlE0444YUt9WloaIgvfvGLf7/kkkv6VnPMKVOmrBo0aNDaQYMGjTz11FMHXX755Yua32u+vjUi4oorrlj06U9/evCgQYNGDh48eO2//uu/roqI+OlPf/qWPfbY44C5c+fu/JGPfGTIuHHj3nitLZRAammdOwAAVOvBBx9cOHr06OeLroOO58EHH+w9evTowUXXQbHMlAIAAFAYoRQAAIDCCKUAAAAURigFAACgMEIpAAAAhRFKAQAAKEzLTw8GAICtdNh3796vLY/3m7Pf9+iW3v/pT3/6losvvnivjfc99thjO/385z//65QpU1a3ZS1bcsopp/S/8847e02YMGHVV77ylWcOP/zwfdetW9fwve9976nDDz/8pWqO8bWvfW33s8466/kePXo0bvreMcccM+gLX/jCs2PGjHm17avfupqgLXhOKQAA22TT55Ru71C6qUsuuaT3DTfcsNt99923oFOnTq32b2xsjJxzVNN3S7p3737QsmXL5u600075yiuv3OX222/v9ctf/nJhtZ9fv359DBo0aNT999//6J577rl+m4ppQ/369au5pvXr10fnzq3Pf3lOKRGW7wIAUEceeuihrt/+9rf3+tnPfvZkc8g8//zz9xg5cuR+Q4cOHXHWWWftFRGxYMGCHd761rfuf/zxxw/cf//9R/ztb3/b4Yc//OGuQ4cOHTFkyJD9Tz311H4tHX/9+vVxyimn9G8+3re//e3eERGHHnrovmvWrGk46KCD9jv33HP7fuUrX+l/11139Ro+fPiIl156KW3u2N26dTvozDPP3OuAAw4Y/qUvfWnP5557rsv73ve+oW9/+9uHbnruQw45ZNjs2bO7NX/u1FNP7bf//vvv9653vWvoXXfd1e2QQw4Z1r9//1HXXXddr4iI73//+7tNmDBhn/e85z1DBg8ePPJzn/vcns3HuvDCC/cYMmTI/kOGDNn/a1/72u4REatXr24YP378vsOGDRsxZMiQ/X/0ox/tctFFF+2+aU3VfJc777yz+2mnndZvn3322X/o0KEjTj755P7bPLjULct3AQCoC2vXrk3HHnvsW7/+9a8vHjJkyGsREb/85S97Pv744zs+9NBDj+acY+LEifv+6le/6v7Wt771tYULF+74ox/9aOG111771MKFC7tceOGF/R544IFH+/Tps/4973nP0GuuueYtJ5xwwgsbn+PSSy/t3atXrw0PP/zwo2vWrEkHH3zw8EmTJq2eOXPm4926dTto/vz58yIi9thjj3X333//zj/96U+3eOw1a9Y0jBw5cs2ll17694iI66+/vvfdd9/9WGuzkmvWrGl4//vf/+K0adOePuyww/Y577zz+t1zzz2P/elPf9rxE5/4xN7HHXfcqoiIhx56aOe//OUvj3Tv3r3xoIMOGnHUUUetSinFz372s90eeOCBR3POMWbMmP0mTJjw4l//+teuffv2XTdr1qzHIyKWL1/eabfddtswbdq0PZprqva7PPvss51OOeWUwU888cTDDQ0N8fzzz2/bNDR1zUwpAAB14ayzztpr6NCha04++eSVzftuv/32nrNnz+45YsSIEU0zojvOnz9/x4iIPffc87UJEya8HBExZ86cnd/xjne8uNdee63v0qVLHHPMMSvuvvvu7pue44477uh544037jZ8+PARBx100H4rV67sPG/evB23VNeWjt2pU6eYOnXqyi19viVdunTJH/3oR1dHROy///5rxo0b92LXrl3zIYccsubpp5/eobnfuHHjVvft23dD9+7d8wc/+MGVs2bN6j5r1qzuH/jAB17o2bNnY69evRo/+MEPrrzrrrt6vO1tb1tzzz339Dz11FP73X777d132223DVv7XXbdddcNXbt2bfzYxz426L//+7/f0r17d9ejsllmSgEA6PBuu+22Hv/3//7fXebOnTtv4/055zjzzDOX/sd//MfzG+9fsGDBDt26dWvcuF9LNr6J0pVXXrkw55y+853vPDV58uSqb6C0pXu47LDDDo3VXHu5qc6dO+eGhsr8UkNDQ3Tt2jVHVILhhg0bUnO/lNLrPpdS2mw9BxxwwNo//elP826++eZe5557br877rhj9SWXXLJ0a75Lly5dYu7cuY/eeuutPX/+85/vMm3atN3vu+++x2r+opSCmVIAADq0ZcuWdTrllFMG/+QnP3lyl112ed2M3BFHHLH6mmuu6b1q1aqGiIgnn3yyy9NPP/2GFPje97735d///vc9li5d2nn9+vVx00037Tp+/PiXTjzxxBfmz58/b/78+fPe+973vnLYYYetmjZtWp+1a9emiMo1rKtXr97i36k3d+yW+u68884bmmttC3PmzOn57LPPdnrppZfSjBkz3vK+973vpUMPPfSlGTNmvOXFF19sWL16dcOMGTN2ef/73//iwoULu/To0aPxtNNOW3HmmWc+O3fu3G6b1lTtd1m1alXDihUrOh1zzDGrfvCDHyx+9NFHu7XVd6L+mCkFAKBN1Xq33G313e9+t8+KFSs6f/aznx208f7Pfe5zS0866aSVjzzyyI4HH3zw8IiIbt26NV533XVPdu7c+XVTfoMGDVp3wQUXPP2+971vaM45TZgwYdXxxx//uutJIyLOOuus5xcuXNh11KhR++Wc06677rpuxowZf9tSfdUeOyLi3/7t354/4ogjhuy+++7rfv/732/zzOLYsWNfOuaYY/ZeuHDhjpMnT17+3ve+95WIiGOPPXb52972tv0iIk444YRl7373u9fcfPPNPc8555z+DQ0N0blz53zFFVcsaqmmar7LCy+80OlDH/rQvs3h/aKLLlq8rd+F+uWRMAAAbJNNHwnDm8P3v//93ZpvtlR0LZvjkTBEWL4LAABAgSzfBQCAOnTGGWcsj4jlRdcBrTFTCgAAQGGEUgAAAAojlAIAAFAYoRQAAIDCuNERAABt6r0/f+8BbXm82R+b/VA1/RYvXtz5tNNOG/DnP/+5e69evdZ36dIln3322c+ceOKJLT4TdGtcd911vR555JGdLr744mfa6phQdkIpAAAdXmNjY0yaNGnfY489dvn06dOfjIh47LHHdrjpppve0pbnOe6441ZFxKq2PCaUneW7AAB0eNOnT+/RpUuX/IUvfGFZ876hQ4e+du655z63fv36OOWUU/qPHDlyv6FDh4749re/3Tsi4rbbbutxyCGHDDv88MPfuvfee+9/5JFH7t3Y2BgREf369Ru1dOnSzhERs2fP7nbIIYcMi4j4/ve/v9uJJ544MCJi8uTJg6dOnTrgoIMOGt6/f/9R//Vf/7VL87nPP//8PZrPd9ZZZ+0VEbF69eqG8ePH7zts2LARQ4YM2f9HP/rRP/pDmZkpBQCgw/vLX/6y0wEHHPBKS+9deumlvXv16rXh4YcffnTNmjXp4IMPHj5p0qTVERGPPvroTnPnzn1i8ODB68aMGTP8N7/5Tfd/+Zd/eana8z777LNd7r///vlz587d8SMf+ci+n/jEJ1b+8pe/7Pn444/v+NBDDz2ac46JEyfu+6tf/ar7s88+27lv377rZs2a9XhExPLlyzu1zbeHjk0oBQCg7pxwwgkD//CHP3Tv0qVL7t+//9r58+d3u/XWW3eJiHjxxRc7zZs3b8cddtghjxo16uV99tlnXUTE/vvv/8rf/va3HWo5z5FHHvlCp06dYsyYMa8uX768S0TE7bff3nP27Nk9R4wYMSIi4pVXXmmYP3/+jhMmTHjx3HPPHXDqqaf2O+qoo1YdfvjhVYdfqGeW7wJQeimlwSmlnFLq3PT6Vymlf2ujY78npbRgo9cLU0oT2+LYTcd7JKU0vq2OBx3VqFGj1jz00EPdml9fc801T82aNeuxlStXds45p+985ztPzZ8/f978+fPnPf300385+uijV0dEdO3aNTd/plOnTrF+/frU9OfcvJR3zZo1m/0784477viPz+ec/7E988wzlzaf76mnnnr4rLPOev6AAw5Y+6c//WneqFGj1px77rn9Pv/5z+/Z1j8H6IiEUgDaVUppXErptymlVSmlFSmle1NKBxdd15bknI/IOf93a/2aguy+rRzrnpzzsLaoK6V0dUrpok2Ov3/OeVZbHB86skmTJr24du3a9K1vfatP876XXnqpISLisMMOWzVt2rQ+a9euTRERDz30UNfV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\n",
"text/plain": [
"<Figure size 1152x576 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"(0.92386372, 1.44117035)"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"outputs": [],
"source": [
"plots.plot_hist(eval_zero_effort_scores, eval_genuine_scores, fmr_01=dev_fmr_01, fmr_001=dev_fmr_001)"
]
......@@ -326,25 +237,10 @@
},
{
"cell_type": "code",
"execution_count": 10,
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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ADSaYAsAAECjCbYAAAA0mmALAABAowm2AAAANJpgCwAAQKMJtgAAADSaYAsAAECjCbYAAAA0mmALAABAowm2AAAANJpgCwAAQKMJtgAAADSaYAsAAECjCbYAAAA0mmALAABAowm2AAAANJpgCwAAQKMJtgAAADSaYAsAAECjCbYAAAA0mmALAABAowm2AAAANJpgCwAAQKMJtgAAADSaYAsAAECjCbYAAAA0mmALAABAowm2AAAANJpgCwAAQKMJtgAAADSaYAsAAECjCbYAAAA0mmALAABAowm2AAAANJpgCwAAQKMJtgAAADSaYAsAAECjCbYAAAA0mmALAABAowm2AAAANJpgCwAAQKMJtgAAADSaYAsAAECjCbYAAAA0mmALAABAowm2AAAANJpgCwAAQKMJtgAAADSaYAsAAECjCbYAAAA0mmALAABAowm2AAAANJpgCwAAQKMJtgAAADSaYAsAAECjCbYAAAA0mmALAABAowm2AAAANJpgCwAAQKMJtgAAADSaYAsAAECjCbYAAAA0mmALAABAowm2AAAANJpgCwAAQKMJtgAAADSaYAsAAECjCbYAAAA0mmALAABAowm2AAAANJpgCwAAQKMJtgAAADTasAfbUspxpZRvlVJuKaXcVEr5nfb0maWUr5dSbm//nDHctQEAANA8nWix3ZXkbbXWM5M8NclvllLOSvIHSb5Zaz01yTfbzwEAAGBQwx5sa62ra63XtR8/nOSWJAuSvCzJZe3FLkvy8uGuDQAAgObp6DW2pZQTkixOcnWSebXW1Ukr/CaZ27nKAAAAaIpSa+3MhkuZkuTKJO+ttX6ulNJba+0ZMH9DrfVnrrMtpVya5NIkmTdv3vmXX375sNXM6LF58+ZMmTKl02UAh8D5Cs3inIXmaML5etFFFy2vtS452HLjhqOYfZVSupJ8Nsknaq2fa09eW0o5pta6upRyTJIH9rdurfXDST6cJEuWLKlLly4djpIZZZYtWxafHWgG5ys0i3MWmmM0na+dGBW5JPlokltqre8fMOsLSS5pP74kyeeHuzYAAACapxMttk9P8itJflxKuaE97Q+TvC/Jp0opb0xyb5JXdaA2AAAAGmbYg22t9btJygFmP2c4awEAAKD5OjoqMgAAADxWgi0AAACNJtgCAADQaIItAAAAjSbYAgAA0GiCLQAAAI0m2AIA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\n",
"text/plain": [
"<Figure size 1152x576 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"outputs": [],
"source": [
"#print(len(eval_zero_effort_scores))\n",
"#print(len(eval_genuine_scores))\n",
"plots.plot_roc(eval_zero_effort_scores, eval_genuine_scores)"
]
},
......@@ -357,22 +253,9 @@
},
{
"cell_type": "code",
"execution_count": 11,
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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A9/96yMsXLI862iSJElSxbDQShWqoa6WY/balOs+28r+263Hj697nL2/387v7nmOlFLW8SRJkqTMWWilCjd2eCM/OHh7Lv/kbowd1sinL72Hg869hfaZL1psJUmSNKBZaKWcmLLhKH533O58+wPbMHv+Ig6/8A72O/Mmrr53NitWWmwlSZI08FhopRypqQk+tNNErv9cG989aFuWLF/BCZfczd7fb+fi255m8bIVWUeUJEmSysZCK+XQoLoaPjh1An//zF6c+9EpjBxczxevvJ89v3Md517/OK8tXpZ1REmSJKnk6rIOIGnt1dQE+249jndutS63PD6Xs9sf51t/foQfX/dP/ustG3LE7htnHVGSJEkqGQutVAUigt0mjWG3SWO479n5nHv945zd/jg/u/EJdluvhsVjnmfr9Uew/sjBRETWcSVJkqR+YaGVqsy2G4zk7EOnMOulDn5y/Swun/EM1110FwCjhtSz9foj2Kbwz9brj2CDUZZcSZIk5ZOFVqpSmzQ38e2DtuVto+YydvMduP+5BTzw7ALuf24B590wi+WFOyOPHFLPNuuPYMv1htMybhibrzuMSWObaKyvzXgFkiRJ0ppZaKUqN6g22H7CSLafMPKN1xYvW8HMF17rLLnPdZbcC//xJEtXrASgJmCjMUOZXCi4q/53w9FDqa3xaK4kSZIqg4VWGoAa62vZbsJItutScpevWMmTcxcy84UOZr7wKjPnvMbDz7/Gnx94gVR4zG1DXQ2brdvEthuM5MR9NmPssMaMViBJkiRZaCUV1NXWMGnsMCaNHcZ+2673xuuLlq7gny92MHPOa4Wi28HlM57lbw++wPc+uB2tLWMzTC1JkqSBzEIraY0GD6plmw1GsM0GI9547dE5r/GpS+7m8Avv4Kg9Nubz+7bQUOc1t5IkSSqvmqwDSMqfzdcdxlXH7c5hb9mQ8296gveffTOPv9SRdSxJkiQNMBZaSWulsb6Wr753a376X1OZPX8R+595E7+542nSqgtuJUmSpBKriEIbEa0RcUNEnBsRrVnnkVS8t2+5Ln/+9FvZfsJITr78fo6/5G4WLFqWdSxJkiQNABVRaIEELAQagKczziKpj8aNaOSio3fhc+9s4S8PvMC7z7iRGU/NyzqWJEmSqlylFNobU0rvAk4Bvpx1GEl9V1sTHNc2id8e8xZqauDgn9zK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\n",
"text/plain": [
"<Figure size 1152x576 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"outputs": [],
"source": [
"plots.plot_det(eval_zero_effort_scores, eval_genuine_scores)"
]
......@@ -391,34 +274,9 @@
},
{
"cell_type": "code",
"execution_count": 12,
"execution_count": null,
"metadata": {},
"outputs": [
{
"ename": "OSError",
"evalue": "Score file './data/scores_vf_denoised_16k_eval.txt' does not exist.",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mOSError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-12-6416862609a4>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mscore_file_list\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m'scores_vf_denoised_16k_eval.txt'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'scores_vf_denoised_8k_eval.txt'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mlabels\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m'16K'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'8K'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mplots\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot_multidet\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mscore_file_list\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabels\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbase_path\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"./data\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m/run/media/sushil/Data/arch_git/git/UNIL_BiometricsCourse/04-lab-speaker/notebooks/plots.py\u001b[0m in \u001b[0;36mplot_multidet\u001b[0;34m(file_names, labels, base_path)\u001b[0m\n\u001b[1;32m 237\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 238\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0ml\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfile_names\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabels\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 239\u001b[0;31m \u001b[0mzero_effort_scores\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgenuine_scores\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbob\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmeasure\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mload\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbase_path\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 240\u001b[0m \u001b[0mbob\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmeasure\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdet\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mzero_effort_scores\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgenuine_scores\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnpoints\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0ml\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 241\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/miniconda3/envs/bob_py3/lib/python3.6/site-packages/bob/measure/load.py\u001b[0m in \u001b[0;36msplit\u001b[0;34m(filename, ncolumns)\u001b[0m\n\u001b[1;32m 312\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 313\u001b[0m \"\"\"\n\u001b[0;32m--> 314\u001b[0;31m \u001b[0mncolumns\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_estimate_score_file_format\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mncolumns\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 315\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mncolumns\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m4\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 316\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msplit_four_column\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/miniconda3/envs/bob_py3/lib/python3.6/site-packages/bob/measure/load.py\u001b[0m in \u001b[0;36m_estimate_score_file_format\u001b[0;34m(filename, ncolumns)\u001b[0m\n\u001b[1;32m 477\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mncolumns\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 478\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 479\u001b[0;31m \u001b[0mf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mopen_file\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'rb'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 480\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 481\u001b[0m \u001b[0mline\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreadline\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/miniconda3/envs/bob_py3/lib/python3.6/site-packages/bob/measure/load.py\u001b[0m in \u001b[0;36mopen_file\u001b[0;34m(filename, mode)\u001b[0m\n\u001b[1;32m 44\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 45\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0misfile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 46\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mIOError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Score file '%s' does not exist.\"\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0mfilename\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 47\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mtarfile\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mis_tarfile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmode\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mOSError\u001b[0m: Score file './data/scores_vf_denoised_16k_eval.txt' does not exist."
]
},
{
"data": {
"text/plain": [
"<Figure size 1152x576 with 0 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"outputs": [],
"source": [
"score_file_list = ['scores_vf_denoised_16k_eval.txt','scores_vf_denoised_8k_eval.txt']\n",
"labels = ['16K', '8K']\n",
......@@ -456,13 +314,12 @@
"metadata": {},
"outputs": [],
"source": [
"from plots import plot_multiepc\n",
"\n",
"system_score_files = {}\n",
"system_score_files['16K'] = ['scores_vf_denoised_16k_dev.txt', 'scores_vf_denoised_16k_eval.txt'] #2 elements: 1st- dev_score_file; 2nd- eval_score_file\n",
"# put the filenames in dictionary -- the epc-plotting function expects the data in this structure.\n",
"system_score_files = {} #each key has a list of 2 elements: 1st- dev_score_file; 2nd- eval_score_file\n",
"system_score_files['16K'] = ['scores_vf_denoised_16k_dev.txt', 'scores_vf_denoised_16k_eval.txt']\n",
"system_score_files['8K'] = ['scores_vf_denoised_8k_dev.txt', 'scores_vf_denoised_8k_eval.txt'] \n",
"\n",
"plot_multiepc(system_score_files, base_path=\"./data\")"
"plots.plot_multiepc(system_score_files, base_path=\"./data\")"
]
}
],
......@@ -482,7 +339,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.5"
"version": "3.6.6"
}
},
"nbformat": 4,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment