Skip to content

Instantly share code, notes, and snippets.

@iwiwi
Created July 9, 2018 04:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save iwiwi/228af28705dc979e8ee694845ceb3f22 to your computer and use it in GitHub Desktop.
Save iwiwi/228af28705dc979e8ee694845ceb3f22 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"from sklearn.metrics import average_precision_score\n",
"\n",
"def chance_level_ap(n_all, n_positive, trials=1000):\n",
" return np.mean([\n",
" average_precision_score([1] * n_positive + [0] * (n_all - n_positive), np.random.permutation(n_all))\n",
" for _ in range(trials)])"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import pytablewriter\n",
"\n",
"def create_table(config_pairs):\n",
" writer = pytablewriter.MarkdownTableWriter()\n",
" writer.header_list = ['Num of examples', 'True positive rate', 'Chance level AP']\n",
" writer.value_matrix = [\n",
" [n_all, positive_rate, chance_level_ap(n_all, round(n_all * positive_rate))]\n",
" for n_all, positive_rate in config_pairs\n",
" ]\n",
" return writer"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/akiba/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/sklearn/metrics/ranking.py:444: RuntimeWarning: invalid value encountered in true_divide\n",
" recall = tps / tps[-1]\n"
]
},
{
"data": {
"text/html": [
"<table>\n",
" <thead>\n",
" <tr>\n",
" <th>Num of examples</th>\n",
" <th>True positive rate</th>\n",
" <th>Chance level AP</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td align=\"right\">10</td>\n",
" <td align=\"right\">0.01</td>\n",
" <td align=\"left\">NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <td align=\"right\">10</td>\n",
" <td align=\"right\">0.10</td>\n",
" <td align=\"right\">0.29244</td>\n",
" </tr>\n",
" <tr>\n",
" <td align=\"right\">10</td>\n",
" <td align=\"right\">0.50</td>\n",
" <td align=\"right\">0.60708</td>\n",
" </tr>\n",
" <tr>\n",
" <td align=\"right\">10</td>\n",
" <td align=\"right\">0.90</td>\n",
" <td align=\"right\">0.91676</td>\n",
" </tr>\n",
" <tr>\n",
" <td align=\"right\">100</td>\n",
" <td align=\"right\">0.01</td>\n",
" <td align=\"right\">0.05494</td>\n",
" </tr>\n",
" <tr>\n",
" <td align=\"right\">100</td>\n",
" <td align=\"right\">0.10</td>\n",
" <td align=\"right\">0.13603</td>\n",
" </tr>\n",
" <tr>\n",
" <td align=\"right\">100</td>\n",
" <td align=\"right\">0.50</td>\n",
" <td align=\"right\">0.52077</td>\n",
" </tr>\n",
" <tr>\n",
" <td align=\"right\">100</td>\n",
" <td align=\"right\">0.90</td>\n",
" <td align=\"right\">0.90432</td>\n",
" </tr>\n",
" <tr>\n",
" <td align=\"right\">1000</td>\n",
" <td align=\"right\">0.01</td>\n",
" <td align=\"right\">0.01598</td>\n",
" </tr>\n",
" <tr>\n",
" <td align=\"right\">1000</td>\n",
" <td align=\"right\">0.10</td>\n",
" <td align=\"right\">0.10597</td>\n",
" </tr>\n",
" <tr>\n",
" <td align=\"right\">1000</td>\n",
" <td align=\"right\">0.50</td>\n",
" <td align=\"right\">0.50254</td>\n",
" </tr>\n",
" <tr>\n",
" <td align=\"right\">1000</td>\n",
" <td align=\"right\">0.90</td>\n",
" <td align=\"right\">0.90052</td>\n",
" </tr>\n",
" <tr>\n",
" <td align=\"right\">10000</td>\n",
" <td align=\"right\">0.01</td>\n",
" <td align=\"right\">0.01068</td>\n",
" </tr>\n",
" <tr>\n",
" <td align=\"right\">10000</td>\n",
" <td align=\"right\">0.10</td>\n",
" <td align=\"right\">0.10082</td>\n",
" </tr>\n",
" <tr>\n",
" <td align=\"right\">10000</td>\n",
" <td align=\"right\">0.50</td>\n",
" <td align=\"right\">0.50057</td>\n",
" </tr>\n",
" <tr>\n",
" <td align=\"right\">10000</td>\n",
" <td align=\"right\">0.90</td>\n",
" <td align=\"right\">0.90015</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n"
],
"text/plain": [
"<pytablewriter.writer._markdown.MarkdownTableWriter at 0x1a086a26a0>"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import itertools\n",
"\n",
"config_pairs = itertools.product([10, 100, 1000, 10000], [0.01, 0.1, 0.5, 0.9])\n",
"\n",
"create_table(config_pairs)"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python [conda env:anaconda3-4.2.0]",
"language": "python",
"name": "conda-env-anaconda3-4.2.0-py"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment