Skip to content

Instantly share code, notes, and snippets.

@digitalWestie
Last active October 30, 2019 12:00
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 digitalWestie/ea468aa340722c5b985eba17d21e27a3 to your computer and use it in GitHub Desktop.
Save digitalWestie/ea468aa340722c5b985eba17d21e27a3 to your computer and use it in GitHub Desktop.
Basic clustering for UrbanTide analytics
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 5,
"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>Label</th>\n",
" <th>VehicleMake</th>\n",
" <th>VehicleModel</th>\n",
" <th>YearOfBirth</th>\n",
" <th>Total</th>\n",
" <th>PASS</th>\n",
" <th>PASS %</th>\n",
" <th>FAIL</th>\n",
" <th>FAIL %</th>\n",
" <th>Vehicle and Safety Equipment</th>\n",
" <th>...</th>\n",
" <th>Light test</th>\n",
" <th>Light test %</th>\n",
" <th>Brake Test</th>\n",
" <th>Brake Test %</th>\n",
" <th>Emmissions</th>\n",
" <th>Emmissions %</th>\n",
" <th>OTHER</th>\n",
" <th>OTHER %</th>\n",
" <th>Incompletable</th>\n",
" <th>Incompletable %</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>ALFA ROMEO 145 1996</td>\n",
" <td>ALFA ROMEO</td>\n",
" <td>145</td>\n",
" <td>1996</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>100.0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>ALFA ROMEO 145 1997</td>\n",
" <td>ALFA ROMEO</td>\n",
" <td>145</td>\n",
" <td>1997</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>100.0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>ALFA ROMEO 145 1998</td>\n",
" <td>ALFA ROMEO</td>\n",
" <td>145</td>\n",
" <td>1998</td>\n",
" <td>4</td>\n",
" <td>2</td>\n",
" <td>50.0</td>\n",
" <td>2</td>\n",
" <td>50.0</td>\n",
" <td>1</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>1</td>\n",
" <td>25.0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>3 rows × 37 columns</p>\n",
"</div>"
],
"text/plain": [
" Label VehicleMake VehicleModel YearOfBirth Total PASS \\\n",
"0 ALFA ROMEO 145 1996 ALFA ROMEO 145 1996 1 1 \n",
"1 ALFA ROMEO 145 1997 ALFA ROMEO 145 1997 1 1 \n",
"2 ALFA ROMEO 145 1998 ALFA ROMEO 145 1998 4 2 \n",
"\n",
" PASS % FAIL FAIL % Vehicle and Safety Equipment ... Light test \\\n",
"0 100.0 0 0.0 0 ... 0 \n",
"1 100.0 0 0.0 0 ... 0 \n",
"2 50.0 2 50.0 1 ... 0 \n",
"\n",
" Light test % Brake Test Brake Test % Emmissions Emmissions % OTHER \\\n",
"0 0.0 0 0.0 0 0.0 0 \n",
"1 0.0 0 0.0 0 0.0 0 \n",
"2 0.0 1 25.0 0 0.0 0 \n",
"\n",
" OTHER % Incompletable Incompletable % \n",
"0 0.0 0 0.0 \n",
"1 0.0 0 0.0 \n",
"2 0.0 0 0.0 \n",
"\n",
"[3 rows x 37 columns]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd # import pandas to provide ways to manipulate tables of data\n",
"import io # import so we can read all kinds of file formats\n",
"import requests # use requests so we can make web requests to download data\n",
"from sklearn.cluster import KMeans # import the kmeans code so we can cluster data\n",
"\n",
"#Import the dataset\n",
"url = \"https://gist.githubusercontent.com/digitalWestie/b68b86cae1d893d4d3d3b01aca59be8d/raw/28908e0d394802181762dc7429f67c0f79fb9fad/Make%2520Model%2520Data%25202016-edited.csv\"\n",
"s=requests.get(url).content # get the content in the form of a string of characters (text)\n",
"dataset=pd.read_csv(io.StringIO(s.decode('windows-1252'))) # the text is in CSV format, read this into a pandas dataframe (like a table)\n",
"# give me the first 3 rows, and all columns\n",
"dataset.iloc[:3,:] # \":3\" means from start to 3, \":\" means from start to end\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"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>Label</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>ALFA ROMEO 145 1996</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>ALFA ROMEO 145 1997</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>ALFA ROMEO 145 1998</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Label\n",
"0 ALFA ROMEO 145 1996\n",
"1 ALFA ROMEO 145 1997\n",
"2 ALFA ROMEO 145 1998"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dataset.iloc[0:3,0:1] # show me first three rows, and first 2 columns"
]
},
{
"cell_type": "code",
"execution_count": 7,
"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>Label</th>\n",
" <th>Engine, Noise and Exhaust %</th>\n",
" <th>Chassis and Body %</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>ALFA ROMEO 145 1996</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>ALFA ROMEO 145 1997</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>ALFA ROMEO 145 1998</td>\n",
" <td>0.0</td>\n",
" <td>25.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>ALFA ROMEO 145 1999</td>\n",
" <td>0.0</td>\n",
" <td>66.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>ALFA ROMEO 145 2000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>ALFA ROMEO 146 1995</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>ALFA ROMEO 146 1997</td>\n",
" <td>0.0</td>\n",
" <td>33.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>ALFA ROMEO 146 1998</td>\n",
" <td>25.0</td>\n",
" <td>25.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>ALFA ROMEO 146 1999</td>\n",
" <td>20.0</td>\n",
" <td>20.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>ALFA ROMEO 146 2000</td>\n",
" <td>12.5</td>\n",
" <td>31.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>ALFA ROMEO 147 2001</td>\n",
" <td>3.6</td>\n",
" <td>7.1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>ALFA ROMEO 147 2002</td>\n",
" <td>10.2</td>\n",
" <td>13.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>ALFA ROMEO 147 2003</td>\n",
" <td>6.9</td>\n",
" <td>9.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>ALFA ROMEO 147 2004</td>\n",
" <td>8.1</td>\n",
" <td>6.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>ALFA ROMEO 147 2005</td>\n",
" <td>9.5</td>\n",
" <td>1.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>ALFA ROMEO 147 2006</td>\n",
" <td>3.4</td>\n",
" <td>3.4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>ALFA ROMEO 147 2007</td>\n",
" <td>7.0</td>\n",
" <td>9.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>ALFA ROMEO 147 2008</td>\n",
" <td>4.8</td>\n",
" <td>3.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>ALFA ROMEO 147 2009</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>ALFA ROMEO 147 2010</td>\n",
" <td>0.0</td>\n",
" <td>5.6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>ALFA ROMEO 155 1993</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>ALFA ROMEO 155 1994</td>\n",
" <td>0.0</td>\n",
" <td>50.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>ALFA ROMEO 155 1995</td>\n",
" <td>0.0</td>\n",
" <td>50.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>ALFA ROMEO 155 1996</td>\n",
" <td>33.3</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>ALFA ROMEO 155 1997</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>ALFA ROMEO 156 1998</td>\n",
" <td>0.0</td>\n",
" <td>18.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>ALFA ROMEO 156 1999</td>\n",
" <td>8.3</td>\n",
" <td>8.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>ALFA ROMEO 156 2000</td>\n",
" <td>8.5</td>\n",
" <td>22.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>ALFA ROMEO 156 2001</td>\n",
" <td>7.0</td>\n",
" <td>18.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>ALFA ROMEO 156 2002</td>\n",
" <td>7.5</td>\n",
" <td>10.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8135</th>\n",
" <td>VOLVO XC60 2008</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8136</th>\n",
" <td>VOLVO XC60 2009</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8137</th>\n",
" <td>VOLVO XC60 2010</td>\n",
" <td>3.3</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8138</th>\n",
" <td>VOLVO XC60 2011</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8139</th>\n",
" <td>VOLVO XC60 2012</td>\n",
" <td>0.9</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8140</th>\n",
" <td>VOLVO XC60 2013</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8141</th>\n",
" <td>VOLVO XC70 2003</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8142</th>\n",
" <td>VOLVO XC70 2004</td>\n",
" <td>15.4</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8143</th>\n",
" <td>VOLVO XC70 2005</td>\n",
" <td>7.1</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8144</th>\n",
" <td>VOLVO XC70 2006</td>\n",
" <td>4.2</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8145</th>\n",
" <td>VOLVO XC70 2007</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8146</th>\n",
" <td>VOLVO XC70 2008</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8147</th>\n",
" <td>VOLVO XC70 2009</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8148</th>\n",
" <td>VOLVO XC70 2010</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8149</th>\n",
" <td>VOLVO XC70 2011</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8150</th>\n",
" <td>VOLVO XC70 2012</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8151</th>\n",
" <td>VOLVO XC70 2013</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8152</th>\n",
" <td>VOLVO XC90 2003</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8153</th>\n",
" <td>VOLVO XC90 2004</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8154</th>\n",
" <td>VOLVO XC90 2005</td>\n",
" <td>7.3</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8155</th>\n",
" <td>VOLVO XC90 2006</td>\n",
" <td>1.7</td>\n",
" <td>1.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8156</th>\n",
" <td>VOLVO XC90 2007</td>\n",
" <td>0.6</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8157</th>\n",
" <td>VOLVO XC90 2008</td>\n",
" <td>2.3</td>\n",
" <td>1.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8158</th>\n",
" <td>VOLVO XC90 2010</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8159</th>\n",
" <td>VOLVO XC90 2011</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8160</th>\n",
" <td>VOLVO XC90 2012</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8161</th>\n",
" <td>VOLVO XC90 2013</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8162</th>\n",
" <td>VOLVO XC90 2.5T SE 5DR E 2005</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8163</th>\n",
" <td>WESTFIELD OTHER 1999</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8164</th>\n",
" <td>YUGO OTHER 1986</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>8165 rows × 3 columns</p>\n",
"</div>"
],
"text/plain": [
" Label Engine, Noise and Exhaust % \\\n",
"0 ALFA ROMEO 145 1996 0.0 \n",
"1 ALFA ROMEO 145 1997 0.0 \n",
"2 ALFA ROMEO 145 1998 0.0 \n",
"3 ALFA ROMEO 145 1999 0.0 \n",
"4 ALFA ROMEO 145 2000 0.0 \n",
"5 ALFA ROMEO 146 1995 0.0 \n",
"6 ALFA ROMEO 146 1997 0.0 \n",
"7 ALFA ROMEO 146 1998 25.0 \n",
"8 ALFA ROMEO 146 1999 20.0 \n",
"9 ALFA ROMEO 146 2000 12.5 \n",
"10 ALFA ROMEO 147 2001 3.6 \n",
"11 ALFA ROMEO 147 2002 10.2 \n",
"12 ALFA ROMEO 147 2003 6.9 \n",
"13 ALFA ROMEO 147 2004 8.1 \n",
"14 ALFA ROMEO 147 2005 9.5 \n",
"15 ALFA ROMEO 147 2006 3.4 \n",
"16 ALFA ROMEO 147 2007 7.0 \n",
"17 ALFA ROMEO 147 2008 4.8 \n",
"18 ALFA ROMEO 147 2009 0.0 \n",
"19 ALFA ROMEO 147 2010 0.0 \n",
"20 ALFA ROMEO 155 1993 0.0 \n",
"21 ALFA ROMEO 155 1994 0.0 \n",
"22 ALFA ROMEO 155 1995 0.0 \n",
"23 ALFA ROMEO 155 1996 33.3 \n",
"24 ALFA ROMEO 155 1997 0.0 \n",
"25 ALFA ROMEO 156 1998 0.0 \n",
"26 ALFA ROMEO 156 1999 8.3 \n",
"27 ALFA ROMEO 156 2000 8.5 \n",
"28 ALFA ROMEO 156 2001 7.0 \n",
"29 ALFA ROMEO 156 2002 7.5 \n",
"... ... ... \n",
"8135 VOLVO XC60 2008 0.0 \n",
"8136 VOLVO XC60 2009 0.0 \n",
"8137 VOLVO XC60 2010 3.3 \n",
"8138 VOLVO XC60 2011 0.0 \n",
"8139 VOLVO XC60 2012 0.9 \n",
"8140 VOLVO XC60 2013 0.0 \n",
"8141 VOLVO XC70 2003 0.0 \n",
"8142 VOLVO XC70 2004 15.4 \n",
"8143 VOLVO XC70 2005 7.1 \n",
"8144 VOLVO XC70 2006 4.2 \n",
"8145 VOLVO XC70 2007 0.0 \n",
"8146 VOLVO XC70 2008 0.0 \n",
"8147 VOLVO XC70 2009 0.0 \n",
"8148 VOLVO XC70 2010 0.0 \n",
"8149 VOLVO XC70 2011 0.0 \n",
"8150 VOLVO XC70 2012 0.0 \n",
"8151 VOLVO XC70 2013 0.0 \n",
"8152 VOLVO XC90 2003 0.0 \n",
"8153 VOLVO XC90 2004 0.0 \n",
"8154 VOLVO XC90 2005 7.3 \n",
"8155 VOLVO XC90 2006 1.7 \n",
"8156 VOLVO XC90 2007 0.6 \n",
"8157 VOLVO XC90 2008 2.3 \n",
"8158 VOLVO XC90 2010 0.0 \n",
"8159 VOLVO XC90 2011 0.0 \n",
"8160 VOLVO XC90 2012 0.0 \n",
"8161 VOLVO XC90 2013 0.0 \n",
"8162 VOLVO XC90 2.5T SE 5DR E 2005 0.0 \n",
"8163 WESTFIELD OTHER 1999 0.0 \n",
"8164 YUGO OTHER 1986 0.0 \n",
"\n",
" Chassis and Body % \n",
"0 0.0 \n",
"1 0.0 \n",
"2 25.0 \n",
"3 66.7 \n",
"4 0.0 \n",
"5 0.0 \n",
"6 33.3 \n",
"7 25.0 \n",
"8 20.0 \n",
"9 31.3 \n",
"10 7.1 \n",
"11 13.0 \n",
"12 9.2 \n",
"13 6.8 \n",
"14 1.7 \n",
"15 3.4 \n",
"16 9.3 \n",
"17 3.2 \n",
"18 0.0 \n",
"19 5.6 \n",
"20 0.0 \n",
"21 50.0 \n",
"22 50.0 \n",
"23 0.0 \n",
"24 0.0 \n",
"25 18.2 \n",
"26 8.3 \n",
"27 22.5 \n",
"28 18.8 \n",
"29 10.5 \n",
"... ... \n",
"8135 0.0 \n",
"8136 0.0 \n",
"8137 0.0 \n",
"8138 0.0 \n",
"8139 0.0 \n",
"8140 0.0 \n",
"8141 0.0 \n",
"8142 0.0 \n",
"8143 0.0 \n",
"8144 0.0 \n",
"8145 0.0 \n",
"8146 0.0 \n",
"8147 0.0 \n",
"8148 0.0 \n",
"8149 0.0 \n",
"8150 0.0 \n",
"8151 0.0 \n",
"8152 0.0 \n",
"8153 0.0 \n",
"8154 0.0 \n",
"8155 1.3 \n",
"8156 0.0 \n",
"8157 1.7 \n",
"8158 0.0 \n",
"8159 0.0 \n",
"8160 0.0 \n",
"8161 0.0 \n",
"8162 0.0 \n",
"8163 0.0 \n",
"8164 0.0 \n",
"\n",
"[8165 rows x 3 columns]"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Only include specified columns:\n",
"subset = dataset.loc[:, ['Label', 'Engine, Noise and Exhaust %', 'Chassis and Body %']] # loc is like iloc, but can use the label names to index columns\n",
"subset # show me the subset\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 0, 2, ..., 0, 0, 0], dtype=int32)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"subset_data=subset.iloc[:, 1:] #Discard label column (we only want to feed numeric values to algorithm)\n",
"\n",
"#Run clustering (4 clusters)\n",
"kmeans = KMeans(n_clusters=4).fit(subset_data)\n",
"y_kmeans = kmeans.predict(subset_data) # run clustering algorithm\n",
"y_kmeans # shows the collection of cluster ids for each row in the table\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"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": [
"#Draw graph of cluster\n",
"from matplotlib import pyplot as plt #import plot library\n",
"plt.scatter(subset_data.iloc[:,0], subset_data.iloc[:,1], c=y_kmeans, s=50, cmap='viridis') # plot points\n",
"centers = kmeans.cluster_centers_ \n",
"plt.scatter(centers[:, 0], centers[:, 1], c='black', s=200, alpha=0.5); # plot centre points of the clusters\n"
]
},
{
"cell_type": "code",
"execution_count": 13,
"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>col_0</th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Label</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>ALFA ROMEO 145 1996</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 145 1997</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 145 1998</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 145 1999</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 145 2000</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 146 1995</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 146 1997</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 146 1998</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 146 1999</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 146 2000</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 147 2001</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 147 2002</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 147 2003</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 147 2004</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 147 2005</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 147 2006</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 147 2007</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 147 2008</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 147 2009</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 147 2010</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 155 1993</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 155 1994</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 155 1995</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 155 1996</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 155 1997</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 156 1998</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 156 1999</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 156 2000</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 156 2001</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALFA ROMEO 156 2002</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC60 2008</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC60 2009</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC60 2010</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC60 2011</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC60 2012</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC60 2013</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC70 2003</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC70 2004</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC70 2005</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC70 2006</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC70 2007</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC70 2008</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC70 2009</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC70 2010</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC70 2011</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC70 2012</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC70 2013</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC90 2.5T SE 5DR E 2005</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC90 2003</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC90 2004</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC90 2005</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC90 2006</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC90 2007</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC90 2008</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC90 2010</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC90 2011</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC90 2012</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VOLVO XC90 2013</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>WESTFIELD OTHER 1999</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>YUGO OTHER 1986</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>8165 rows × 4 columns</p>\n",
"</div>"
],
"text/plain": [
"col_0 0 1 2 3\n",
"Label \n",
"ALFA ROMEO 145 1996 1 0 0 0\n",
"ALFA ROMEO 145 1997 1 0 0 0\n",
"ALFA ROMEO 145 1998 0 0 1 0\n",
"ALFA ROMEO 145 1999 0 1 0 0\n",
"ALFA ROMEO 145 2000 1 0 0 0\n",
"ALFA ROMEO 146 1995 1 0 0 0\n",
"ALFA ROMEO 146 1997 0 0 1 0\n",
"ALFA ROMEO 146 1998 0 0 1 0\n",
"ALFA ROMEO 146 1999 0 0 1 0\n",
"ALFA ROMEO 146 2000 0 0 1 0\n",
"ALFA ROMEO 147 2001 1 0 0 0\n",
"ALFA ROMEO 147 2002 1 0 0 0\n",
"ALFA ROMEO 147 2003 1 0 0 0\n",
"ALFA ROMEO 147 2004 1 0 0 0\n",
"ALFA ROMEO 147 2005 1 0 0 0\n",
"ALFA ROMEO 147 2006 1 0 0 0\n",
"ALFA ROMEO 147 2007 1 0 0 0\n",
"ALFA ROMEO 147 2008 1 0 0 0\n",
"ALFA ROMEO 147 2009 1 0 0 0\n",
"ALFA ROMEO 147 2010 1 0 0 0\n",
"ALFA ROMEO 155 1993 1 0 0 0\n",
"ALFA ROMEO 155 1994 0 0 1 0\n",
"ALFA ROMEO 155 1995 0 0 1 0\n",
"ALFA ROMEO 155 1996 1 0 0 0\n",
"ALFA ROMEO 155 1997 1 0 0 0\n",
"ALFA ROMEO 156 1998 1 0 0 0\n",
"ALFA ROMEO 156 1999 1 0 0 0\n",
"ALFA ROMEO 156 2000 0 0 1 0\n",
"ALFA ROMEO 156 2001 0 0 1 0\n",
"ALFA ROMEO 156 2002 1 0 0 0\n",
"... .. .. .. ..\n",
"VOLVO XC60 2008 1 0 0 0\n",
"VOLVO XC60 2009 1 0 0 0\n",
"VOLVO XC60 2010 1 0 0 0\n",
"VOLVO XC60 2011 1 0 0 0\n",
"VOLVO XC60 2012 1 0 0 0\n",
"VOLVO XC60 2013 1 0 0 0\n",
"VOLVO XC70 2003 1 0 0 0\n",
"VOLVO XC70 2004 1 0 0 0\n",
"VOLVO XC70 2005 1 0 0 0\n",
"VOLVO XC70 2006 1 0 0 0\n",
"VOLVO XC70 2007 1 0 0 0\n",
"VOLVO XC70 2008 1 0 0 0\n",
"VOLVO XC70 2009 1 0 0 0\n",
"VOLVO XC70 2010 1 0 0 0\n",
"VOLVO XC70 2011 1 0 0 0\n",
"VOLVO XC70 2012 1 0 0 0\n",
"VOLVO XC70 2013 1 0 0 0\n",
"VOLVO XC90 2.5T SE 5DR E 2005 1 0 0 0\n",
"VOLVO XC90 2003 1 0 0 0\n",
"VOLVO XC90 2004 1 0 0 0\n",
"VOLVO XC90 2005 1 0 0 0\n",
"VOLVO XC90 2006 1 0 0 0\n",
"VOLVO XC90 2007 1 0 0 0\n",
"VOLVO XC90 2008 1 0 0 0\n",
"VOLVO XC90 2010 1 0 0 0\n",
"VOLVO XC90 2011 1 0 0 0\n",
"VOLVO XC90 2012 1 0 0 0\n",
"VOLVO XC90 2013 1 0 0 0\n",
"WESTFIELD OTHER 1999 1 0 0 0\n",
"YUGO OTHER 1986 1 0 0 0\n",
"\n",
"[8165 rows x 4 columns]"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Combine labels with groups\n",
"result = pd.crosstab(subset.iloc[:,0], y_kmeans)\n",
"result\n"
]
},
{
"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.6.7"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
import pandas as pd
import io
import requests
from sklearn.cluster import KMeans
#Download datasets
url = "https://gist.githubusercontent.com/digitalWestie/b68b86cae1d893d4d3d3b01aca59be8d/raw/28908e0d394802181762dc7429f67c0f79fb9fad/Make%2520Model%2520Data%25202016-edited.csv"
s=requests.get(url).content
dataset=pd.read_csv(io.StringIO(s.decode('windows-1252')))
dataset.iloc[:3,:]
# Only include specified columns:
subset = dataset.loc[:, ['Label', 'Engine, Noise and Exhaust %', 'Chassis and Body %']]
subset
#Discard label columns (we only want to feed numeric values to algorithm)
subset_data=subset.iloc[:, 1:]
#Run clustering (4 clusters)
kmeans = KMeans(n_clusters=4).fit(subset_data)
y_kmeans = kmeans.predict(subset_data)
y_kmeans
#Draw graph of cluster
from matplotlib import pyplot as plt
plt.scatter(subset_data.iloc[:,0], subset_data.iloc[:,1], c=y_kmeans, s=50, cmap='viridis')
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='black', s=200, alpha=0.5);
#Combine labels with groups
result = pd.crosstab(subset.iloc[:,0], y_kmeans)
result
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment