Skip to content

Instantly share code, notes, and snippets.

@vishalbidawatka
Created July 23, 2019 11:25
Show Gist options
  • Save vishalbidawatka/2abd81e5cb638ba1f3192008d33c74a3 to your computer and use it in GitHub Desktop.
Save vishalbidawatka/2abd81e5cb638ba1f3192008d33c74a3 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Kernel density estimaiton"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true
},
"source": [
"### imporitng modules"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"hidden": true
},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"from sklearn.datasets import load_digits as ld\n",
"from sklearn.neighbors import KernelDensity\n",
"from sklearn.decomposition import PCA\n",
"from sklearn.model_selection import GridSearchCV\n",
"from sklearn.mixture import GaussianMixture as GMM\n",
"from sklearn.mixture import BayesianGaussianMixture\n",
"import itertools\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib as mpl\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"hidden": true
},
"outputs": [],
"source": [
"def plot_digit_data(data):\n",
" fig, ax = plt.subplots(12, 4, figsize=(8, 8),\n",
" subplot_kw=dict(xticks=[], yticks=[]))\n",
" fig.subplots_adjust(hspace=0.05, wspace=0.05)\n",
" for i, axi in enumerate(ax.flat):\n",
" im = axi.imshow(data[i].reshape(8, 8), cmap='binary')\n",
" im.set_clim(0, 16)"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true
},
"source": [
"### Kernel Density Estimation"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"hidden": true
},
"outputs": [],
"source": [
"def kde(n):\n",
" digit_data = ld()\n",
" pca = PCA(n_components=n, whiten=False)\n",
" data = pca.fit_transform(digit_data.data)\n",
" params = {'bandwidth': np.logspace(-1, 1, 20)}\n",
" grid = GridSearchCV(KernelDensity(), params, cv=5)\n",
" grid.fit(data)\n",
" print(\"bandwidth selcted : \",grid.best_estimator_.bandwidth )\n",
"\n",
"\n",
" kde = grid.best_estimator_\n",
"\n",
"\n",
" new_data = kde.sample(48, random_state=0)\n",
" new_data = pca.inverse_transform(new_data)\n",
" print()\n",
" print(\"48 new data points generated : \")\n",
" print()\n",
" plot_digit_data(new_data)\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true
},
"source": [
"### KDE for 16 features"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"hidden": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"bandwidth selcted : 3.79269019073225\n",
"\n",
"48 new data points generated : \n",
"\n"
]
},
{
"data": {
"image/png": "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96q8dOlSp4x9i7F27dpOmei+53uYvHj60G6Vs3LlSpXtcQAiIo0bN1Y51hnn8fZhQgNFJBKROXPmBMt89tlnKg8ePFjls88+26nzxz/+UeW2bds6ZaL3Emrfvn3MtsIvnj6cNWuWymeeeabK1atXd+rYfh42bJhTJvqV2dNPPz1WU/ErbB/69uspVqyYynY/tTZt2jh1evToofLjjz/ulDnhhBMKPrdr1y6+BsMRz/fwq6++Utn2T/Q/vH4xZcoUlU8++eTg3xFvHzKZDQAIYqAAAASltDLb57LLLlN569atKm/YsMGpY4/48x216Vt9isJhV3y2atVKZd9jI7t6u2PHjk6ZBg0apKF1sOxjJp8///nPKvu28h8/frzKvu3kefmlcOTm5jrX7NG09shbuwpbxH08lczR1D7cUQAAghgoAABBDBQAgCAGCgBAUEqT2WvWrHGu2YnoV199VWU7cS0iUqtWLZXtBLiISM2aNZNpImLYt2+fc+3CCy9U+Y477lDZbkctIvLMM8+oXLFiRadM9KSrb7EQ0ue1115T+V//+pfKN9xwQ8yf4VufwWR24bD9I+L+Ln3ppZdU/q//+i+nTqNGjVT2Laxs2rRpwu3jjgIAEMRAAQAIYqAAAASlNEexYMEC55p99ty7d2+VfcendujQQWXfHigtWrRIpomIIS8vz7nWqVMnlRcuXKjyvffe69QpVaqUygcOHHDKMC9ROL7++mvn2p133qmy3dvJN7/oO+LWit6cE+njW4hslSlTRmW7maqISM+ePVW2+7aJMEcBACgEDBQAgCAGCgBAUEpzFL7navY9a/ss1LdGompVfRJfujayQmz2/3sRkX/+858qP/bYYyr71lH06tVL5VgHpiB93n77bedadna2yuPGjVP5008/deoMGjRI5TfffNMpM3DgwCRaiFh830Nr0aJFKtvNOkXcuah0rXvhjgIAEMRAAQAIYqAAAAQxUAAAglKazG7SpEnMMtu3b1fZN1F9+PBhlatVq5ZKs5AAu1BORGTYsGEq28WOvgWR119/vcp2czKk19GjRws+Hzp0KGb5tWvXqtyuXTunzAsvvKDyzz//nGTrkCi7UE5EpE+fPipffPHFKi9fvtypYxdfXnDBBWloHXcUAIAYGCgAAEEMFACAoJTmKOziDhGRli1bqmyfXdtNAkVEIpGIyu3bt0+lWUizBx54QOV+/fo5ZTp37qyy77l59CFJ0c/YkbjoDRavvPJK588PHjyo8rnnnquyr07JkiVVHjp0aCpNRAIqVarkXKtXr57KI0eOVHn37t1OHTsHbA8dE0nuu8cdBQAgiIECABDEQAEACGKgAAAEpTSZXbZsWefaI488orKdNKtYsaJTZ/DgwSpzmt1v67PPPlN5+vTpKn/88cdOnfLly6u8a9cup0z05BuT2amJnsz2nVj2zDPPqGx3BF66dGnMOr7TKHHs2N18O3bsqHL16tWdOnanZ98LR8ngjgIAEMRAAQAIYqAAAARlJHICUkZGRq6I5BRec+JWNz8/P/aRUHDQh0UffVj0FbU+TGgyOzMzMysSiWSFymzZskXldevWqXzcce5NTIMGDVSOdYymPeYR8YunD2NZsWKFc23Pnj0q+3YWju5X+jB58fShXRm/ceNGlQ8cOODUKV68uMq+yexy5coVfLbHHCN+tg/tDtoiIosXL1bZlqlTp45TJ7p/RNw+FREpVqxYweecnPjGqoQGikgkoraY9t2NvPLKKyqPHTtWZfs/RERk6tSpKsd668m3RTLiY/swGd27d3euzZ49W2XbpyK6X+nD5MXTh3ZgePjhh1X+6aefnDr2LZoBAwY4ZTp16lTw+YwzzojZVvjZPty6datTpnHjxirn5eWpfMsttzh1unTponKNGjWcMtH/ADjttNPiai9zFACAIAYKAEBQSgvu5s2b51yzjxzsY4pPP/3UqfPss8+q/NRTT6XSLCRg//79zjW7oM4+xpg5c2bMnxv9HBSFa+/evc61u+++W+VPPvlEZd/usd99953K8+fPd8qcfvrpyTQRMfjm/WrVqqWyfSRv54NFRP7617+qPGrUKKdM1ar/mbuOXrgZwh0FACCIgQIAEMRAAQAIYqAAAASlNJntWxMxbNgwle2k5pdffunUse8L49jx7QTbv39/lS+44IKEf65vR1MUjiVLljjXvv32W5UnTZqkcq9evZw6J598ssq+dRIlSpQo+BzvRChia9WqlXPtsssuU9m+eBJ9tPAvZsyYofKYMWNSb5xwRwEAiIGBAgAQxEABAAhK+wl327ZtU9kuprObBIqIdO3aNZVmIAW+k+js6XO+RXkW+/78v6Vly5Yqb9q0SeU777zTqWO/u77vZcmSJQs+M0eRPmXKlHGu+RbLRRsx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Lij43L179/gaDIftQ99gf8UVV6g8c+ZMlX1ngzRo0CChdvA9TJ7tQ9+THfvqun09dtKkSU4de5aM78yKk08+ueBzly5d4movk9kAgCAGCgBAUEors7dv3+5ce+CBB1S2W4b7trW2j55Gjx7tlGHSvXDMnj3bufbFF1+obLefvv7665069pGi3V5eRKREiRIFn30rwpEc36pee1ytnZOwj6ZEROrWrauyb4tqFA577KmIyHvvvafyyJEjVfatura7Wthtx0XcoyDiwR0FACCIgQIAEMRAAQAIYqAAAASlNJntewffLrSyE9NNmzZ16tjJ7G+++cYpc9pppyXTRMTgewffTlZfddVVKtutjEXcc7R96yiiF3QxmV24WrRoofL333+vsp3sFhHJzMws1Dbh161cudK5Nn36dJXfeustlc866yynjn2ZyPf9Ll68eMHneL+H3FEAAIIYKAAAQQwUAICgtM9RtG/fXuV69eqp7NtQLnqzOBGRVatWOWU6dOiQTBMRg32WLeJuCvjGG2+o7Jt/sM+8582b55Q577zzCj4zR1G47AK7F154QWXf//+J7rmG9FmwYIFzbe7cuSpPmTIl5s/58MMPVT7nnHOcMqVKlSr4zBwFACAtGCgAAEEMFACAoJTmKDZt2uRcq1ixosrNmjVTuWzZsk4de96BPWQFhcd3sMnf//53le373DfddJNTp1evXio3btw4Da1DPHybc9rN4Fq3bq2ybw7pvvvuU9nOa6Dw5OS4p6IuX75c5XjmE+ycsG+OIhncUQAAghgoAABBDBQAgCAGCgBAUEqT2fb0OhF3kqxy5coq+yZkVqxYoXIyJzAhOb6N4IYOHaryp59+qvKAAQOcOiyI/O34Tkdbu3atyj/88IPKL730klPn8ssvV7lfv35OmfPPPz+JFiIWe4qkiMiZZ56pcm5urspLlixx6hw6dEjlLl26pN444Y4CABADAwUAIIiBAgAQlNIcRe3atZ1rdkO/P//5zyrbDedE3M2vbr/9dqfM0aNHk2kiYvA937aHnfTu3VvlJk2aFGqbkJj8/Hznmt2k8ccff1TZtwmdtW/fPuda9DNw39+L5HTt2tW59uabb6o8YcIElRcvXuzUKay5Qu4oAABBDBQAgCAGCgBAEAMFACAopcnsqlWrOtfshItvcZY1fvx4le1CExE9mc0kWvrs3r3b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mVivuoq4ryxPnz7dKdOnT5/4G4a4+V5xtusmol8v/7U6bdq0Udl3PCcKh13/ICLSsWNHlS+88EKV169fH/PnRr8E9IvonZ7jfWGBOwoAQBADBQAgiIECABCU0hzFDz/84Fx7/PHHVX7ggQdi/pyrrrpK5Z49ezplSpUqVfCZOYr0id735dcsWLBA5dKlSztlvv76a5VnzJjhlOnbt2+CrUM8SpYs6VxbuXKlynYe0NfvdoEXjh3f/najRo1SecmSJSr7+qtXr14q9+7d2ykTvW8eC+4AAGnBQAEACGKgAAAEpTRH8be//c25Zs+bsHuor1ixwqnToEEDlbt06ZJKs5AA3/PtHj16qNyqVauYP8eukfBtJ4/CcdJJJznX7PPtVatWqbx582anzueff67yKaec4pSpX79+Ei1ELCVKlIhZplmzZiofPnzYKdOhQweV7dqYZHFHAQAIYqAAAAQxUAAAghgoAABBCU9mHz16tOCzbwJm2bJlKt91110qN2rUyKlTr149lc8777xEm4UERJ8Q2LhxY+fPv/jiC5Xt2bx2gzkRka1bt6rcr1+/VJqIBPi+h/YFkQEDBqj8008/OXWeeuopld944w2nzLhx45JpImI4ePCgcy3WBLd9UUjEfZkoXacUckcBAAhioAAABDFQAACCEp6jiN5EavDgwc6f22diJ554ospXX321U2fgwIEq16lTJ9FmIUnRB0L9wm7SuHDhQpVvv/12p06NGjVU9i3WQuHwPd+2B1IdOXJEZd9Cy9zcXJWrVq3qlIle5BU914XU2APeRES++uorlaM38xMRycnJceqka4GdxR0FACCIgQIAEMRAAQAIYqAAAASlNJnt20nyjjvuUHn9+vUq+ybeateurfKmTZucMtWrV0+onfh10X1Yt25d588HDRqksj210MeeoIZjx3fi4Mknn6zyI488ovJHH33k1LEvnlx33XVpaB3i4Tvhzr6AcNttt6lsF1WKuC+i+HaY3b9/f8Hn6AXUIdxRAACCGCgAAEEMFACAoIxEFs1kZGTkioi7yuPYq5ufn++uBkJM9GHRRx8WfUWtDxMaKAAAvz88egIABDFQAACCGCgAAEEMFACAIAYKAEAQAwUAIIiBAgAQxEABAAhioAAABP1/92UEv7g0qSYAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 576x576 with 48 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"kde(16)"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true
},
"source": [
"### KDE for 28 features"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"hidden": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"bandwidth selcted : 2.9763514416313175\n",
"\n",
"48 new data points generated : \n",
"\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x576 with 48 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"kde(28)"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true
},
"source": [
"### KDE for 40 features"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {
"hidden": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"best bandwidth: 2.3357214690901213\n",
"\n",
"48 new data points generated : \n",
"\n"
]
},
{
"data": {
"image/png": "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+/ZVuUaNGk6dP//5zyqPGDEi+DuOO+644M/x62wb/vLLL06ZPn36qDx79uy473vPPfeobPensBL9LmUwGwAQlNaEO3s5K+JeQZQqpfsie3kr4q54eM011zhlKlWqlMopwiN6y7BHjx7Oz+2kSPs/xxkzZjh1JkyYoHK8K0n77wKpW7FihXPMToC0k7V8u0pecMEFKturEBGRNm3axF4zvpme6N/f7bff7vzcTkp9+eWXVZ44caJTx7ZhvCuKRPFpBQAE0VEAAILoKAAAQXQUAICgtAaz7ZwJEZHmzZurbFczHDx4sFPHPq/NwHV25eT857Hp2267zfl5s2bNVF68eLHKf/zjH506y5Yty9DZIVm+1Xy3bdumsn1AxLcVqt2SeOrUqU6Ztm3bpnKK8Ih+Dv/0pz85P7ePnJ999tkqv/POO06dv/71rxk6O40rCgBAEB0FACCIjgIAEJTWGEX37t2dYwsWLFC5d+/eKk+fPt2pk8h6UMgO33jD6tWrVV63bl3c97H3WH3LfPiWjUD6fGOF5557rsoVK1ZUuXLlyk4dO8HLN7EyukZU9B470nPKKac4x+wuke+//77KnTt3duqcd955mT2x/48rCgBAEB0FACCIjgIAEJTWGIWPffbarqH+wAMPOHV8CwXit2OXCLf3Tw877DCnzs0336xyrVruplmnnnpqBs4Olm+8wS5DnsgijCtXrlSZMaXflh1Xat26tcrdunVz6rRq1Upl3zYC8fb78eGKAgAQREcBAAiiowAABNFRAACC0hrM9u2ZbXc2sxPwnnzySafOp59+qnL79u2dMiwUmB12wT8Rd3DUDoT6dq+7/PLLVbZ7NouI9OzZM5VThEd0d7Sjjz7a+blvEDOepUuXqmwHRpE9vknHjRo1Utm2s90fW8Rd/NG3k2EquKIAAATRUQAAgugoAABBaY1R2Ak6IiITJ05U2d5n69u3r1Pn3//+t8oFBQVOmdq1a8de79u3L5nThBG9v71r1y7n52+//bbKffr0UXnnzp1Onfnz56vsWzBu06ZNsdd79+5N7GQR11VXXeUce/zxx1UeNWqUypdeeqlTJ9o+IiI9evTIwNkhEXZisohIXl6eynbC6tixY506s2bNUvn000/PwNlxRQEAiIOOAgAQREcBAAiiowAABKU1mG0HW0REzjnnHJWnTJmism83rq+//lpl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\n",
"text/plain": [
"<Figure size 576x576 with 48 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"kde(40)"
]
}
],
"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.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment