Skip to content

Instantly share code, notes, and snippets.

@blooser
Created August 1, 2018 12:14
Show Gist options
  • Save blooser/1b1ee51d51b911a70c2fe98924ae6bbc to your computer and use it in GitHub Desktop.
Save blooser/1b1ee51d51b911a70c2fe98924ae6bbc to your computer and use it in GitHub Desktop.
Most popular machine learning dataset
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def percent(value):\n",
" return \"{0:.0%}\".format(value)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"dataset = pd.read_csv(\"iris.csv\", header=None)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"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>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>5.1</td>\n",
" <td>3.5</td>\n",
" <td>1.4</td>\n",
" <td>0.2</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>4.9</td>\n",
" <td>3.0</td>\n",
" <td>1.4</td>\n",
" <td>0.2</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>4.7</td>\n",
" <td>3.2</td>\n",
" <td>1.3</td>\n",
" <td>0.2</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4.6</td>\n",
" <td>3.1</td>\n",
" <td>1.5</td>\n",
" <td>0.2</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5.0</td>\n",
" <td>3.6</td>\n",
" <td>1.4</td>\n",
" <td>0.2</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>5.4</td>\n",
" <td>3.9</td>\n",
" <td>1.7</td>\n",
" <td>0.4</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>4.6</td>\n",
" <td>3.4</td>\n",
" <td>1.4</td>\n",
" <td>0.3</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>5.0</td>\n",
" <td>3.4</td>\n",
" <td>1.5</td>\n",
" <td>0.2</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>4.4</td>\n",
" <td>2.9</td>\n",
" <td>1.4</td>\n",
" <td>0.2</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>4.9</td>\n",
" <td>3.1</td>\n",
" <td>1.5</td>\n",
" <td>0.1</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>5.4</td>\n",
" <td>3.7</td>\n",
" <td>1.5</td>\n",
" <td>0.2</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>4.8</td>\n",
" <td>3.4</td>\n",
" <td>1.6</td>\n",
" <td>0.2</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>4.8</td>\n",
" <td>3.0</td>\n",
" <td>1.4</td>\n",
" <td>0.1</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>4.3</td>\n",
" <td>3.0</td>\n",
" <td>1.1</td>\n",
" <td>0.1</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>5.8</td>\n",
" <td>4.0</td>\n",
" <td>1.2</td>\n",
" <td>0.2</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>5.7</td>\n",
" <td>4.4</td>\n",
" <td>1.5</td>\n",
" <td>0.4</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>5.4</td>\n",
" <td>3.9</td>\n",
" <td>1.3</td>\n",
" <td>0.4</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>5.1</td>\n",
" <td>3.5</td>\n",
" <td>1.4</td>\n",
" <td>0.3</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>5.7</td>\n",
" <td>3.8</td>\n",
" <td>1.7</td>\n",
" <td>0.3</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>5.1</td>\n",
" <td>3.8</td>\n",
" <td>1.5</td>\n",
" <td>0.3</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>5.4</td>\n",
" <td>3.4</td>\n",
" <td>1.7</td>\n",
" <td>0.2</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>5.1</td>\n",
" <td>3.7</td>\n",
" <td>1.5</td>\n",
" <td>0.4</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>4.6</td>\n",
" <td>3.6</td>\n",
" <td>1.0</td>\n",
" <td>0.2</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>5.1</td>\n",
" <td>3.3</td>\n",
" <td>1.7</td>\n",
" <td>0.5</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>4.8</td>\n",
" <td>3.4</td>\n",
" <td>1.9</td>\n",
" <td>0.2</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>5.0</td>\n",
" <td>3.0</td>\n",
" <td>1.6</td>\n",
" <td>0.2</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>5.0</td>\n",
" <td>3.4</td>\n",
" <td>1.6</td>\n",
" <td>0.4</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>5.2</td>\n",
" <td>3.5</td>\n",
" <td>1.5</td>\n",
" <td>0.2</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>5.2</td>\n",
" <td>3.4</td>\n",
" <td>1.4</td>\n",
" <td>0.2</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>4.7</td>\n",
" <td>3.2</td>\n",
" <td>1.6</td>\n",
" <td>0.2</td>\n",
" <td>Iris-setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>120</th>\n",
" <td>6.9</td>\n",
" <td>3.2</td>\n",
" <td>5.7</td>\n",
" <td>2.3</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>121</th>\n",
" <td>5.6</td>\n",
" <td>2.8</td>\n",
" <td>4.9</td>\n",
" <td>2.0</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>122</th>\n",
" <td>7.7</td>\n",
" <td>2.8</td>\n",
" <td>6.7</td>\n",
" <td>2.0</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>123</th>\n",
" <td>6.3</td>\n",
" <td>2.7</td>\n",
" <td>4.9</td>\n",
" <td>1.8</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>124</th>\n",
" <td>6.7</td>\n",
" <td>3.3</td>\n",
" <td>5.7</td>\n",
" <td>2.1</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>125</th>\n",
" <td>7.2</td>\n",
" <td>3.2</td>\n",
" <td>6.0</td>\n",
" <td>1.8</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>126</th>\n",
" <td>6.2</td>\n",
" <td>2.8</td>\n",
" <td>4.8</td>\n",
" <td>1.8</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>127</th>\n",
" <td>6.1</td>\n",
" <td>3.0</td>\n",
" <td>4.9</td>\n",
" <td>1.8</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>128</th>\n",
" <td>6.4</td>\n",
" <td>2.8</td>\n",
" <td>5.6</td>\n",
" <td>2.1</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>129</th>\n",
" <td>7.2</td>\n",
" <td>3.0</td>\n",
" <td>5.8</td>\n",
" <td>1.6</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>130</th>\n",
" <td>7.4</td>\n",
" <td>2.8</td>\n",
" <td>6.1</td>\n",
" <td>1.9</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>131</th>\n",
" <td>7.9</td>\n",
" <td>3.8</td>\n",
" <td>6.4</td>\n",
" <td>2.0</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>132</th>\n",
" <td>6.4</td>\n",
" <td>2.8</td>\n",
" <td>5.6</td>\n",
" <td>2.2</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>133</th>\n",
" <td>6.3</td>\n",
" <td>2.8</td>\n",
" <td>5.1</td>\n",
" <td>1.5</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>134</th>\n",
" <td>6.1</td>\n",
" <td>2.6</td>\n",
" <td>5.6</td>\n",
" <td>1.4</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>135</th>\n",
" <td>7.7</td>\n",
" <td>3.0</td>\n",
" <td>6.1</td>\n",
" <td>2.3</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>136</th>\n",
" <td>6.3</td>\n",
" <td>3.4</td>\n",
" <td>5.6</td>\n",
" <td>2.4</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>137</th>\n",
" <td>6.4</td>\n",
" <td>3.1</td>\n",
" <td>5.5</td>\n",
" <td>1.8</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>138</th>\n",
" <td>6.0</td>\n",
" <td>3.0</td>\n",
" <td>4.8</td>\n",
" <td>1.8</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>139</th>\n",
" <td>6.9</td>\n",
" <td>3.1</td>\n",
" <td>5.4</td>\n",
" <td>2.1</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>140</th>\n",
" <td>6.7</td>\n",
" <td>3.1</td>\n",
" <td>5.6</td>\n",
" <td>2.4</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>141</th>\n",
" <td>6.9</td>\n",
" <td>3.1</td>\n",
" <td>5.1</td>\n",
" <td>2.3</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>142</th>\n",
" <td>5.8</td>\n",
" <td>2.7</td>\n",
" <td>5.1</td>\n",
" <td>1.9</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>143</th>\n",
" <td>6.8</td>\n",
" <td>3.2</td>\n",
" <td>5.9</td>\n",
" <td>2.3</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>144</th>\n",
" <td>6.7</td>\n",
" <td>3.3</td>\n",
" <td>5.7</td>\n",
" <td>2.5</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>145</th>\n",
" <td>6.7</td>\n",
" <td>3.0</td>\n",
" <td>5.2</td>\n",
" <td>2.3</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>146</th>\n",
" <td>6.3</td>\n",
" <td>2.5</td>\n",
" <td>5.0</td>\n",
" <td>1.9</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>147</th>\n",
" <td>6.5</td>\n",
" <td>3.0</td>\n",
" <td>5.2</td>\n",
" <td>2.0</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>148</th>\n",
" <td>6.2</td>\n",
" <td>3.4</td>\n",
" <td>5.4</td>\n",
" <td>2.3</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>149</th>\n",
" <td>5.9</td>\n",
" <td>3.0</td>\n",
" <td>5.1</td>\n",
" <td>1.8</td>\n",
" <td>Iris-virginica</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>150 rows × 5 columns</p>\n",
"</div>"
],
"text/plain": [
" 0 1 2 3 4\n",
"0 5.1 3.5 1.4 0.2 Iris-setosa\n",
"1 4.9 3.0 1.4 0.2 Iris-setosa\n",
"2 4.7 3.2 1.3 0.2 Iris-setosa\n",
"3 4.6 3.1 1.5 0.2 Iris-setosa\n",
"4 5.0 3.6 1.4 0.2 Iris-setosa\n",
"5 5.4 3.9 1.7 0.4 Iris-setosa\n",
"6 4.6 3.4 1.4 0.3 Iris-setosa\n",
"7 5.0 3.4 1.5 0.2 Iris-setosa\n",
"8 4.4 2.9 1.4 0.2 Iris-setosa\n",
"9 4.9 3.1 1.5 0.1 Iris-setosa\n",
"10 5.4 3.7 1.5 0.2 Iris-setosa\n",
"11 4.8 3.4 1.6 0.2 Iris-setosa\n",
"12 4.8 3.0 1.4 0.1 Iris-setosa\n",
"13 4.3 3.0 1.1 0.1 Iris-setosa\n",
"14 5.8 4.0 1.2 0.2 Iris-setosa\n",
"15 5.7 4.4 1.5 0.4 Iris-setosa\n",
"16 5.4 3.9 1.3 0.4 Iris-setosa\n",
"17 5.1 3.5 1.4 0.3 Iris-setosa\n",
"18 5.7 3.8 1.7 0.3 Iris-setosa\n",
"19 5.1 3.8 1.5 0.3 Iris-setosa\n",
"20 5.4 3.4 1.7 0.2 Iris-setosa\n",
"21 5.1 3.7 1.5 0.4 Iris-setosa\n",
"22 4.6 3.6 1.0 0.2 Iris-setosa\n",
"23 5.1 3.3 1.7 0.5 Iris-setosa\n",
"24 4.8 3.4 1.9 0.2 Iris-setosa\n",
"25 5.0 3.0 1.6 0.2 Iris-setosa\n",
"26 5.0 3.4 1.6 0.4 Iris-setosa\n",
"27 5.2 3.5 1.5 0.2 Iris-setosa\n",
"28 5.2 3.4 1.4 0.2 Iris-setosa\n",
"29 4.7 3.2 1.6 0.2 Iris-setosa\n",
".. ... ... ... ... ...\n",
"120 6.9 3.2 5.7 2.3 Iris-virginica\n",
"121 5.6 2.8 4.9 2.0 Iris-virginica\n",
"122 7.7 2.8 6.7 2.0 Iris-virginica\n",
"123 6.3 2.7 4.9 1.8 Iris-virginica\n",
"124 6.7 3.3 5.7 2.1 Iris-virginica\n",
"125 7.2 3.2 6.0 1.8 Iris-virginica\n",
"126 6.2 2.8 4.8 1.8 Iris-virginica\n",
"127 6.1 3.0 4.9 1.8 Iris-virginica\n",
"128 6.4 2.8 5.6 2.1 Iris-virginica\n",
"129 7.2 3.0 5.8 1.6 Iris-virginica\n",
"130 7.4 2.8 6.1 1.9 Iris-virginica\n",
"131 7.9 3.8 6.4 2.0 Iris-virginica\n",
"132 6.4 2.8 5.6 2.2 Iris-virginica\n",
"133 6.3 2.8 5.1 1.5 Iris-virginica\n",
"134 6.1 2.6 5.6 1.4 Iris-virginica\n",
"135 7.7 3.0 6.1 2.3 Iris-virginica\n",
"136 6.3 3.4 5.6 2.4 Iris-virginica\n",
"137 6.4 3.1 5.5 1.8 Iris-virginica\n",
"138 6.0 3.0 4.8 1.8 Iris-virginica\n",
"139 6.9 3.1 5.4 2.1 Iris-virginica\n",
"140 6.7 3.1 5.6 2.4 Iris-virginica\n",
"141 6.9 3.1 5.1 2.3 Iris-virginica\n",
"142 5.8 2.7 5.1 1.9 Iris-virginica\n",
"143 6.8 3.2 5.9 2.3 Iris-virginica\n",
"144 6.7 3.3 5.7 2.5 Iris-virginica\n",
"145 6.7 3.0 5.2 2.3 Iris-virginica\n",
"146 6.3 2.5 5.0 1.9 Iris-virginica\n",
"147 6.5 3.0 5.2 2.0 Iris-virginica\n",
"148 6.2 3.4 5.4 2.3 Iris-virginica\n",
"149 5.9 3.0 5.1 1.8 Iris-virginica\n",
"\n",
"[150 rows x 5 columns]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dataset"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"X = dataset.iloc[:, 0:4].values\n",
"y = dataset.iloc[:, 4].values"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.preprocessing import LabelEncoder\n",
"\n",
"label_y = LabelEncoder()\n",
"y = label_y.fit_transform(y)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
" 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
" 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split\n",
"\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.preprocessing import StandardScaler\n",
"\n",
"sc = StandardScaler()\n",
"X_train = sc.fit_transform(X_train)\n",
"X_test = sc.transform(X_test)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.svm import SVC\n",
"\n",
"classifier = SVC()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"GridSearchCV(cv=None, error_score='raise',\n",
" estimator=SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,\n",
" decision_function_shape='ovr', degree=3, gamma='auto', kernel='rbf',\n",
" max_iter=-1, probability=False, random_state=None, shrinking=True,\n",
" tol=0.001, verbose=False),\n",
" fit_params=None, iid=True, n_jobs=1,\n",
" param_grid=[{'C': [1, 2, 3, 4, 5, 6, 7, 8, 9], 'gamma': [0.1, 0.2, 0.3, 0.4, 0.5, 0.6], 'kernel': ['rbf', 'linear']}],\n",
" pre_dispatch='2*n_jobs', refit=True, return_train_score='warn',\n",
" scoring='accuracy', verbose=0)"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.model_selection import GridSearchCV\n",
"\n",
"parameters = [{'C': [1, 2, 3, 4, 5, 6, 7, 8, 9], \n",
" 'gamma': [0.1, 0.2, 0.3, 0.4, 0.5, 0.6,],\n",
" 'kernel': ['rbf', 'linear']}]\n",
"\n",
"grid_search = GridSearchCV(estimator=classifier, param_grid=parameters, scoring='accuracy')\n",
"grid_search.fit(X_train, y_train)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Best Accuracy: 96%\n"
]
}
],
"source": [
"print(\"Best Accuracy: {}\".format(percent(grid_search.best_score_))) "
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'C': 1, 'gamma': 0.1, 'kernel': 'linear'}"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grid_search.best_params_"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"SVC(C=1, cache_size=200, class_weight=None, coef0=0.0,\n",
" decision_function_shape='ovr', degree=3, gamma=0.1, kernel='linear',\n",
" max_iter=-1, probability=False, random_state=None, shrinking=True,\n",
" tol=0.001, verbose=False)"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"classifier = SVC(C=1, kernel='linear', gamma=0.1)\n",
"classifier.fit(X_train, y_train)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"y_pred = classifier.predict(X_test)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[10, 0, 0],\n",
" [ 0, 8, 1],\n",
" [ 0, 0, 11]])"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.metrics import confusion_matrix\n",
"\n",
"cm = confusion_matrix(y_test, y_pred)\n",
"cm"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import cross_val_score\n",
"\n",
"accuracy = cross_val_score(classifier, X_train, y_train, cv=10)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0.92307692, 1. , 1. , 1. , 0.83333333,\n",
" 0.83333333, 1. , 1. , 1. , 1. ])"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"accuracy"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"92% 100% 100% 100% 83% 83% 100% 100% 100% 100% "
]
}
],
"source": [
"for single_acc in accuracy:\n",
" print(percent(single_acc), end=' ')"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Accuracy: 96%\n"
]
}
],
"source": [
"print(\"Accuracy: {}\".format(percent(accuracy.mean()))) "
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.cluster import KMeans\n",
"kmeans = KMeans(n_clusters=3, init='k-means++', max_iter=300, n_init=10, random_state=42)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"features = X[:, :-2]\n",
"y_kmeans = kmeans.fit_predict(features)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEICAYAAACktLTqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJztvXt8FPW9//98E5aEAOEaPCoqmGpVYkSJLV5aQ+jxFET6hWJLT0Oh32ORSyta7KG0j4JJL8i3chAP9VZs0WCtNeAFFX9YI1YtXsBiAKFACiooEkAiyMUQPr8/ZhM2l92Z3Zndnd19P3nMg+zMZz6f93z2s++dnXl9XiPGGBRFUZT0okOyA1AURVG8R5O7oihKGqLJXVEUJQ3R5K4oipKGaHJXFEVJQzS5K4qipCGa3BXfISLfFZFVCWhnioh8LCKHRaR3vNtTlESiyV1JOCKyU0S+Fm67MeYRY8y1MdT7/0TkAxH5VETeE5GfRygbAP4HuNYY09UYsz/a9kLq6i8iRkQ6xlqHoniNJnfFV7hMkA8CFxhj8oArgf8UkTFhyp4G5ACbXLTnCWKhn0XFU3RAKUlFRCaKyGsiskBEDgC3B9e9GtwuwW17RaReRGpEpLC9uowx/zTGfBay6iTwhXbaPB/4Z/DlQRGpDq6/QEReEJEDIvJPEflWyD7Xicg/gr8KPhCR20Oq/FtIXYdF5AoRuV1Elobs3+LsXkRWi8ivReQ14Ahwroh0F5EHReQjEdktIr8Skaxg+S+IyMvBPtgnIo9F089K5qHJXfEDXwb+BfQFft1q27XAV4HzgR7At4Gwl1BE5KcichjYBXQB/tS6jDFmKzAw+LKHMaZURLoALwTL9wW+A9wjIk3lPgO+F4zhOmCKiPyf4LavhtTV1RizxuFxjwcmAd2A94CHgBNYX0iXBo/9xmDZXwKrgJ5AP+B/HbahZCia3BU/8KEx5n+NMSeMMUdbbWvASn4XAGKM2WyM+ShcRcaYO4LlLwMqgXqHMYwEdhpj/hiM421gGTA2WO9qY8wGY8xJY0wN8ChwTTQH2Q5LjDGbjDEngF7AcOAWY8xnxpi9wAJgXLBsA3AOcIYx5pgx5lWXbStpjiZ3xQ98EG6DMaYaWAT8DvhYRB4QkbxIlRmLfwBHgXKHMZwDfFlEDjYtwHeBfwMQkS+LyEsiUici9cBkoI/DusMRetznAAHgo5D278f6FQHw34AAb4rIJhH5vy7bVtIcTe6KH4hoTWqMudsYMxjrUsr5wE8c1tsRKHBY9gPgZWNMj5ClqzFmSnD7n4CngbOMMd2B+7CSbbj4PwNyQ17/WztlQvf7ADgO9AlpP88YMxDAGLPHGPMDY8wZwE1Yl4za3E9QlCY0uSu+RkQuD541B7AS5jGgsZ1yHUTkJhHpGbwJ+yVgGvCiw6aeAc4XkfEiEggul4vIhcHt3YADxphjwbr/M2TfOqybt+eGrFsPfFVEzhaR7sCsSI0HLzWtAuaLSF7weApE5Jrg8d0gIv2CxT/B+mJo0w+K0oQmd8Xv5AG/x0po72HdTL0zTNnRQC1wCFiKddPR0Y1HY8whrBuY44APgT3APCA7WGQqUCEih4DZwF9C9j2CdSP4teAllSHGmBeAx4AaYB3Wl4cd3wM6Ae8Gj7cKOD247XLgjeDN4qeB6caYHU6OTclMRB/WoSiKkn7ombuiKEoaosldURQlDdHkriiKkoZoclcURUlDkuZi16dPH9O/f/9kNa8oipKSrFu3bp8xJt+unOPkHjQwWgvsNsaMbLVtIvBbYHdw1SJjzOJI9fXv35+1a9c6bV5RFEUBROQ9J+WiOXOfDmzG0h23x2PGmB9GUZ+iKIoSJxxdcw/OjLsOiHg2riiKovgDpzdU78IyLjoZocw3g17bVSJyVnsFRGSSiKwVkbV1dXXRxqooiqI4xDa5i8hIYK8xZl2EYiuA/saYIuCvWL7UbTDGPGCMKTbGFOfn294PUBRFUWLEyZn7VcAoEdkJ/BkoDX3CDIAxZr8x5njw5e+BwZ5GqSiKokSFbXI3xswyxvQzxvTHMlWqNsaUhZYRkdNDXo7CuvGqKM6orYWpUyEvDzp0sP6fOtVaryhKTMQ8iUlEKkRkVPDlzcEHCLwD3AxM9CI4JQNYuRKKimDxYjh0CIyx/l+82Fq/cmWyI1SUlCRprpDFxcVGde4ZTm2tlcCPHAlfJjcXamqgwOkzNxQlvRGRdcaYYrtyaj+gJI/586GhIXKZhgZYsCAx8ShKGqHJXUkeS5c6S+6VlYmJR1HSCE3uSvI4fNjbcoqiNKPJXUkeXbt6W05RlGY0uSvJo6wMAoHIZQIBGD8+MfEoShqhyV1JHjNmOEvut96amHgUJY3Q5K4kj4ICqKqy5I6tk3wgYK2vqlIZpKLEgCZ3JbkMH27p2CdNajlDddIka/3w4cmOUFFSEp3EpCiKkkLoJCZFUZQMRpO7oihKGqLJXVEUJQ3R5K4oipKGaHJX3KFe7IriSzS5K7GjXuyK4ls0uSuxUVsLY8daXuytnR0bGqz1Y8fqGbyiJAlN7kpsqBe7ovgaTe5KbKgXu6L4Gk3uSmyoF7ui+BpN7kpsqBe7ovgaTe5KbKgXu6L4Gk3u6Uw8Nejqxa4ovkaTe7oSbw26erEriq/R5J6OJEqDrl7siuJbNLmnI4nUoBcUwKJFUF8PjY3W/4sW6Rm7oiQZTe7piGrQFSXj0eSejqgGXVEyHk3u6Yhq0BUl49Hkno6oBl1RMh5N7ulIumnQ1TNeUaJGk3s6kk4adPWMV5SYcJzcRSRLRP4hIs+0sy1bRB4Tke0i8oaI9PcySCUG0kGDrp7xihIz0Zy5Twc2h9n2X8AnxpgvAAuAeW4DUzwg1TXo6hmvKDHjKLmLSD/gOmBxmCLfAB4K/l0FDBMRcR+ektGoXl9RYsbpmftdwH8DJ8NsPxP4AMAYcwKoB3q3LiQik0RkrYisrauriyFcJaNQvb6ixIxtcheRkcBeY8y6SMXaWWfarDDmAWNMsTGmOD8/P4owlYxE9fqKEjNOztyvAkaJyE7gz0CpiCxtVWYXcBaAiHQEugMHPIxTyURUr68oMWOb3I0xs4wx/Ywx/YFxQLUxpqxVsaeBCcG/xwbLtDlzV1KQ6mooLASRU0thobU+3qSbXl9REkjMOncRqRCRUcGXDwK9RWQ78GPgp14EpySZigoYNgw2bWq5ftMma31FRXzbTye9vqIkGEnWCXZxcbFZu3ZtUtpWHFBdbSVwO158EUpL4xtLba0ld6ystG6edu1qXYq59VZN7ErGISLrjDHFtuU0uSvtUljY9ow9XLkNG+Ifj6IogPPkrvYDSvs4SewAGzfGNw5FUWJCk7uiKEoaosldURQlDdHkrrTPwIHOyhUWxjcORVFiQpN7KrN0KfTq1VKD3quXtd4td9/trNzChe7bUr92xad4MTSTNryNMUlZBg8ebBQXlJUZY7mbt7+Ulblvo7w8chvl5e7beO45Y3JzjQkEWtYdCFjrn3vOfRuKEgNeDM14DG9grXGQYzW5pyKVlZGTbtNSWem+rRdfNKawsGW9hYXWerds326N8EjHkJtrlVOUBOLF0IzX8Haa3PWyTCpy883Oyk2f7r6t0lJLxx46Jjds8Gbikvq1Kz7Fi6GZ7OGtk5hSkWis8pP0/joiL896ZJ6TcvX18Y9HUYJ4MTTjNbx1EpPif9SvXfEpXgzNZA9vTe5K8lC/dsWneDE0kz28NbmnIj17OivXq1d843CL+rUrPsWLoZns4a3JPRXxSoPuRIAbT5Gu+rUrPsWLoZn04e1EUhOPRaWQLhk6NLLGaujQyPs7EeAmQoOuOnfFp6jOXZN74nEroHWyf+fOxuTkeC/SDRfPtGnG5OUZ06GD9f+0aapvV5KOF0PT6+HtNLmrFDIVmToVFi+OLKINBGDSJFi0KLb9m+SWkcZHpDYURYkL+rCOdMatgNbp/k5jUQ26oiQM1bmnM24FtF4Ka1WDrii+RJN7KuJWQOulsFY16IriSzS5pyJuBbRO9m+yEI61DUVRkoom9/bwg794pBjcCmid7J+TA9nZsbehKBHww0cs7XEiqYnH4lsppB9014nQoPtF565kHDqs3IHq3GPAD/7i0cTgVkDrZH/VoCse4oePWKqjyT0WpkxpezrRegkErOSWzjEoSpzQ4e0ep8ldde6h+MFf3A8xKEqc0OHtHtW5x0KyDZj9EoOixAkd3olDk3soyTZg9ksMihIndHgnDk3uoSTbgNkvMShKnNDhnTg0uYeSdAPmKGOorobCwlMTjkSs19XVVrlEiIlVsKxEgR8+YhmDk7uu8Vh8qZYxxh8i3LKyyHKCsjJjysvty6gXu+JDdNi4A6+kkEAO8CbwDrAJKG+nzESgDlgfXG60q9e3yd2Y5Gq7X3zx1GjPx5jbMOZhjHk6+P9tGNMnQlJ3urgVE6tgWXGBTp+IHafJ3VYKKSICdDHGHBaRAPAqMN0Y83pImYlAsTHmh05/MfhSCukHCguh8yaYBQwHDJAbsv0IIMBKYC4Qaxe69WJ36ymvKEpMeCaFDH5ZNAmTAsElOeL4TODqTbAa+AbQmZaJneDrzsHtq4GbYmynoQEqK2PcGVi6NHJi96INRVFixtENVRHJEpH1wF7gBWPMG+0U+6aI1IhIlYicFaaeSSKyVkTW1tXVuQg7XbkX5gNdgCybolnBcvOJPcG7EROrYFlRfI2j5G6MaTTGDAL6AV8SkcJWRVYA/Y0xRcBfgYfC1POAMabYGFOcn5/vJu405C3gNithR0NTgh8cQ5NuxMQqWFYUXxOVFNIYcxDrYsDXW63fb4w5Hnz5e2JLNRnOXOBobLvmYF2jjwa3YmIVLCuKr7FN7iKSLyI9gn93Br4GbGlV5vSQl6OAzV4GmXDcarft9Odt2It1hzTGWxlZwAigTxT7OBUThzuWK69MKcFy7YFapj47lby5eXQo70De3DymPjuV2gPO9fh2w0Il/4qvsJPTAEXAP4AaYCMwO7i+AhgV/HsulkzyHeAl4AK7en0rhXQrwrXTn5eXt7PTPGNMjnGgbgq/fIYxM0LaKSqKIY4ojyURWnoPeG7rcyb317kmUBEw3E7zEqgImNxf55rnttrHaTcsystToiuUNAB1hYyB2looKoIjR8KXyc2FmhooKGi7rboahg2zb+fFF6G0NGRFGfBItNG25WFggsOykY4DnB9LZSW8/rr1/+HD1jX28eOtM/ZwdSeQ2gO1FN1XxJGG8O9pbiCXmsk1FPRqP14nw8IOu+5WFKeoK2QszJ/vTN63YEH7226+2Vk706e3WuGRt2mPKMpGOg5wfizz5lk69vp6aGy0/l+0yDdZbP6a+TQ0Rn5PGxobWPB6+L5wMizssOtuRfEaPXMPxa3ZtN0DpUNp0e9JOHOHyKbZMR+Lv8ibm8ehz+3f07zsPOp/2n5fOB0Wtm2oR7niAXrmHgtJ024XYUleXHAE665INGSABv3w586OMVI5r7opA7pb8RGa3ENJmnZ7ovsqhDCzCyKQARr0rp2cHWOkcl51UwZ0t+IjNLmH4la7PXCgs3YKW88B64tlJBPFpZBQGoHngH1R7GOnQY/5WPxFWVEZgQ6R39NAhwDji8L3hZNhYYdK/pVEo8k9FLdm03ff7aydhQvbWTkLyzQmBo5hiVGjwU6D7upY/MOMK2YQyLJJ7lkBbh0Svi+cDAs7EiX5j3qKhZK2aHIPpaAAqqos3VrrT3MgYK2vqgqvBCkthfLyyG2Ul7eSQTZxOXAnbZ3CbPgMmAGsa7W+rCz24wCXx+IfCnoVUHVDFbmB3DZn8IEOAXIDuVTdUBVWBgnOhsXQoZHjGDMm/gKiigpLvbppU8v1mzZZ6ysq4tu+4jOciOHjsfh2EpMx7s2mX3zRmMLClrNZCgut9XZ8XG7MYYw5YdOFJ7DK3RRmglFurtWeW9NsN8fiI7bv326mPTvN5M3NMx3KO5i8uXlm2rPTzPb9zvsi3LCorIw816tpiWeXhT4GIFkxKIkBncSUokydCm8/AD9ptCwFwvm5P4d1Kab1GXsT6qWeMAoL254thyu3YUP6xqAkBqdSSE3ufiNUVN0HS7dehDVB6SCW3PEhnN08VWF1QvDDlAA/xKAkBqfJvWMiglGiIFQMvQ/LzteLuhRFySj0hqrf8FIMrcJqRclYNLn7DSei6iaNWyRUWJ0w/DAlwA8xKP4i/ZK7F6badnXEU0zsRFSdkwPZ2ZHL+MhLPd544dXuBqdTAiZOtB82sQ7faKYluPWlT8RHTPEAJ5KaeCxxkUK69WJ3UkdZWWStmROfdDuceMJ7caxpgBde7V5g95YNHRr/t9SLYWPnS++Fb70OXXfgUAqZPsl9+3ZrZEQa3bm5kTXeTuqIt5g4muNwq8dPcbbv325yf53bIqm3XnJ/nRuVlt0N4aYE3Hmns2GTne1u+EaK4cUXvRve8f6IOTnOTMZpck+fyzJuvdid1uGENn7tURDNcRQU+NpLPd544dXuJaWlloY8NFVt2AB//KOz/Y8fj7zdiSd8uBhKS70b3m5i9OJjqjgjfXTubr3Yo6nDCbH2qxfHkSF44dWeCKLRoNvh5m33cnjbteP2I6bDOzyZ5+fuhRe7H3ThSfOUTz288GpPNdy87YkaMl58xHR4uyd9JjF17erslCCS9ttpHfHEi+PIELp26urozN2pp3sq4OZtDx1a+fl7mTBhCUVFNfToUc/Bg92pqSliyZLvs29fftxi1OGdONLnzN2tF7vTOpzgRkzsxXFkCF54tScCpxp0O9y+7WVlMGTIWyxbNob33juH8vI5jB//CNdf/wzjxz9CefntvP/+2SxbNobi4rfiEqMO7wTi5K5rPJa0VstUVhozZYox3boZI2L9P2VKy7YrK43p2bPlfj17WtIKlRM4wm9qmXA4dWz0Qi0TblhVVhrz8cf3mMOHc82JE2IifTxPnBBz+HCuuemme1Qt40PIOCmkMd4IaN0KlsvK7GOw08oPHapCYIf4Reduh91bXlbmfvhGauOmm+4xx47lmmg+pu0l+KIi1bknm8xM7sa40347Pa2orGxfTFxZab9/p06Rtzctd96Z0Rr2aPDCqz2eJGLqQiRP+eLiN83hw9El9tAEP3jwW54PzQyfouGKzE3ubpgype3pROslELBGYaz7O1169UrssStxw+2wckLrSzGhy7Jlo20vxYRbTpwQU1U1Roemj3Ca3NNH5+4FbkW4XguJk/TeKN6SCG13OC19fv5e3nvvHDp3PhZbxcDRozmcffb7LVQ0OjSTR+bp3L3ArQhXxblKOyRT2z1hwhLXidgYYcKEJZ7EoyQOTe6hOBXXhiun4lylHdwOKzcUFdWQmxv7WTtAbu5Rior02Xyphib3UNyKcL3SyQP06uVNPUrSSYS2u2fP9tf36OHNHP4ePT5p/luHZmqQesk9nmbTTrzUI/mkO9m/Uyf7OAB+9jNfGF679Uqv3lFN4T2FSLk0L4X3FFK945SJuR/acFJHrEQzrJYutZJnqOd7r17Wegg/vH/+8/brPXiwu+v4rXpOfXssXGhfPhGe8F6QKnHGQmrdUF25EsaOtWzjQq3lAgFrmTkT5s0Lv72qCoYPd9eGXR3jx5/6JLZHWRns3g0vvRS+TFERbN/u7jg8YOW2lYx9fCwNjQ00nDwVR6BDgEBWgKobqhh+Xvg4Kl6uYM7qOWG3l5eUc/kZlye9jTEXjGHphvDvWXlJObOvmR12uxOcDKs//Sny0Bk6FN54I3wdffvCzp0t97nttv9HefkcV5dmjhzpzOzZ5cyf/xPKyqCyMnL5RHxMvSBV4myN0xuqtsldRHKAvwHZWF40VcaYOa3KZAMPA4OB/cC3jTE7I9UbdXKvrbWS3pEjzvdpTW4u1NTYW+LW1lqeo5WV1l2url2tpH3rrZH3ra6GYcPs4+jUCT7/PLrYQ3F6HC6oPVBL0X1FHGkI39+5gVxqJtdQ0KttHNU7qhn2sH1f5GTlcKwxfOLxoo3srGyON9r46drw4vdepHRAqas6Ig2rNWviM+XeK7XMJZe8z+zZ+ZSVRS6byI+pG1IlzvbwUi1zHCg1xlwCDAK+LiJDWpX5L+ATY8wXgAXAvGgDtsULM2qnRtGx+qTffLOzONwkdkiI4bVbr/SbVzrri0iJ3as23CZ2gOnPu/DoDxJpWDkdOtFSV9eXlSuH09gYq++w0LnzCLZutU/skNiPqRtSJU43RHVZRkRygVeBKcaYN0LW/3/A7caYNSLSEdgD5JsIlUd95u6VhjyeRtFeGnfbEWfDa7de6VLuXV8kog0nmDnxu4QZz6FTXPwWq1eX0KVLLKepucDLgO2JIpAaH9Om+lMhzvbwVOcuIlkish7YC7wQmtiDnAl8AGCMOQHUA73bqWeSiKwVkbV1dXVOmj6FVyLgdNGix/k4/OSVnk5+7Mlg7drLmTHjTj77LDfKPXOBO3Ga2CF1PqapEqcbHCV3Y0yjMWYQ0A/4koi09rRt77yjzWmOMeYBY0yxMaY4Pz9Kz2ivRMDpokWP83E49UBPhFd6OvmxJ4v775/SnODtLtFY25sS+5So2kmVj2mqxOmGqKSQxpiDwGrg66027QLOAghelukOHPAgvlN4oSGPt1G0V8bddiTA8NqtV/rAfG/6IhFtOKGwrwuPfgeE06l7yf33T+Gaa17mySdHc/RoDkeOdG6x/ciRzhw9msOGDaOxLsVEl9ghNT6mkDpxusE2uYtIvoj0CP7dGfgasKVVsaeBCcG/xwLVka63x4QTsbAdkTTqXnD33c7KOdW6hyPexwHMuGIGgSyb5J4V4NYh7cdx93BnfZGTlRP3NrKzsh2Vi8TCry+01cq70Uw7HTpu2bixmLFjl3H22e8ze3Y5Dz88nqefHsnDD49n9uxyLrjgfbp1W0Y0l2JC8fJjGk+NeSqkE7c4OXM/HXhJRGqAt7CuuT8jIhUiMipY5kGgt4hsB34M/NTzSAsKLGFpbm7bdyUQsNbb3c6fOTO+uqXSUigvj1ymvByefDLycZSXR95eVRV3/VVBrwKqbqgiN5Db5gw+0CFAbiCXqhuq2pUoApQOKKXs4sjvR9nFZcz6yqyIZWZeNTNiG+Ulkfu7vKScn33lZxHLFPUtso3z+InjFN1XxOK3F3Po80MYDIc+P8TitxdTdF8RFY+upKgIFi+2btQZY/2/eLEluauoIOL23r3th29R5DAZOjTy9vJyeOIJawjV1+czf/5PmDDhYb7xjRXceOPD3HvvT7jvvnxXQ8vJx9TJ8N66NXJ/rVwZe4xexploGWQ0pNYkJggvFh4zBq6/PrJwNVHC1OpqmD4dNm48ta6w0JraV1oa+TiatPSxau09pvZALQteX0BlTSWHPz9M105dGV80nluH3Bo26TbtZ6eTz+mYgyAcPXE0bJlIOvcmqndUM/356Wzce6q/C/sWsvDrCzmn+zm2cdjhJE4+z4V7a+CT2N6bpqG5Zo01dA6EXNTs1cuasDx7tv3wvv9+a+KNm6HnBW6GN9hr0L36KKfIx7AFnk1iiheeW/5OnWp9rUcSrwYCMGmSJS5W4srUZ6ey+O3FLWaEtkaC9+FN23vvzQQ6BJg0eBKLRsT2njmJww4ncdIYgHWT4LnY4rQbmpk0vDPpWGMh85J7IkyzFcc41ck7qiuMzj3RcdhyLA/uiH1sRRqamTS8M+lYYyHz/NyTaZqttMFLbbqbuhKqke/krq1IQzOThncmHWs8SZ/knkzTbKUNXmrT3dSVUI385+7aijQ0M2l4Z9KxxpP0Se6JMM1WHONEJy/Bf5GIpHP3Kg47nMRJYwBqYo/Tbmhm0vDOpGONJ+mT3N16sSue4kQnn90xm5yO9jr3MReOidnv3UkcdjiJk8YAvDsGRkyFn+bBnA7W/yOmQk/7OO203WPHeje8/e5R7vSjPGZM/I/D730VifS5oQruvdgVT3Hitb5t/7aIXupD+w/ljd1vxOz3Dva+9F8+88u8tDO8v37ZxWWc1/u8iMcytHcZL320HLIarKWJxgA0Bij6ZxU1y8LHWVYG//mf/n9cQaLwg9e6X/sq89QyTfhRmJqBONK523i5O8GJDr4pnvb0+kP6DWH8E/a/713H6kAHb2fzn5sLK1bA8uWxDW8nHubJ8ihvj2ROafFzX2Vucld8gRf6cie41cEX3lPIprpNHkfVDi518OBe250u+vFEHIef+0qTu5JUvNCX5+fChEFQ1Bd65MDBY1CzF5ash30hZ1RudPAJ9YR3qYMHd9rudNGPJ+I4/NxXTpN7x0QEo2QebvTlxWfArKth+Bcs3+jckJtrRxqgogRWboe5r8LaD1PI792lDh7cabvTRT+eiONIh75KH7WM4iti1ZffNBhWT4BvfBE6B1omdrBedw5Y21dPsMqnjN+7Sx08uNN2p4t+PBHHkQ59pcldiQux6MtvGgzzr4UunSDLZmRmdbDKzb8W7h95acxxJswT3qUOHtxru9NFP56I40iHvtJr7mlM7YFa5q+Zz9Kapc0KkbKiMmZcMcNWXeJF29GoZYrPsM7Eu8RgdX/S5NBBXiGSB3m4vrjyrCtTSi2TrgqQaEjEcfi5rzLPW0ZpwcptKyP6j6/c5tIQ24aCXgXMvGpmxDKzvjKr2Y991tWQE+MdoA5yHJgbdnukvrjpmZtsfefLS8pZ/u3lEb3t7eooOjQzYmIvK7O3+XfrH+7Ew9zvHuWQmONIh77SM/c0xMlZs1N9eCJi+PDQer505g1kd3QzFnOA94GWz+Z1Gsf9I+9n3mvz2vWELx1Q2lxXe1r5MReO4fpHr4/sGW9z5t50FgjJ91pPFfzgS58MVAqZwTjRmLvVh3sbw9nAHMDNhKbOQDnwExdxxNEz3kbnngr6csUf6GWZDGZpzVLbyUMNJxuorKn0SQw1uEvsAEeBDS7jiA0nbZDVAEXh22hosM4OFcUrNLmnIU513/HUh0cXg1ezQD5xGUdsON7XRufuZ820knpock9DnOq+46kPjy6G7h612tNlHLHheF8bnbufNdNK6qEzVNOQsqIyR9eZ3fikexvD2cAy3F9zv9hlHLHhpA07nbvfNdOx0NDQwK43CSejAAAZmUlEQVRduzh2zO0lt8wkJyeHfv36EbAT3IdBb6imIYlUy4TTj4+9aKytgqQphizZz5l5VxLIanQRiTu1zIrvrKDq3aqY5gQ4acOpWiaV1Cp27Nixg27dutG7d29EEujh4yHHjsHHH8P+/XDypOXp3rs3nHYa5NhY/LvBGMP+/fs5dOgQAwYMaLFNb6hmMAW9Cqi6oSqiLrvqhirXiT2Sfvz6R69n5lUzbWPYun8rA+8dyrPbTtJ4MtZIBBhB68QOzvpi5lUzuf7R62OeE+CkjfLCKnKPF6SsZjoWjh07ltKJvb4e3n0X9u2zEjtY/+/bZ62Pp2GYiNC7d29Xv3o0uacpw88bTs3kGiYNnkRedh4dpAN52XlMGjyJmsk1tg+4sKP2QC1jHx/LkYYjbS5HNJxs4EjDEea9No8V31kRNobze5/fXMevXzEcOxFbLCdNNjAr7PZIfbHiOyuY99q8iMcx9vGxtk99suvv2d8ZTk2NJXcMfarPpEnWGbsfHpARD1I1sR87ZmncT56E1hc3jLHW19Za5eKF277TyzJKTHihH29dR6i3jFM++xxWbL2GcYWrowk/bAztEe85AenK5s2bufDCC50Vrq2F+fNh6dJTs4XKyqxn7iXhJ81771ln6JHSowjk58PZZ8cvjvb6UC/LKHHFC/146zruXwczVlkJ2+4STeNJq9yMVXDTM/+IKvZIMbRHvOcEZDwrV1pGLosXWybqxlj/L15srV8Zu1XGnj17GDduHAUFBVx00UWMGDGCrVu3snPnTgoLC8Put39/+MS+YsUS6uo+xBirXCxs2bKFK664guzsbO68887YKrFBk7sSE17ox9vbdv86uGYJPLkFjjZY/u2hHGmw1j+5xSp3/7rEaNRTxjM+1aittR5UeuRI28ceNTRY68eOjemJ1MYYRo8eTUlJCbW1tbz77rv85je/4eOPP7bd92SEk4tnnrGSO0CjQw3AiRMtrzn26tWLu+++m9tuu81ZBTGgUkglJrp26uroSUuRNODh6lj3EYx9HPrkwoRLoOi0kCcxfQwPvdPySUxuNepuj0Nxwfz5kZ9lB9b2BQui9mZ46aWXCAQCTJ48uXndoEGDANi5c2fzuiVLlrB27VoWBesfOXIko0bdxiWXfIVf/vK/2Lx5LSLCqFH/l9NOO4vNm9fyi198l+zszjz00BrWrXuXH//4xxw+fJg+ffqwZMkSTj/9dEpKSrjyyit57bXXGDVqFDNmzGhus2/fvvTt25dnn302qmOKBk3uSkx4oR+3q2PfEZi/JnIcidCox3tOQEazdKmz5F5ZGXVy37hxI4MHD44prLw82LZtPXV1u3nsMctM7tChg3Tr1oO//GUR06ffycCBxfTo0cD48T/iqaeeIj8/n8cee4yf//zn/OEPfwDg4MGDvPzyyzHF4Ba9LJMkag/UMvXZqeTNzaNDeQfy5uYx9dmptqoMr+uIlRlXzCCQFXlyRSArwJgLx4SN0UkddgSyAtw65NaY93d6HE7aqN5RTeE9hUi5NC+F9xRSvaM65viipbbWerhzqCJn6tSYrmokBp8+z65XL+jX71x27/4Xv/3tj/j735+nS5e8FmVE4ODBf7Jx40b+/d//nUGDBvGrX/2KXbt2NZf59re/ndC4Q9HkngS88FpPBb/2MReMiagf37p/q20dZReXxVWv79WcgIqXKxj28DA21W1qsX5T3SaGPTyMipcrYo7RKXG8Lxk/4vg8u4EDB7Ju3Trbch07duRkyEX2Y8eO0akTXHppT/7853cYPLiExx//Hb/61Y3NZTp0sEQ8nToZBg4cyPr161m/fj0bNmxg1apVzeW6dOkSddxeYZvcReQsEXlJRDaLyCYRmd5OmRIRqReR9cFldnzCTX2c6MPtdNVe1OGW2gO1zHttXsQySzcsjRjjmL+M4Y5X74hYx/ItyyNq5d3q9cH9nIDqHdXMWT0nYpk5q+fE9Qw+jvcl40scn2dXWlrK8ePH+f3vf9+87q233mpzmaR///6sX7+ekydP8sEHH/Dmm28C0NCwj/PPP8m4cd9k2rRfsmXL22RlQc+e3cjPP0T37vDFL36Ruro61qxZE9yngU2bWn7BJwsn19xPADOMMW+LSDdgnYi8YIx5t1W5V4wxI70PMb2Yv2Y+DY020rvGBha8viCsrtqLOtziJAY7jp84blumobGB5ZuXs2jEorjqzAt6FcTcxs0rb3ZUbvrz09kwpa0tsRfE8b5kfJkxAx56KHLwgYD1dIwoERGeeOIJbrnlFu644w5ycnLo378/d911V4tyV111FQMGDODiiy+msLCQyy67DIDdu3fz/e9/v/msfuHCuVx6KUyZMpGbb55M586dWbNmDVVVVdx8883U19dz4sQJbrnlFgYOjPxs3j179lBcXMynn35Khw4duOuuu3j33XfJy8uLuF9Uxx/tJCYReQpYZIx5IWRdCXBbNMk9Uycx5c3Nc6TOyMvOo/6n7c9v9qIOtziNwZO24ngcXiDlzmcSmjnxmTSYl2ddgnFSLp7T5kNxPIlp5UrrZ0VDQ8skHwhYS1VV+k7htSFhk5hEpD9wKfBGO5uvEJF3RGSliLT7tSUik0RkrYisrauri6bptCFe+nA35WIhkbpv1Zjb49P7ks4YPpyM9GaIM46Tu4h0xfJlvcUY82mrzW8D5xhjLgH+F3iyvTqMMQ8YY4qNMcX5+W1NnjIBL/zFU8mvPdXaSlXieF8yMRQUWNeL6uutmUH19dbrdHNTSyCOkruIBLAS+yPGmOWttxtjPjXGHA7+/RwQEJE+nkaaJpQVlbVRZbTGiT7cbR1ucRKDHRL8F4lU0JgPzI98fbWJwr7hp7u7JY73JZUUxYlaRoAHgc3GmP8JU+bfguUQkS8F643RdSG98UJX7aU2O1a80Khnd8wmp2NkU+x4H4cX3D38bkflFn59YdximDHDWXKP4b6kkqI4OXO/ChgPlIZIHUeIyGQRaZrXOxbYKCLvAHcD40yy7CZ9jhN9+MyrZkbUVSfKrz0SBb0KGHPBmIhlhvYfGjHG5d9azrJvLUvqcXhB6YBSykvKI5YpLymndEBp3GIoKLDuO+bmtk3y6ewZr4RHLX8TjJdPSao9UMuC1xdQWVPZ/PSg8UXjuXXIrXFPiNU7qhn28DDbcpWjK3l91+sRY0zmcXhJ9Y5qpj8/nY17NzavK+xbyMKvL4xrYg+lttaSO1ZWnnLOHT/eOmNPdGKPxvLXZ46/vsGNWkaTe4JJF//wwnsK28zGbLdc38K4absVf+M0ucdTCblnzx5uueUW3nrrLbKzs5t17p06dWLkyJFs3LjRvpJWLFmyhGuvvZYzzjgjtqCARx55hHnzrEmAXbt25d577+WSSy5pU0793FOIdPEPd5LYgRZnsYrSmnjOrHVj+RuJJUuW8OGHH0a1T2vL3wEDBvDyyy9TU1PDL37xCyZNmuQqpvbQ5J5g/KBRVxS/EM3M2mgJZ/n7la98pUW5JUuW8MMf/rD59ciRI1m9ejWNjY1MnDiRwsJCLr74YhYsWEBVVRVr167lu9/9LoMGDeLo0aOsW7eOa665hsGDB/Mf//EffPTRRwCUlJTws5/9jGuuuYaFC1veTL/yyivp2bMnAEOGDGlhNuYVavmbYNQ/XFFOEUfHX1eWvwDr169n9+7dzZduDh48SI8ePVi0aBF33nknxcXFNDQ08KMfubP8ffDBBxkeh4lamtwTTLr4hw/MH+j4mruihMPPM2vPPfdc/vWvf/GjH/2I6667jmuvvbZNmX/+85TlL0BjYyOnn35683Y7y9+XXnqJBx98kFdffdXb4MnEyzJJNrz2wgfdD/hB2+03kumvn6rEc2atG8tfgJ49e/LOO+9QUlLC7373O2688cY2+xoTu+VvTU0NN954I0899RS9e/eO5tAckVnJ3QeG10406jOvmhnRBz3eXu1OKB1QStnFZRHLlF1cljAJYLJJtr9+qhLPmbVuLX/37dvHyZMn+eY3v8kvf/lL3n77bQC6devGoaBLW6yWv++//z5jxoyhsrKS888/P/qDc0DmJHcfGV5H8g9f8Z0VzHttXlK92p1Qe6CW5VvaOFG0YPmW5UmPMxH4wV8/VYnnzNomy98XXniBgoICBg4cyO23395Gwhhq+Xvbbbe1sPwtKSlh0KBBTJw4kblz5wIwceJEJk+ezKBBg2hsbKSqqoqZM2dyySWXMGjQIP7+97/bxlZRUcH+/fuZOnUqgwYNorjYVtkY/fFnjM596lTrDN3ON3rSpKQaXqeKDj5V4kwE2hft4wede6qjOncnRHNbPomkig4+VeJMBNoX7lDH3/iQOWoZP9+WD20+RXTwqRJnItC+cE+T46+vnhKV4mTOmXuKGF77wavdy/aTHWci0L5Q/EjmJPcUMbz2g1e7E1IlzkSgfaH4kcxJ7ilieO0Hr3YnpEqcTVTvqKbwnkKkXJqXwnsKqd5R7biOcDr2sReNTam+UDKDzEnuKWJ47QevdiekSpwAFS9XMOzhYW1m1G6q28Swh4dR8XKFbR2RdOzXP3o9M6+amRJ94Vd0Apj3ZE5yh5S5LR9JB18zuYbh52mcTqneUc2c1XMilpmzek7EM3gnOvZ5r81jxXdW+Lov/Eo8J4Dt2bOHcePGUVBQwEUXXcSIESPYunUrO3fupLAwNmuMWFwhW/PUU09RVFTUrHGPh/1A5ujclYzEC9951bHHhhOdu5cPr2mNMYYrr7ySCRMmNDtDrl+/nkOHDnHWWWfF7OdeUlLSbBzmlBMnTtCx4ylx4uHDh+nSpQsiQk1NDd/61rfYsmVLm/1U564oYfDCd1517PFj/pr5NDTa9G1jAwtej97z18+Wv127diX42Gk+++yz5r+9JHN07ooSI6pjjx/RfHFG+6vI75a/TzzxBLNmzWLv3r08++yzMccZDk3uimKDevDHDz9/ccbb8nf06NGMHj2av/3tb/ziF7/gr3/9q6fx62UZJa0ZmD/QUblIvvOqY48f8ZwA5nfL3ya++tWvUltby759+5wclmM0uStpjRe+86mm6U8l4vnF6WfL3+3bt9MkZnn77bf5/PPPPfd01+SupDWlA0opLymPWKa8pDyi73wqafpTjXh+cfrZ8nfZsmUUFhYyaNAgpk2bxmOPPeb5TVWVQioZQfWOaqY/P72FKqawbyELv77Q8QNFag/UsuD1BVTWVHL488N07dSV8UXjuXXIrZrY28Gx5e+2lYx9fCwNjQ0tbq4GOgQIZAWouqEqY+cJuJFCanJXFCUuOE3uoF+c4XCT3FUtoyhK0ino1Y1FI85m0YjrgXqgO3A2kJfcwFIYTe6KoiSRt4C5QJPFwLGQbcuBOcBwYBZweWJDS3H0hqqiKEniXqAEeBIrqR9rtf1ocN2TwXL3JjC21EfP3BVFSQL3ArcB4T1lTmGC5W4Lvp4Sr6DSCj1z9ylqgaqkL2/hPLGH0pTgVYjhBNvkLiJnichLIrJZRDaJyPR2yoiI3C0i20WkRkQui0+4mUE8LVAVJfnMxbrkEgtHg/s7J5ztb7TEavU7e/bsdq0FVq9ezciRI6OuzylOztxPADOMMRcCQ4BpInJRqzLDgfOCyyT04ljMOPEOH/v4WD2DV1KUvVg3T2OVYBvgOaDOWWljGD16NCUlJdTW1vLuu+/ym9/8ho8//jjqliMl98bGxrD7VVRU8LWvfS3q9txim9yNMR8ZY94O/n0I2Ayc2arYN4CHjcXrQA8ROR0lauJpgaooyWeJB3WI43oi2f7+9re/5fLLL6eoqIg5c6wHuuzcuZMLL7yQH/zgBwwcOJBrr72Wo0ePtmv1279/fyoqKrj66qt5/PHHWb9+PUOGDKGoqIjRo0fzySefANaM1qqqKgCef/55LrjgAq6++mqWL1/uQV+EJ6pr7iLSH7gUeKPVpjOBD0Je76LtF4DiAPUOV9KbGtqqYqLlKND+g1VaE872d9WqVWzbto0333yT9evXs27dOv72t78BsG3bNqZNm8amTZvo0aMHy5YtY+zYsRQXF/PII4+wfv16OnfuDEBOTg6vvvoq48aN43vf+x7z5s2jpqaGiy++mPLylrYXx44d4wc/+AErVqzglVdeYc+ePe66wQbHyV1EugLLgFuMMZ+23tzOLm1+d4nIJBFZKyJr6+qc/azKNPxsgaoo7qn3qJ5PXO29atUqVq1axaWXXspll13Gli1b2LZtGwADBgxg0KBBAAwePJidO3eGrafJ0re+vp6DBw9yzTXXADBhwoTmL4smtmzZwoABAzjvvPMQEcrKylwdgx2OpJAiEsBK7I8YY9r7LbELOCvkdT+gzcUpY8wDwANg2Q9EHW0GoN7hSnrT3aN6ejoqNXDgwOZLIqEYY5g1axY33XRTi/U7d+4kOzu7+XVWVhZHj4a/+evE0jeUeDxxKRxO1DICPAhsNsb8T5hiTwPfC6pmhgD1xpiPPIwzY1DvcCW9KQJyXNbRGbjYUclwtr95eXn84Q9/4PBh6xfw7t272bt3b8S6Qq1+W9O9e3d69uzJK6+8AkBlZWXzWXwTF1xwATt27KC21hJDPProo46OIVacnLlfBYwHNojI+uC6n2EZP2CMuQ/r9vUIYDuWGPX73oeaGcy4YgYPvfNQ5Icxq3e4krJMxLIUcIMJ1mNPk+3vLbfcwh133EFOTg79+/fnrrvuokePHlxxxRWA9UzTpUuXkpWVFT7yoNVv586dm/3bQ3nooYeYPHkyR44c4dxzz+WPf/xji+05OTk88MADXHfddfTp04err746pgd0O0VdIX2IWqAq6UB4V8gxWJYCseQeAUZjXSVOf9y4QuoMVR8y/Lzh1EyuYdLgSeRl59FBOpCXncekwZOomVyjiV1JcWZhXVqJhc7B/RU71FvGpxT0KmDRiEVRP/FdUfzP5cCdRG9BkBvcz/akVUHP3BVFiSPhL/tOwUrUubSvpA5FOJXYM8c0zO0lc03uiqLEhZycHPbv32+T4F/GuoaeQ9tLNZ2D60cHy2VWYt+/fz85ObEri/SyjKIocaFfv37s2rWLyBMWuwC/Iivrx3Tv/iTZ2f8kK+sQjY3dOH78i9TX/x8aG3sFy25OQNT+IScnh379+sW8vyZ3RVHiQiAQYMCAAVHscVWbNaed5l08mYZellEURUlDNLkriqKkIZrcFUVR0pCkzVAVkTrgvaQ0foo+wL4kx+AEjdNbNE7vSIUYIb3iPMcYk29XUdKSux8QkbVOpvEmG43TWzRO70iFGCEz49TLMoqiKGmIJndFUZQ0JNOT+wPJDsAhGqe3aJzekQoxQgbGmdHX3BVFUdKVTD9zVxRFSUs0uSuKoqQhGZPcRSRLRP4hIs+0s22iiNSJyPrgcmOSYtwpIhuCMbR5TFXwGbV3i8h2EakRkct8GmeJiNSH9OfsJMXZQ0SqRGSLiGwWkStabU96fzqIMel9KSJfDGl/vYh8KiK3tCrjh750EmfS+zMYx60isklENorIoyKS02p7tog8FuzPN0Skf9SNGGMyYgF+DPwJeKadbROBRT6IcSfQJ8L2EcBKLIPrIcAbPo2zpL1+TkKcDwE3Bv/uBPTwW386iNEXfRkSTxawB2sija/60mGcSe9P4ExgB9A5+PovwMRWZaYC9wX/Hgc8Fm07GXHmLiL9gOuAxcmOxSXfAB42Fq8DPUTk9GQH5UdEJA/4KvAggDHmc2PMwVbFktqfDmP0G8OAWmNM69nlfhub4eL0Cx2BziLSEetJJB+22v4NrC9+gCpgmIjYPdWkBRmR3IG7gP8GTkYo883gz8kqETkrQXG1xgCrRGSdiExqZ/uZwAchr3cF1yUauzgBrhCRd0RkpYgMTGRwQc4F6oA/Bi/HLRaRLq3KJLs/ncQIye/LUMYBj7azPtl92ZpwcUKS+9MYsxvrsVLvAx8B9caYVa2KNfenMeYEUA/0jqadtE/uIjIS2GuMWReh2AqgvzGmCPgrp74xE81VxpjLgOHANBH5aqvt7X1zJ0PLahfn21g/hy8B/hfrUfeJpiNwGXCvMeZS4DPgp63KJLs/ncToh74EQEQ6AaOAx9vb3M66pOisbeJMen+KSE+sM/MBwBlAFxEpa12snV2j6s+0T+5YTwAYJSI7gT8DpSKyNLSAMWa/MeZ48OXvgcGJDbE5jg+D/+8FngC+1KrILiD0V0U/2v6cizt2cRpjPjXGHA7+/RwQEJE+CQ5zF7DLGPNG8HUVViJtXSaZ/Wkbo0/6sonhwNvGmI/b2ZbsvgwlbJw+6c+vATuMMXXGmAZgOXBlqzLN/Rm8dNMdOBBNI2mf3I0xs4wx/Ywx/bF+qlUbY1p8S7a6NjiKJDzPS0S6iEi3pr+Ba4GNrYo9DXwvqEwYgvVz7iO/xSki/9Z0fVBEvoQ1zvYnMk5jzB7gAxH5YnDVMODdVsWS2p9OYvRDX4bwHcJf6kj62AwhbJw+6c/3gSEikhuMZRhtc87TwITg32Ox8lZUZ+4Z+5g9EakA1hpjngZuFpFRwAmsb8eJSQjpNOCJ4LjrCPzJGPO8iEwGMMbcBzyHpUrYDhwBvu/TOMcCU0TkBHAUGBftwPSIHwGPBH+m/wv4vg/70y5GX/SliOQC/w7cFLLOb33pJM6k96cx5g0RqcK6RHQC+AfwQKuc9CBQKSLbsXLSuGjbUfsBRVGUNCTtL8soiqJkIprcFUVR0hBN7oqiKGmIJndFUZQ0RJO7oihKGqLJXVEUJQ3R5K4oipKG/P/o4UDp4NmhhQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(X[y_kmeans==0, 0], X[y_kmeans==0, 1], s=100, c='red', label='Cluster 1')\n",
"plt.scatter(X[y_kmeans==1, 0], X[y_kmeans==1, 1], s=100, c='blue', label='Cluster 2')\n",
"plt.scatter(X[y_kmeans==2, 0], X[y_kmeans==2, 1], s=100, c='green', label='Cluster 3')\n",
"plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=300, c='yellow', label='Centroid')\n",
"plt.title(\"Iris 3 features\")\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"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.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment