Skip to content

Instantly share code, notes, and snippets.

@den-run-ai
Last active August 6, 2017 05:26
Show Gist options
  • Save den-run-ai/a11bb2c91394155506114fa1d71bbcec to your computer and use it in GitHub Desktop.
Save den-run-ai/a11bb2c91394155506114fa1d71bbcec to your computer and use it in GitHub Desktop.
clustering of collection of curves
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import pandas as pd\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>x</th>\n",
" <th>Curve1</th>\n",
" <th>Curve2</th>\n",
" <th>Curve3</th>\n",
" <th>Curve4</th>\n",
" <th>Curve5</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.094940</td>\n",
" <td>0.06549</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.146910</td>\n",
" <td>0.06312</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.207230</td>\n",
" <td>0.06060</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.239154</td>\n",
" <td>NaN</td>\n",
" <td>0.21917</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.269555</td>\n",
" <td>0.04199</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>0.284697</td>\n",
" <td>NaN</td>\n",
" <td>0.20961</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0.318890</td>\n",
" <td>NaN</td>\n",
" <td>0.22361</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>0.367231</td>\n",
" <td>NaN</td>\n",
" <td>0.21254</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>0.374599</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.41826</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>0.422119</td>\n",
" <td>NaN</td>\n",
" <td>0.19552</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>0.437648</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.42153</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>0.474333</td>\n",
" <td>NaN</td>\n",
" <td>0.16687</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>0.501680</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.41895</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>0.519971</td>\n",
" <td>NaN</td>\n",
" <td>0.14710</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>0.565718</td>\n",
" <td>NaN</td>\n",
" <td>0.11564</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>0.566246</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.65869</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>0.581619</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.40149</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>0.606676</td>\n",
" <td>NaN</td>\n",
" <td>0.10032</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>0.620918</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.66504</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>0.648725</td>\n",
" <td>NaN</td>\n",
" <td>0.06747</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>0.652497</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.36083</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>0.654867</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.90532</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>0.686900</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.65220</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>0.700383</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.89868</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>0.710481</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.31018</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>0.738910</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.64545</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>0.754209</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.89628</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>0.765803</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.24644</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>0.807439</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.15812</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>0.808204</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.57562</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>0.812836</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.87627</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>0.851587</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.49895</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>0.852853</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.06243</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>0.871721</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.82852</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>0.880985</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.42982</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>0.909069</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.30232</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>0.911914</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.19570</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>0.926725</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.09909</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>0.927104</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.05821</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>0.927165</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.75164</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>0.971733</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.64721</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>0.979026</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.56095</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>0.991122</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.45709</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>0.991596</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.20599</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>0.992070</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.35488</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>0.993431</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.10814</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>0.997697</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.04822</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" x Curve1 Curve2 Curve3 Curve4 Curve5\n",
"0 0.094940 0.06549 NaN NaN NaN NaN\n",
"1 0.146910 0.06312 NaN NaN NaN NaN\n",
"2 0.207230 0.06060 NaN NaN NaN NaN\n",
"3 0.239154 NaN 0.21917 NaN NaN NaN\n",
"4 0.269555 0.04199 NaN NaN NaN NaN\n",
"5 0.284697 NaN 0.20961 NaN NaN NaN\n",
"6 0.318890 NaN 0.22361 NaN NaN NaN\n",
"7 0.367231 NaN 0.21254 NaN NaN NaN\n",
"8 0.374599 NaN NaN 0.41826 NaN NaN\n",
"9 0.422119 NaN 0.19552 NaN NaN NaN\n",
"10 0.437648 NaN NaN 0.42153 NaN NaN\n",
"11 0.474333 NaN 0.16687 NaN NaN NaN\n",
"12 0.501680 NaN NaN 0.41895 NaN NaN\n",
"13 0.519971 NaN 0.14710 NaN NaN NaN\n",
"14 0.565718 NaN 0.11564 NaN NaN NaN\n",
"15 0.566246 NaN NaN NaN 0.65869 NaN\n",
"16 0.581619 NaN NaN 0.40149 NaN NaN\n",
"17 0.606676 NaN 0.10032 NaN NaN NaN\n",
"18 0.620918 NaN NaN NaN 0.66504 NaN\n",
"19 0.648725 NaN 0.06747 NaN NaN NaN\n",
"20 0.652497 NaN NaN 0.36083 NaN NaN\n",
"21 0.654867 NaN NaN NaN NaN 0.90532\n",
"22 0.686900 NaN NaN NaN 0.65220 NaN\n",
"23 0.700383 NaN NaN NaN NaN 0.89868\n",
"24 0.710481 NaN NaN 0.31018 NaN NaN\n",
"25 0.738910 NaN NaN NaN 0.64545 NaN\n",
"26 0.754209 NaN NaN NaN NaN 0.89628\n",
"27 0.765803 NaN NaN 0.24644 NaN NaN\n",
"28 0.807439 NaN NaN 0.15812 NaN NaN\n",
"29 0.808204 NaN NaN NaN 0.57562 NaN\n",
"30 0.812836 NaN NaN NaN NaN 0.87627\n",
"31 0.851587 NaN NaN NaN 0.49895 NaN\n",
"32 0.852853 NaN NaN 0.06243 NaN NaN\n",
"33 0.871721 NaN NaN NaN NaN 0.82852\n",
"34 0.880985 NaN NaN NaN 0.42982 NaN\n",
"35 0.909069 NaN NaN NaN 0.30232 NaN\n",
"36 0.911914 NaN NaN NaN 0.19570 NaN\n",
"37 0.926725 NaN NaN NaN 0.09909 NaN\n",
"38 0.927104 NaN NaN NaN 0.05821 NaN\n",
"39 0.927165 NaN NaN NaN NaN 0.75164\n",
"40 0.971733 NaN NaN NaN NaN 0.64721\n",
"41 0.979026 NaN NaN NaN NaN 0.56095\n",
"42 0.991122 NaN NaN NaN NaN 0.45709\n",
"43 0.991596 NaN NaN NaN NaN 0.20599\n",
"44 0.992070 NaN NaN NaN NaN 0.35488\n",
"45 0.993431 NaN NaN NaN NaN 0.10814\n",
"46 0.997697 NaN NaN NaN NaN 0.04822"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# digitized from \n",
"# http://www.enginelabs.com/engine-tech/power-adders/understanding-compressor-maps-sizing-a-turbocharger/\n",
"df=pd.read_csv('./efr_91s74.csv')\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1842ab981d0>"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1842ab98e10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df.set_index('x').plot(style='.')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1842b142748>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1842b13b4a8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"dfc=df.set_index('x').sum(axis=1).reset_index()\n",
"dfc.columns=['x', 'y']\n",
"dfc.set_index('x').plot(style='.')"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>x</th>\n",
" <th>y</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.094940</td>\n",
" <td>0.06549</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.146910</td>\n",
" <td>0.06312</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.207230</td>\n",
" <td>0.06060</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.239154</td>\n",
" <td>0.21917</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.269555</td>\n",
" <td>0.04199</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>0.284697</td>\n",
" <td>0.20961</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0.318890</td>\n",
" <td>0.22361</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>0.367231</td>\n",
" <td>0.21254</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>0.374599</td>\n",
" <td>0.41826</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>0.422119</td>\n",
" <td>0.19552</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>0.437648</td>\n",
" <td>0.42153</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>0.474333</td>\n",
" <td>0.16687</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>0.501680</td>\n",
" <td>0.41895</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>0.519971</td>\n",
" <td>0.14710</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>0.565718</td>\n",
" <td>0.11564</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>0.566246</td>\n",
" <td>0.65869</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>0.581619</td>\n",
" <td>0.40149</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>0.606676</td>\n",
" <td>0.10032</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>0.620918</td>\n",
" <td>0.66504</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>0.648725</td>\n",
" <td>0.06747</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>0.652497</td>\n",
" <td>0.36083</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>0.654867</td>\n",
" <td>0.90532</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>0.686900</td>\n",
" <td>0.65220</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>0.700383</td>\n",
" <td>0.89868</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>0.710481</td>\n",
" <td>0.31018</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>0.738910</td>\n",
" <td>0.64545</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>0.754209</td>\n",
" <td>0.89628</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>0.765803</td>\n",
" <td>0.24644</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>0.807439</td>\n",
" <td>0.15812</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>0.808204</td>\n",
" <td>0.57562</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>0.812836</td>\n",
" <td>0.87627</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>0.851587</td>\n",
" <td>0.49895</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>0.852853</td>\n",
" <td>0.06243</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>0.871721</td>\n",
" <td>0.82852</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>0.880985</td>\n",
" <td>0.42982</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>0.909069</td>\n",
" <td>0.30232</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>0.911914</td>\n",
" <td>0.19570</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>0.926725</td>\n",
" <td>0.09909</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>0.927104</td>\n",
" <td>0.05821</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>0.927165</td>\n",
" <td>0.75164</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>0.971733</td>\n",
" <td>0.64721</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>0.979026</td>\n",
" <td>0.56095</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>0.991122</td>\n",
" <td>0.45709</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>0.991596</td>\n",
" <td>0.20599</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>0.992070</td>\n",
" <td>0.35488</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>0.993431</td>\n",
" <td>0.10814</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>0.997697</td>\n",
" <td>0.04822</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" x y\n",
"0 0.094940 0.06549\n",
"1 0.146910 0.06312\n",
"2 0.207230 0.06060\n",
"3 0.239154 0.21917\n",
"4 0.269555 0.04199\n",
"5 0.284697 0.20961\n",
"6 0.318890 0.22361\n",
"7 0.367231 0.21254\n",
"8 0.374599 0.41826\n",
"9 0.422119 0.19552\n",
"10 0.437648 0.42153\n",
"11 0.474333 0.16687\n",
"12 0.501680 0.41895\n",
"13 0.519971 0.14710\n",
"14 0.565718 0.11564\n",
"15 0.566246 0.65869\n",
"16 0.581619 0.40149\n",
"17 0.606676 0.10032\n",
"18 0.620918 0.66504\n",
"19 0.648725 0.06747\n",
"20 0.652497 0.36083\n",
"21 0.654867 0.90532\n",
"22 0.686900 0.65220\n",
"23 0.700383 0.89868\n",
"24 0.710481 0.31018\n",
"25 0.738910 0.64545\n",
"26 0.754209 0.89628\n",
"27 0.765803 0.24644\n",
"28 0.807439 0.15812\n",
"29 0.808204 0.57562\n",
"30 0.812836 0.87627\n",
"31 0.851587 0.49895\n",
"32 0.852853 0.06243\n",
"33 0.871721 0.82852\n",
"34 0.880985 0.42982\n",
"35 0.909069 0.30232\n",
"36 0.911914 0.19570\n",
"37 0.926725 0.09909\n",
"38 0.927104 0.05821\n",
"39 0.927165 0.75164\n",
"40 0.971733 0.64721\n",
"41 0.979026 0.56095\n",
"42 0.991122 0.45709\n",
"43 0.991596 0.20599\n",
"44 0.992070 0.35488\n",
"45 0.993431 0.10814\n",
"46 0.997697 0.04822"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfc"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"from sklearn.cluster import DBSCAN"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1842bf43780>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x184283bd390>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"res=DBSCAN(eps=0.15, min_samples=4).fit(dfc[['x','y']].as_matrix())\n",
"\n",
"dfc['dbscan']=res.labels_\n",
"#dfc.head()\n",
"\n",
"dfc.reset_index().plot(kind='scatter', x='x', y='y', c='dbscan', colormap='rainbow', sharex=False)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import hdbscan"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1842d0c99e8>"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nrkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1842c06afd0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"clusterer = hdbscan.HDBSCAN(min_cluster_size=4, min_samples=4, metric='euclidean', alpha=0.05)\n",
"\n",
"res = clusterer.fit(dfc[['x','y']].as_matrix())\n",
"\n",
"\n",
"dfc['hdbscan']=res.labels_\n",
"#dfc.head()\n",
"\n",
"dfc.reset_index().plot(kind='scatter', x='x', y='y', c='hdbscan', colormap='rainbow', sharex=False)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"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.5.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment