Skip to content

Instantly share code, notes, and snippets.

@cbuntain
Created April 30, 2020 21:36
Show Gist options
  • Save cbuntain/70c27550932431212b139b378f1a4445 to your computer and use it in GitHub Desktop.
Save cbuntain/70c27550932431212b139b378f1a4445 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": [
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"import statsmodels.api as sm\n",
"import matplotlib.pyplot as plt\n",
"import pandas as pd\n",
"import numpy as np\n",
"\n",
"import scipy.stats\n",
"\n",
"import seaborn as sns\n",
"\n",
"import sklearn.mixture"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Example using GMMs to Predict Classes\n",
"\n",
"Below, we generate tri-modal data and fit a two- and three-mode GMM to the data. We then compare the log-likelihood via `score()` and the Bayesian information criteria via `bic()` for each models.\n",
"\n",
"We should find that the three-mode model outperforms the two-model one.\n",
"\n",
"Note, with small N, BIC is going to be biased towards the simpler model."
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [],
"source": [
"m1 = scipy.stats.norm(-0.5, 0.15).rvs(10)\n",
"m2 = scipy.stats.norm(0, 0.15).rvs(10)\n",
"m3 = scipy.stats.norm(1, 0.15).rvs(5)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(array([6., 1., 3., 5., 4., 1., 0., 1., 3., 1.]),\n",
" array([-0.78653457, -0.59251567, -0.39849676, -0.20447786, -0.01045896,\n",
" 0.18355994, 0.37757884, 0.57159774, 0.76561664, 0.95963554,\n",
" 1.15365444]),\n",
" <a list of 10 Patch objects>)"
]
},
"execution_count": 77,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"data = np.concatenate([m1, m2, m3]).reshape(-1,1)\n",
"plt.hist(data)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(array([[-0.26267597],\n",
" [ 0.85949417]]), array([[[0.1035929]],\n",
" \n",
" [[0.0230045]]]))"
]
},
"execution_count": 78,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gmm_v1 = sklearn.mixture.GaussianMixture(n_components=2)\n",
"gmm_v1.fit(data)\n",
"gmm_v1.means_, gmm_v1.covariances_"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(-0.6235130949940104, 47.27003387404152)"
]
},
"execution_count": 79,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gmm_v1.score(data), gmm_v1.bic(data)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(array([[-0.05298925],\n",
" [ 0.85868699],\n",
" [-0.66221059]]), array([[[0.02302325]],\n",
" \n",
" [[0.02288263]],\n",
" \n",
" [[0.0056869 ]]]))"
]
},
"execution_count": 80,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gmm_v2 = sklearn.mixture.GaussianMixture(n_components=3)\n",
"gmm_v2.fit(data)\n",
"gmm_v2.means_, gmm_v2.covariances_"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(-0.3488017087257632, 43.191092035233766)"
]
},
"execution_count": 81,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gmm_v2.score(data), gmm_v2.bic(data)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Example of the Strip Plots for Showing Shifts\n",
"\n",
"Below, we generate some data for a few fake outlets and show how it we might visualize its shift"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {},
"outputs": [],
"source": [
"outlets = [\n",
" \"Fox\",\n",
" \"CNN\",\n",
" \"MSNBC\",\n",
" \"NYTimes\",\n",
" \"WaPo\",\n",
" \"NPR\",\n",
" \"CBS\",\n",
" \"NBC\",\n",
" \"ABC\",\n",
" \"Axios\",\n",
" \"RT\",\n",
" \"HuffPost\",\n",
" \"BuzzFeed News\",\n",
" \"Young Turks\",\n",
" \"BBC News\",\n",
"]"
]
},
{
"cell_type": "code",
"execution_count": 92,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"domain_data = scipy.stats.norm(0, 1).rvs(15)\n",
"yt_data = domain_data + 0.2 + scipy.stats.norm(0, 0.3).rvs(domain_data.shape)\n",
"\n",
"plt.hist(domain_data, alpha=0.5, color=\"blue\")\n",
"plt.hist(yt_data, alpha=0.5, color=\"orange\")\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 108,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>outlet</th>\n",
" <th>zeta</th>\n",
" <th>type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Fox</td>\n",
" <td>-0.480094</td>\n",
" <td>domain</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>CNN</td>\n",
" <td>-0.740971</td>\n",
" <td>domain</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>MSNBC</td>\n",
" <td>0.151195</td>\n",
" <td>domain</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>NYTimes</td>\n",
" <td>2.404329</td>\n",
" <td>domain</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>WaPo</td>\n",
" <td>1.392927</td>\n",
" <td>domain</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>NPR</td>\n",
" <td>0.196751</td>\n",
" <td>domain</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>CBS</td>\n",
" <td>-0.962428</td>\n",
" <td>domain</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>NBC</td>\n",
" <td>-0.557202</td>\n",
" <td>domain</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>ABC</td>\n",
" <td>-0.384667</td>\n",
" <td>domain</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>Axios</td>\n",
" <td>-1.036092</td>\n",
" <td>domain</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>RT</td>\n",
" <td>1.320367</td>\n",
" <td>domain</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>HuffPost</td>\n",
" <td>0.008507</td>\n",
" <td>domain</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>BuzzFeed News</td>\n",
" <td>-2.185158</td>\n",
" <td>domain</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>Young Turks</td>\n",
" <td>0.460579</td>\n",
" <td>domain</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>BBC News,</td>\n",
" <td>-0.806691</td>\n",
" <td>domain</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Fox</td>\n",
" <td>-0.283651</td>\n",
" <td>channel</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>CNN</td>\n",
" <td>-0.774324</td>\n",
" <td>channel</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>MSNBC</td>\n",
" <td>1.017230</td>\n",
" <td>channel</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>NYTimes</td>\n",
" <td>2.501396</td>\n",
" <td>channel</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>WaPo</td>\n",
" <td>1.667589</td>\n",
" <td>channel</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>NPR</td>\n",
" <td>0.143962</td>\n",
" <td>channel</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>CBS</td>\n",
" <td>-1.009831</td>\n",
" <td>channel</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>NBC</td>\n",
" <td>-0.617781</td>\n",
" <td>channel</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>ABC</td>\n",
" <td>0.177252</td>\n",
" <td>channel</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>Axios</td>\n",
" <td>-0.870694</td>\n",
" <td>channel</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>RT</td>\n",
" <td>1.097610</td>\n",
" <td>channel</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>HuffPost</td>\n",
" <td>0.355619</td>\n",
" <td>channel</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>BuzzFeed News</td>\n",
" <td>-1.623418</td>\n",
" <td>channel</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>Young Turks</td>\n",
" <td>1.281580</td>\n",
" <td>channel</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>BBC News,</td>\n",
" <td>-0.572116</td>\n",
" <td>channel</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" outlet zeta type\n",
"0 Fox -0.480094 domain\n",
"1 CNN -0.740971 domain\n",
"2 MSNBC 0.151195 domain\n",
"3 NYTimes 2.404329 domain\n",
"4 WaPo 1.392927 domain\n",
"5 NPR 0.196751 domain\n",
"6 CBS -0.962428 domain\n",
"7 NBC -0.557202 domain\n",
"8 ABC -0.384667 domain\n",
"9 Axios -1.036092 domain\n",
"10 RT 1.320367 domain\n",
"11 HuffPost 0.008507 domain\n",
"12 BuzzFeed News -2.185158 domain\n",
"13 Young Turks 0.460579 domain\n",
"14 BBC News, -0.806691 domain\n",
"0 Fox -0.283651 channel\n",
"1 CNN -0.774324 channel\n",
"2 MSNBC 1.017230 channel\n",
"3 NYTimes 2.501396 channel\n",
"4 WaPo 1.667589 channel\n",
"5 NPR 0.143962 channel\n",
"6 CBS -1.009831 channel\n",
"7 NBC -0.617781 channel\n",
"8 ABC 0.177252 channel\n",
"9 Axios -0.870694 channel\n",
"10 RT 1.097610 channel\n",
"11 HuffPost 0.355619 channel\n",
"12 BuzzFeed News -1.623418 channel\n",
"13 Young Turks 1.281580 channel\n",
"14 BBC News, -0.572116 channel"
]
},
"execution_count": 108,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_domains = pd.DataFrame(\n",
" list(zip(outlets, domain_data)),\n",
" columns=[\"outlet\", \"zeta\"]\n",
")\n",
"df_domains[\"type\"] = \"domain\"\n",
"\n",
"df_channels = pd.DataFrame(\n",
" list(zip(outlets, yt_data)),\n",
" columns=[\"outlet\", \"zeta\"]\n",
")\n",
"df_channels[\"type\"] = \"channel\"\n",
"\n",
"df = pd.concat([df_domains, df_channels])\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 163,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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OnQo27ZtY9asWUZHk07ot99+48mTJ1RVVTF//vwO81arlejoaAOSuZeX8/9tNxcRERFxI+05EREREVNRORERERFTUTkRERERU1E5EREREVNRORERERFTUTkRERERU1E5ERExgdraWpqamoyOIWIKKiciIgYrLi4mMjKSR48eGR1FxBRUTkREDFZSUkJ9fb3RMURMQ+VERERETEVfXy8i8gYuXbrEggULXjr/3XffERMTw/Xr19m5c2f7D0uOHz+exMRExo4dC0BSUhJ5eXntx4WGhpKZmQlAYWEh2dnZ3Lp1i+bmZiwWC5GRkSQmJvLRRx+9x9WJGEvlRETkDTx8+JALFy64jDkcDqxWK62treTm5lJZWUlCQgKjRo1i9uzZtLS0kJubS1VVFRkZGUyYMIHr16+zf/9+zp07R3JyMsHBwUyaNAm73U5KSgoRERFMnjyZp0+fcu7cOS5fvkx8fDzr1q0zaOUi75/KiYjIO7Jx40aOHDnCTz/9xJQpU5gxYwYDBgwgKysLHx8fAJqampg7dy49e/bk2LFjAPz444/s2rWL8+fP4+/vD0BUVBR9+vThyJEjeHl5Ac/Kz7Rp0+jduzcnTpwwZpEibtDF6AAiIh8Cu93O4cOHWbZsGREREZSWllJZWcm8efOoq6tzee3UqVM5ePAgNTU1DBw48IXny8/P58mTJ+3FBJ49bty7d289ciwfPJUTEZG39Pvvv7Nx40bCw8NZsWIFABUVFQBYrVasVusLj6uurn5pOenatStXrlzh5MmTlJeXU1FRQW1tLQBDhgx5D6sQMQ+VExGRt1BTU8PKlSuxWCykpaXh7f3sIch//vkHgFWrVhESEvLCYwMDA1963s2bN5OVlcXo0aMJCQkhOjqa8ePHs3nzZv7+++93vxARE1E5ERF5Q83NzSxbtoz6+nqOHj1K37592+fa7m707NmTiRMnuhxXUlJCXV0d3bt3f+F5q6qqyMrKIjo6usNdl4cPH77jVYiYj77nRETkDW3YsIHS0lI2bdrE6NGjXebGjBnDgAEDyMzMpLGxsX28oaGBxMREkpOT2zfJtt1taXs+oW2PSlBQkMs5i4uLuX//Pg6H472tScQMdOdEROQNZGdnc/z4cT7//HN69OhBfn4+/374MSAggJSUFFavXk1MTAyxsbF069YNu91OdXU1aWlpdOny7BLs5+cHgM1mY/LkyYSHhzN48GD27NlDc3MzgwYNoqSkhLy8PLp16+ZSdkQ+RHqUWETkDTz/5WnP+/LLL0lNTeXixYv8/PPP/PHHH3h7exMcHExCQgJTp05tf219fT2rVq3i6tWr+Pv7U1hYyN27d0lNTaWkpASn00lAQACxsbE4HA62bt3KL7/8wpgxY9yxVBG3UzkRERERU9GeExERETEVlRMRERExFZUTERERMRWVExERETEVlRMRERExFZUTERERMRWVExERETEVlRMRERExFZUTERERMRWVExERETGV/wACfjMjUcII2QAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 576x432 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize=(8, 6))\n",
"sns.set_context(\n",
" \"notebook\", \n",
" font_scale=1.5, \n",
" rc={\n",
" \"lines.linewidth\": 2.5,\n",
" }\n",
")\n",
"\n",
"ax = fig.add_subplot(1,1,1)\n",
"\n",
"sns.stripplot(\n",
" x=\"zeta\",\n",
" y=\"outlet\",\n",
" hue=\"type\",\n",
" data=df.sort_values(by=\"zeta\"),\n",
" orient=\"h\",\n",
" linewidth=1,\n",
" jitter=False,\n",
" s=8,\n",
" alpha=0.75,\n",
" ax=ax\n",
")\n",
"\n",
"# Get the values for each zeta and draw a line between them\n",
"for y, label in zip(ax.get_yticks(), ax.get_yticklabels()):\n",
" zs = [x.zeta for x in df[df[\"outlet\"] == label.get_text()].itertuples(index=False)]\n",
" ax.hlines(y, zs[0], zs[1])\n",
"\n",
"fig.tight_layout()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"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.7.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment