blob: 859cde2655d38b430ca807b22ec10c3dd77a916b [file] [log] [blame]
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Support vector machines\n",
"A demo of SVM binary classification with decision boundary plots\n",
"\n",
"# 1. Set up"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%load_ext sql"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# Greenplum Database 5.x on GCP (PM demo machine) - via tunnel\n",
"#%sql postgresql://gpadmin@localhost:8000/madlib\n",
" \n",
"# PostgreSQL local\n",
"%sql postgresql://fmcquillan@localhost:5432/madlib"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# Setup\n",
"%matplotlib inline\n",
"\n",
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib.font_manager"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 2. Load data\n",
"\n",
"Load training data"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Done.\n",
"Done.\n",
"200 rows affected.\n",
"200 rows affected.\n"
]
},
{
"data": {
"text/html": [
"<table>\n",
" <tr>\n",
" <th>id</th>\n",
" <th>x1_norm</th>\n",
" <th>x2_norm</th>\n",
" <th>y</th>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>3.477688657</td>\n",
" <td>2.054082153</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>2.644432412</td>\n",
" <td>1.272159848</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>0.927769315</td>\n",
" <td>1.849131414</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>0.810142643</td>\n",
" <td>3.537996181</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>5</td>\n",
" <td>2.946652954</td>\n",
" <td>3.132353862</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>6</td>\n",
" <td>1.59404894</td>\n",
" <td>0.989443564</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>7</td>\n",
" <td>3.763338981</td>\n",
" <td>2.588286506</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>8</td>\n",
" <td>2.731513537</td>\n",
" <td>2.920290083</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>9</td>\n",
" <td>3.142547623</td>\n",
" <td>2.312193139</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>10</td>\n",
" <td>2.714237335</td>\n",
" <td>3.692208617</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>11</td>\n",
" <td>3.297346703</td>\n",
" <td>2.722493452</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>12</td>\n",
" <td>3.116130322</td>\n",
" <td>1.28700348</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>13</td>\n",
" <td>3.46984971</td>\n",
" <td>2.988072281</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>14</td>\n",
" <td>-0.299521275</td>\n",
" <td>2.902893717</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>15</td>\n",
" <td>3.006241263</td>\n",
" <td>0.880845444</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>16</td>\n",
" <td>3.740430116</td>\n",
" <td>2.80308735</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>17</td>\n",
" <td>2.40970111</td>\n",
" <td>-0.192345242</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>18</td>\n",
" <td>2.077964052</td>\n",
" <td>2.120789868</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>19</td>\n",
" <td>2.92207981</td>\n",
" <td>3.078177955</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>20</td>\n",
" <td>1.779338785</td>\n",
" <td>2.879800254</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>21</td>\n",
" <td>1.901626901</td>\n",
" <td>2.013656864</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>22</td>\n",
" <td>3.525453741</td>\n",
" <td>1.826728367</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>23</td>\n",
" <td>0.490535854</td>\n",
" <td>3.197085444</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>24</td>\n",
" <td>2.435042897</td>\n",
" <td>1.931344024</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>25</td>\n",
" <td>0.741998751</td>\n",
" <td>2.828085351</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>26</td>\n",
" <td>1.401392713</td>\n",
" <td>1.391890011</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>27</td>\n",
" <td>4.171946842</td>\n",
" <td>2.055829176</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>28</td>\n",
" <td>1.161087889</td>\n",
" <td>2.982529965</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>29</td>\n",
" <td>2.853653721</td>\n",
" <td>3.34192252</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>30</td>\n",
" <td>1.644632588</td>\n",
" <td>2.456675004</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>31</td>\n",
" <td>2.291755033</td>\n",
" <td>3.206261556</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>32</td>\n",
" <td>2.795122657</td>\n",
" <td>4.620035751</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>33</td>\n",
" <td>3.784713573</td>\n",
" <td>3.6309499</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>34</td>\n",
" <td>0.974690376</td>\n",
" <td>1.241216167</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>35</td>\n",
" <td>4.41875231</td>\n",
" <td>2.522626571</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>36</td>\n",
" <td>3.242334647</td>\n",
" <td>4.318492225</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>37</td>\n",
" <td>1.060151899</td>\n",
" <td>2.833976874</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>38</td>\n",
" <td>1.562117578</td>\n",
" <td>2.46476821</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>39</td>\n",
" <td>2.718235791</td>\n",
" <td>2.163003839</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>40</td>\n",
" <td>2.178388781</td>\n",
" <td>5.023306377</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>41</td>\n",
" <td>3.03131449</td>\n",
" <td>2.009054749</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>42</td>\n",
" <td>1.240793357</td>\n",
" <td>2.760141668</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>43</td>\n",
" <td>1.546778023</td>\n",
" <td>2.128465476</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>44</td>\n",
" <td>3.423005981</td>\n",
" <td>0.611706303</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>45</td>\n",
" <td>3.629663147</td>\n",
" <td>2.412814752</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>46</td>\n",
" <td>2.487767954</td>\n",
" <td>2.94231289</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>47</td>\n",
" <td>3.423436912</td>\n",
" <td>1.797658236</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>48</td>\n",
" <td>3.064236652</td>\n",
" <td>0.404234497</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>49</td>\n",
" <td>3.058644245</td>\n",
" <td>1.636083927</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>50</td>\n",
" <td>0.415225546</td>\n",
" <td>2.160140347</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>51</td>\n",
" <td>2.552604306</td>\n",
" <td>1.918171296</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>52</td>\n",
" <td>5.391811096</td>\n",
" <td>2.552046296</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>53</td>\n",
" <td>2.879517904</td>\n",
" <td>2.074448502</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>54</td>\n",
" <td>2.748929771</td>\n",
" <td>3.066583653</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>55</td>\n",
" <td>2.543635935</td>\n",
" <td>0.524322093</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>56</td>\n",
" <td>2.733866036</td>\n",
" <td>2.919625115</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>57</td>\n",
" <td>4.336261393</td>\n",
" <td>2.899632049</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>58</td>\n",
" <td>2.990783023</td>\n",
" <td>4.525673805</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>59</td>\n",
" <td>2.531742302</td>\n",
" <td>1.288730212</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>60</td>\n",
" <td>2.993536446</td>\n",
" <td>1.002837141</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>61</td>\n",
" <td>1.302279861</td>\n",
" <td>1.870369825</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>62</td>\n",
" <td>2.167820933</td>\n",
" <td>3.648228563</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>63</td>\n",
" <td>1.453467339</td>\n",
" <td>2.863323655</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>64</td>\n",
" <td>1.511763543</td>\n",
" <td>2.842528064</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>65</td>\n",
" <td>1.511118326</td>\n",
" <td>1.030994711</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>66</td>\n",
" <td>1.618494797</td>\n",
" <td>2.384012858</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>67</td>\n",
" <td>3.940985564</td>\n",
" <td>2.077331763</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>68</td>\n",
" <td>2.601436431</td>\n",
" <td>2.151835537</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>69</td>\n",
" <td>3.66157718</td>\n",
" <td>1.514418126</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>70</td>\n",
" <td>2.120969898</td>\n",
" <td>2.082663855</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>71</td>\n",
" <td>3.294133361</td>\n",
" <td>1.274548786</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>72</td>\n",
" <td>2.338613807</td>\n",
" <td>1.947608563</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>73</td>\n",
" <td>2.192637233</td>\n",
" <td>4.385988816</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>74</td>\n",
" <td>1.37939325</td>\n",
" <td>0.949810181</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>75</td>\n",
" <td>2.482126156</td>\n",
" <td>1.967472078</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>76</td>\n",
" <td>1.878088637</td>\n",
" <td>3.726757865</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>77</td>\n",
" <td>3.267084097</td>\n",
" <td>4.062067833</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>78</td>\n",
" <td>4.348503839</td>\n",
" <td>2.237661811</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>79</td>\n",
" <td>1.89153725</td>\n",
" <td>4.458937202</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>80</td>\n",
" <td>1.40019227</td>\n",
" <td>1.475923076</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>81</td>\n",
" <td>1.625840824</td>\n",
" <td>3.048601416</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>82</td>\n",
" <td>0.634228588</td>\n",
" <td>3.241144904</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>83</td>\n",
" <td>2.793959074</td>\n",
" <td>2.906634367</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>84</td>\n",
" <td>2.248293485</td>\n",
" <td>1.861318815</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>85</td>\n",
" <td>2.2226924</td>\n",
" <td>2.602626132</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>86</td>\n",
" <td>3.239712943</td>\n",
" <td>3.651909477</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>87</td>\n",
" <td>2.486779376</td>\n",
" <td>1.122974349</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>88</td>\n",
" <td>2.610069549</td>\n",
" <td>4.142732999</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>89</td>\n",
" <td>2.232032377</td>\n",
" <td>3.891029136</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>90</td>\n",
" <td>0.671535554</td>\n",
" <td>1.619295522</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>91</td>\n",
" <td>3.56843064</td>\n",
" <td>2.870676431</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>92</td>\n",
" <td>2.957970834</td>\n",
" <td>0.674673372</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>93</td>\n",
" <td>3.303146839</td>\n",
" <td>2.635752004</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>94</td>\n",
" <td>2.130611562</td>\n",
" <td>1.799856373</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>95</td>\n",
" <td>1.32647937</td>\n",
" <td>3.961083872</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>96</td>\n",
" <td>3.460740149</td>\n",
" <td>2.895561311</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>97</td>\n",
" <td>3.991832728</td>\n",
" <td>2.143705164</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>98</td>\n",
" <td>2.885955866</td>\n",
" <td>1.361046223</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>99</td>\n",
" <td>3.259746582</td>\n",
" <td>1.558551411</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>100</td>\n",
" <td>2.483309827</td>\n",
" <td>1.632641264</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>101</td>\n",
" <td>-4.213381351</td>\n",
" <td>-2.900623373</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>102</td>\n",
" <td>-3.596574078</td>\n",
" <td>-2.399679083</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>103</td>\n",
" <td>-1.769713825</td>\n",
" <td>-2.911536282</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>104</td>\n",
" <td>-2.221528889</td>\n",
" <td>-0.937831145</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>105</td>\n",
" <td>-3.660889941</td>\n",
" <td>-4.250095097</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>106</td>\n",
" <td>-2.836792864</td>\n",
" <td>-0.567553257</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>107</td>\n",
" <td>-1.551447729</td>\n",
" <td>-0.917435201</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>108</td>\n",
" <td>-2.839660226</td>\n",
" <td>-2.562009211</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>109</td>\n",
" <td>-0.271123757</td>\n",
" <td>-2.139845405</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>110</td>\n",
" <td>-1.67752756</td>\n",
" <td>-2.817099446</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>111</td>\n",
" <td>-1.990709823</td>\n",
" <td>-3.384842756</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>112</td>\n",
" <td>-1.980548006</td>\n",
" <td>-3.081970268</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>113</td>\n",
" <td>-2.890542485</td>\n",
" <td>-2.913015063</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>114</td>\n",
" <td>-1.719362906</td>\n",
" <td>-2.698999554</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>115</td>\n",
" <td>-1.179134005</td>\n",
" <td>-3.113842051</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>116</td>\n",
" <td>-0.31589445</td>\n",
" <td>-3.486864213</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>117</td>\n",
" <td>-1.225029419</td>\n",
" <td>-4.054172114</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>118</td>\n",
" <td>-0.775855112</td>\n",
" <td>-4.798714411</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>119</td>\n",
" <td>-1.594178086</td>\n",
" <td>-2.941142304</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>120</td>\n",
" <td>-2.042977212</td>\n",
" <td>-2.933130133</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>121</td>\n",
" <td>-4.691983303</td>\n",
" <td>-2.111173512</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>122</td>\n",
" <td>-2.215532819</td>\n",
" <td>-2.647239265</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>123</td>\n",
" <td>-3.473353314</td>\n",
" <td>-0.949728515</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>124</td>\n",
" <td>-2.024310476</td>\n",
" <td>-3.291014402</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>125</td>\n",
" <td>-2.377147514</td>\n",
" <td>-1.872579721</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>126</td>\n",
" <td>-1.669438317</td>\n",
" <td>-2.836688653</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>127</td>\n",
" <td>-2.603734147</td>\n",
" <td>-0.617959122</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>128</td>\n",
" <td>-1.487351993</td>\n",
" <td>-3.072354694</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>129</td>\n",
" <td>-1.272323639</td>\n",
" <td>-3.748055201</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>130</td>\n",
" <td>-2.723251986</td>\n",
" <td>-1.755721612</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>131</td>\n",
" <td>-3.587873685</td>\n",
" <td>-2.785118842</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>132</td>\n",
" <td>-0.883282566</td>\n",
" <td>-2.791948353</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>133</td>\n",
" <td>-1.964424203</td>\n",
" <td>-2.690516863</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>134</td>\n",
" <td>-3.059411934</td>\n",
" <td>-1.811419461</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>135</td>\n",
" <td>-1.893925178</td>\n",
" <td>-2.994277815</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>136</td>\n",
" <td>-3.093000881</td>\n",
" <td>-1.826091978</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>137</td>\n",
" <td>-3.953156735</td>\n",
" <td>-4.44330023</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>138</td>\n",
" <td>-1.842918398</td>\n",
" <td>-2.06192018</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>139</td>\n",
" <td>-3.215679278</td>\n",
" <td>-3.042618882</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>140</td>\n",
" <td>-2.81353762</td>\n",
" <td>-2.830866664</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>141</td>\n",
" <td>-5.264478475</td>\n",
" <td>-1.807066297</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>142</td>\n",
" <td>-2.258918952</td>\n",
" <td>-1.832503553</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>143</td>\n",
" <td>-0.516154749</td>\n",
" <td>-1.263799453</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>144</td>\n",
" <td>-2.594099029</td>\n",
" <td>-4.712126893</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>145</td>\n",
" <td>-2.431227839</td>\n",
" <td>-3.852530459</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>146</td>\n",
" <td>-3.198092122</td>\n",
" <td>-4.56994428</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>147</td>\n",
" <td>-1.907192352</td>\n",
" <td>-3.565506078</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>148</td>\n",
" <td>-2.414464255</td>\n",
" <td>-0.226651715</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>149</td>\n",
" <td>-3.392614469</td>\n",
" <td>-2.088505119</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>150</td>\n",
" <td>-2.949470639</td>\n",
" <td>-3.130261936</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>151</td>\n",
" <td>1.423851782</td>\n",
" <td>0.425685042</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>152</td>\n",
" <td>-1.275510857</td>\n",
" <td>0.666652654</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>153</td>\n",
" <td>0.125735799</td>\n",
" <td>-1.209277913</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>154</td>\n",
" <td>-0.092881052</td>\n",
" <td>-0.730732398</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>155</td>\n",
" <td>0.322701118</td>\n",
" <td>-1.850123428</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>156</td>\n",
" <td>-0.178767017</td>\n",
" <td>1.25698062</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>157</td>\n",
" <td>0.19723042</td>\n",
" <td>2.0465566</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>158</td>\n",
" <td>0.005282715</td>\n",
" <td>-2.059768647</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>159</td>\n",
" <td>0.910788477</td>\n",
" <td>0.598477996</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>160</td>\n",
" <td>-0.773430717</td>\n",
" <td>1.147038948</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>161</td>\n",
" <td>1.773401623</td>\n",
" <td>1.284216146</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>162</td>\n",
" <td>1.502500866</td>\n",
" <td>-1.223375612</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>163</td>\n",
" <td>-0.501311924</td>\n",
" <td>-0.440490759</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>164</td>\n",
" <td>-0.834755065</td>\n",
" <td>-0.8186158</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>165</td>\n",
" <td>-0.250178435</td>\n",
" <td>-0.218692894</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>166</td>\n",
" <td>-1.257613288</td>\n",
" <td>-0.41308356</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>167</td>\n",
" <td>0.941070819</td>\n",
" <td>-0.540142468</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>168</td>\n",
" <td>-0.698602136</td>\n",
" <td>-1.22077356</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>169</td>\n",
" <td>0.124262074</td>\n",
" <td>0.079382121</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>170</td>\n",
" <td>-0.569170722</td>\n",
" <td>-1.681698232</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>171</td>\n",
" <td>-0.892885579</td>\n",
" <td>0.451077538</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>172</td>\n",
" <td>0.101802076</td>\n",
" <td>-0.83620399</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>173</td>\n",
" <td>-0.473321762</td>\n",
" <td>0.246196156</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>174</td>\n",
" <td>-0.325040499</td>\n",
" <td>-0.429683581</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>175</td>\n",
" <td>1.545869155</td>\n",
" <td>-0.622612864</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>176</td>\n",
" <td>0.686238366</td>\n",
" <td>-0.493025895</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>177</td>\n",
" <td>0.365612386</td>\n",
" <td>-1.660420309</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>178</td>\n",
" <td>-0.879435071</td>\n",
" <td>-0.523046756</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>179</td>\n",
" <td>-1.256420076</td>\n",
" <td>-0.185672564</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>180</td>\n",
" <td>0.169493316</td>\n",
" <td>0.5178859</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>181</td>\n",
" <td>-0.958280935</td>\n",
" <td>-0.514351478</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>182</td>\n",
" <td>0.75208944</td>\n",
" <td>-0.478467004</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>183</td>\n",
" <td>-1.273005887</td>\n",
" <td>-1.382281404</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>184</td>\n",
" <td>-1.676742007</td>\n",
" <td>-0.18294616</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>185</td>\n",
" <td>1.458854642</td>\n",
" <td>-1.463275405</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>186</td>\n",
" <td>0.030502061</td>\n",
" <td>-0.031380713</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>187</td>\n",
" <td>0.691101797</td>\n",
" <td>-0.327078622</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>188</td>\n",
" <td>0.967384974</td>\n",
" <td>0.212910418</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>189</td>\n",
" <td>-0.781569801</td>\n",
" <td>-0.156304279</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>190</td>\n",
" <td>-0.15064646</td>\n",
" <td>-0.757864836</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>191</td>\n",
" <td>-0.429420958</td>\n",
" <td>0.738464034</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>192</td>\n",
" <td>0.163354473</td>\n",
" <td>-0.923980377</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>193</td>\n",
" <td>-0.555645057</td>\n",
" <td>0.630094151</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>194</td>\n",
" <td>-0.056850435</td>\n",
" <td>0.187970078</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>195</td>\n",
" <td>0.530485714</td>\n",
" <td>1.911034018</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>196</td>\n",
" <td>0.249602752</td>\n",
" <td>1.205077158</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>197</td>\n",
" <td>-1.111697529</td>\n",
" <td>1.916493579</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>198</td>\n",
" <td>0.713042239</td>\n",
" <td>0.5819636</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>199</td>\n",
" <td>-0.372663212</td>\n",
" <td>2.01479565</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>200</td>\n",
" <td>1.340973515</td>\n",
" <td>-0.527066068</td>\n",
" <td>1</td>\n",
" </tr>\n",
"</table>"
],
"text/plain": [
"[(1, 3.477688657, 2.054082153, 0),\n",
" (2, 2.644432412, 1.272159848, 0),\n",
" (3, 0.927769315, 1.849131414, 0),\n",
" (4, 0.810142643, 3.537996181, 0),\n",
" (5, 2.946652954, 3.132353862, 0),\n",
" (6, 1.59404894, 0.989443564, 0),\n",
" (7, 3.763338981, 2.588286506, 0),\n",
" (8, 2.731513537, 2.920290083, 0),\n",
" (9, 3.142547623, 2.312193139, 0),\n",
" (10, 2.714237335, 3.692208617, 0),\n",
" (11, 3.297346703, 2.722493452, 0),\n",
" (12, 3.116130322, 1.28700348, 0),\n",
" (13, 3.46984971, 2.988072281, 0),\n",
" (14, -0.299521275, 2.902893717, 0),\n",
" (15, 3.006241263, 0.880845444, 0),\n",
" (16, 3.740430116, 2.80308735, 0),\n",
" (17, 2.40970111, -0.192345242, 0),\n",
" (18, 2.077964052, 2.120789868, 0),\n",
" (19, 2.92207981, 3.078177955, 0),\n",
" (20, 1.779338785, 2.879800254, 0),\n",
" (21, 1.901626901, 2.013656864, 0),\n",
" (22, 3.525453741, 1.826728367, 0),\n",
" (23, 0.490535854, 3.197085444, 0),\n",
" (24, 2.435042897, 1.931344024, 0),\n",
" (25, 0.741998751, 2.828085351, 0),\n",
" (26, 1.401392713, 1.391890011, 0),\n",
" (27, 4.171946842, 2.055829176, 0),\n",
" (28, 1.161087889, 2.982529965, 0),\n",
" (29, 2.853653721, 3.34192252, 0),\n",
" (30, 1.644632588, 2.456675004, 0),\n",
" (31, 2.291755033, 3.206261556, 0),\n",
" (32, 2.795122657, 4.620035751, 0),\n",
" (33, 3.784713573, 3.6309499, 0),\n",
" (34, 0.974690376, 1.241216167, 0),\n",
" (35, 4.41875231, 2.522626571, 0),\n",
" (36, 3.242334647, 4.318492225, 0),\n",
" (37, 1.060151899, 2.833976874, 0),\n",
" (38, 1.562117578, 2.46476821, 0),\n",
" (39, 2.718235791, 2.163003839, 0),\n",
" (40, 2.178388781, 5.023306377, 0),\n",
" (41, 3.03131449, 2.009054749, 0),\n",
" (42, 1.240793357, 2.760141668, 0),\n",
" (43, 1.546778023, 2.128465476, 0),\n",
" (44, 3.423005981, 0.611706303, 0),\n",
" (45, 3.629663147, 2.412814752, 0),\n",
" (46, 2.487767954, 2.94231289, 0),\n",
" (47, 3.423436912, 1.797658236, 0),\n",
" (48, 3.064236652, 0.404234497, 0),\n",
" (49, 3.058644245, 1.636083927, 0),\n",
" (50, 0.415225546, 2.160140347, 0),\n",
" (51, 2.552604306, 1.918171296, 0),\n",
" (52, 5.391811096, 2.552046296, 0),\n",
" (53, 2.879517904, 2.074448502, 0),\n",
" (54, 2.748929771, 3.066583653, 0),\n",
" (55, 2.543635935, 0.524322093, 0),\n",
" (56, 2.733866036, 2.919625115, 0),\n",
" (57, 4.336261393, 2.899632049, 0),\n",
" (58, 2.990783023, 4.525673805, 0),\n",
" (59, 2.531742302, 1.288730212, 0),\n",
" (60, 2.993536446, 1.002837141, 0),\n",
" (61, 1.302279861, 1.870369825, 0),\n",
" (62, 2.167820933, 3.648228563, 0),\n",
" (63, 1.453467339, 2.863323655, 0),\n",
" (64, 1.511763543, 2.842528064, 0),\n",
" (65, 1.511118326, 1.030994711, 0),\n",
" (66, 1.618494797, 2.384012858, 0),\n",
" (67, 3.940985564, 2.077331763, 0),\n",
" (68, 2.601436431, 2.151835537, 0),\n",
" (69, 3.66157718, 1.514418126, 0),\n",
" (70, 2.120969898, 2.082663855, 0),\n",
" (71, 3.294133361, 1.274548786, 0),\n",
" (72, 2.338613807, 1.947608563, 0),\n",
" (73, 2.192637233, 4.385988816, 0),\n",
" (74, 1.37939325, 0.949810181, 0),\n",
" (75, 2.482126156, 1.967472078, 0),\n",
" (76, 1.878088637, 3.726757865, 0),\n",
" (77, 3.267084097, 4.062067833, 0),\n",
" (78, 4.348503839, 2.237661811, 0),\n",
" (79, 1.89153725, 4.458937202, 0),\n",
" (80, 1.40019227, 1.475923076, 0),\n",
" (81, 1.625840824, 3.048601416, 0),\n",
" (82, 0.634228588, 3.241144904, 0),\n",
" (83, 2.793959074, 2.906634367, 0),\n",
" (84, 2.248293485, 1.861318815, 0),\n",
" (85, 2.2226924, 2.602626132, 0),\n",
" (86, 3.239712943, 3.651909477, 0),\n",
" (87, 2.486779376, 1.122974349, 0),\n",
" (88, 2.610069549, 4.142732999, 0),\n",
" (89, 2.232032377, 3.891029136, 0),\n",
" (90, 0.671535554, 1.619295522, 0),\n",
" (91, 3.56843064, 2.870676431, 0),\n",
" (92, 2.957970834, 0.674673372, 0),\n",
" (93, 3.303146839, 2.635752004, 0),\n",
" (94, 2.130611562, 1.799856373, 0),\n",
" (95, 1.32647937, 3.961083872, 0),\n",
" (96, 3.460740149, 2.895561311, 0),\n",
" (97, 3.991832728, 2.143705164, 0),\n",
" (98, 2.885955866, 1.361046223, 0),\n",
" (99, 3.259746582, 1.558551411, 0),\n",
" (100, 2.483309827, 1.632641264, 0),\n",
" (101, -4.213381351, -2.900623373, 0),\n",
" (102, -3.596574078, -2.399679083, 0),\n",
" (103, -1.769713825, -2.911536282, 0),\n",
" (104, -2.221528889, -0.937831145, 0),\n",
" (105, -3.660889941, -4.250095097, 0),\n",
" (106, -2.836792864, -0.567553257, 0),\n",
" (107, -1.551447729, -0.917435201, 0),\n",
" (108, -2.839660226, -2.562009211, 0),\n",
" (109, -0.271123757, -2.139845405, 0),\n",
" (110, -1.67752756, -2.817099446, 0),\n",
" (111, -1.990709823, -3.384842756, 0),\n",
" (112, -1.980548006, -3.081970268, 0),\n",
" (113, -2.890542485, -2.913015063, 0),\n",
" (114, -1.719362906, -2.698999554, 0),\n",
" (115, -1.179134005, -3.113842051, 0),\n",
" (116, -0.31589445, -3.486864213, 0),\n",
" (117, -1.225029419, -4.054172114, 0),\n",
" (118, -0.775855112, -4.798714411, 0),\n",
" (119, -1.594178086, -2.941142304, 0),\n",
" (120, -2.042977212, -2.933130133, 0),\n",
" (121, -4.691983303, -2.111173512, 0),\n",
" (122, -2.215532819, -2.647239265, 0),\n",
" (123, -3.473353314, -0.949728515, 0),\n",
" (124, -2.024310476, -3.291014402, 0),\n",
" (125, -2.377147514, -1.872579721, 0),\n",
" (126, -1.669438317, -2.836688653, 0),\n",
" (127, -2.603734147, -0.617959122, 0),\n",
" (128, -1.487351993, -3.072354694, 0),\n",
" (129, -1.272323639, -3.748055201, 0),\n",
" (130, -2.723251986, -1.755721612, 0),\n",
" (131, -3.587873685, -2.785118842, 0),\n",
" (132, -0.883282566, -2.791948353, 0),\n",
" (133, -1.964424203, -2.690516863, 0),\n",
" (134, -3.059411934, -1.811419461, 0),\n",
" (135, -1.893925178, -2.994277815, 0),\n",
" (136, -3.093000881, -1.826091978, 0),\n",
" (137, -3.953156735, -4.44330023, 0),\n",
" (138, -1.842918398, -2.06192018, 0),\n",
" (139, -3.215679278, -3.042618882, 0),\n",
" (140, -2.81353762, -2.830866664, 0),\n",
" (141, -5.264478475, -1.807066297, 0),\n",
" (142, -2.258918952, -1.832503553, 0),\n",
" (143, -0.516154749, -1.263799453, 0),\n",
" (144, -2.594099029, -4.712126893, 0),\n",
" (145, -2.431227839, -3.852530459, 0),\n",
" (146, -3.198092122, -4.56994428, 0),\n",
" (147, -1.907192352, -3.565506078, 0),\n",
" (148, -2.414464255, -0.226651715, 0),\n",
" (149, -3.392614469, -2.088505119, 0),\n",
" (150, -2.949470639, -3.130261936, 0),\n",
" (151, 1.423851782, 0.425685042, 1),\n",
" (152, -1.275510857, 0.666652654, 1),\n",
" (153, 0.125735799, -1.209277913, 1),\n",
" (154, -0.092881052, -0.730732398, 1),\n",
" (155, 0.322701118, -1.850123428, 1),\n",
" (156, -0.178767017, 1.25698062, 1),\n",
" (157, 0.19723042, 2.0465566, 1),\n",
" (158, 0.005282715, -2.059768647, 1),\n",
" (159, 0.910788477, 0.598477996, 1),\n",
" (160, -0.773430717, 1.147038948, 1),\n",
" (161, 1.773401623, 1.284216146, 1),\n",
" (162, 1.502500866, -1.223375612, 1),\n",
" (163, -0.501311924, -0.440490759, 1),\n",
" (164, -0.834755065, -0.8186158, 1),\n",
" (165, -0.250178435, -0.218692894, 1),\n",
" (166, -1.257613288, -0.41308356, 1),\n",
" (167, 0.941070819, -0.540142468, 1),\n",
" (168, -0.698602136, -1.22077356, 1),\n",
" (169, 0.124262074, 0.079382121, 1),\n",
" (170, -0.569170722, -1.681698232, 1),\n",
" (171, -0.892885579, 0.451077538, 1),\n",
" (172, 0.101802076, -0.83620399, 1),\n",
" (173, -0.473321762, 0.246196156, 1),\n",
" (174, -0.325040499, -0.429683581, 1),\n",
" (175, 1.545869155, -0.622612864, 1),\n",
" (176, 0.686238366, -0.493025895, 1),\n",
" (177, 0.365612386, -1.660420309, 1),\n",
" (178, -0.879435071, -0.523046756, 1),\n",
" (179, -1.256420076, -0.185672564, 1),\n",
" (180, 0.169493316, 0.5178859, 1),\n",
" (181, -0.958280935, -0.514351478, 1),\n",
" (182, 0.75208944, -0.478467004, 1),\n",
" (183, -1.273005887, -1.382281404, 1),\n",
" (184, -1.676742007, -0.18294616, 1),\n",
" (185, 1.458854642, -1.463275405, 1),\n",
" (186, 0.030502061, -0.031380713, 1),\n",
" (187, 0.691101797, -0.327078622, 1),\n",
" (188, 0.967384974, 0.212910418, 1),\n",
" (189, -0.781569801, -0.156304279, 1),\n",
" (190, -0.15064646, -0.757864836, 1),\n",
" (191, -0.429420958, 0.738464034, 1),\n",
" (192, 0.163354473, -0.923980377, 1),\n",
" (193, -0.555645057, 0.630094151, 1),\n",
" (194, -0.056850435, 0.187970078, 1),\n",
" (195, 0.530485714, 1.911034018, 1),\n",
" (196, 0.249602752, 1.205077158, 1),\n",
" (197, -1.111697529, 1.916493579, 1),\n",
" (198, 0.713042239, 0.5819636, 1),\n",
" (199, -0.372663212, 2.01479565, 1),\n",
" (200, 1.340973515, -0.527066068, 1)]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%sql \n",
"DROP TABLE IF EXISTS svm_train;\n",
"\n",
"CREATE TABLE svm_train (id INT, x1_norm FLOAT, x2_norm FLOAT, y INT);\n",
"\n",
"INSERT INTO svm_train VALUES\n",
"(1,3.477688657,2.054082153,0),\n",
"(2,2.644432412,1.272159848,0),\n",
"(3,0.927769315,1.849131414,0),\n",
"(4,0.810142643,3.537996181,0),\n",
"(5,2.946652954,3.132353862,0),\n",
"(6,1.59404894,0.989443564,0),\n",
"(7,3.763338981,2.588286506,0),\n",
"(8,2.731513537,2.920290083,0),\n",
"(9,3.142547623,2.312193139,0),\n",
"(10,2.714237335,3.692208617,0),\n",
"(11,3.297346703,2.722493452,0),\n",
"(12,3.116130322,1.28700348,0),\n",
"(13,3.46984971,2.988072281,0),\n",
"(14,-0.299521275,2.902893717,0),\n",
"(15,3.006241263,0.880845444,0),\n",
"(16,3.740430116,2.80308735,0),\n",
"(17,2.40970111,-0.192345242,0),\n",
"(18,2.077964052,2.120789868,0),\n",
"(19,2.92207981,3.078177955,0),\n",
"(20,1.779338785,2.879800254,0),\n",
"(21,1.901626901,2.013656864,0),\n",
"(22,3.525453741,1.826728367,0),\n",
"(23,0.490535854,3.197085444,0),\n",
"(24,2.435042897,1.931344024,0),\n",
"(25,0.741998751,2.828085351,0),\n",
"(26,1.401392713,1.391890011,0),\n",
"(27,4.171946842,2.055829176,0),\n",
"(28,1.161087889,2.982529965,0),\n",
"(29,2.853653721,3.34192252,0),\n",
"(30,1.644632588,2.456675004,0),\n",
"(31,2.291755033,3.206261556,0),\n",
"(32,2.795122657,4.620035751,0),\n",
"(33,3.784713573,3.6309499,0),\n",
"(34,0.974690376,1.241216167,0),\n",
"(35,4.41875231,2.522626571,0),\n",
"(36,3.242334647,4.318492225,0),\n",
"(37,1.060151899,2.833976874,0),\n",
"(38,1.562117578,2.46476821,0),\n",
"(39,2.718235791,2.163003839,0),\n",
"(40,2.178388781,5.023306377,0),\n",
"(41,3.03131449,2.009054749,0),\n",
"(42,1.240793357,2.760141668,0),\n",
"(43,1.546778023,2.128465476,0),\n",
"(44,3.423005981,0.611706303,0),\n",
"(45,3.629663147,2.412814752,0),\n",
"(46,2.487767954,2.94231289,0),\n",
"(47,3.423436912,1.797658236,0),\n",
"(48,3.064236652,0.404234497,0),\n",
"(49,3.058644245,1.636083927,0),\n",
"(50,0.415225546,2.160140347,0),\n",
"(51,2.552604306,1.918171296,0),\n",
"(52,5.391811096,2.552046296,0),\n",
"(53,2.879517904,2.074448502,0),\n",
"(54,2.748929771,3.066583653,0),\n",
"(55,2.543635935,0.524322093,0),\n",
"(56,2.733866036,2.919625115,0),\n",
"(57,4.336261393,2.899632049,0),\n",
"(58,2.990783023,4.525673805,0),\n",
"(59,2.531742302,1.288730212,0),\n",
"(60,2.993536446,1.002837141,0),\n",
"(61,1.302279861,1.870369825,0),\n",
"(62,2.167820933,3.648228563,0),\n",
"(63,1.453467339,2.863323655,0),\n",
"(64,1.511763543,2.842528064,0),\n",
"(65,1.511118326,1.030994711,0),\n",
"(66,1.618494797,2.384012858,0),\n",
"(67,3.940985564,2.077331763,0),\n",
"(68,2.601436431,2.151835537,0),\n",
"(69,3.66157718,1.514418126,0),\n",
"(70,2.120969898,2.082663855,0),\n",
"(71,3.294133361,1.274548786,0),\n",
"(72,2.338613807,1.947608563,0),\n",
"(73,2.192637233,4.385988816,0),\n",
"(74,1.37939325,0.949810181,0),\n",
"(75,2.482126156,1.967472078,0),\n",
"(76,1.878088637,3.726757865,0),\n",
"(77,3.267084097,4.062067833,0),\n",
"(78,4.348503839,2.237661811,0),\n",
"(79,1.89153725,4.458937202,0),\n",
"(80,1.40019227,1.475923076,0),\n",
"(81,1.625840824,3.048601416,0),\n",
"(82,0.634228588,3.241144904,0),\n",
"(83,2.793959074,2.906634367,0),\n",
"(84,2.248293485,1.861318815,0),\n",
"(85,2.2226924,2.602626132,0),\n",
"(86,3.239712943,3.651909477,0),\n",
"(87,2.486779376,1.122974349,0),\n",
"(88,2.610069549,4.142732999,0),\n",
"(89,2.232032377,3.891029136,0),\n",
"(90,0.671535554,1.619295522,0),\n",
"(91,3.56843064,2.870676431,0),\n",
"(92,2.957970834,0.674673372,0),\n",
"(93,3.303146839,2.635752004,0),\n",
"(94,2.130611562,1.799856373,0),\n",
"(95,1.32647937,3.961083872,0),\n",
"(96,3.460740149,2.895561311,0),\n",
"(97,3.991832728,2.143705164,0),\n",
"(98,2.885955866,1.361046223,0),\n",
"(99,3.259746582,1.558551411,0),\n",
"(100,2.483309827,1.632641264,0),\n",
"(101,-4.213381351,-2.900623373,0),\n",
"(102,-3.596574078,-2.399679083,0),\n",
"(103,-1.769713825,-2.911536282,0),\n",
"(104,-2.221528889,-0.937831145,0),\n",
"(105,-3.660889941,-4.250095097,0),\n",
"(106,-2.836792864,-0.567553257,0),\n",
"(107,-1.551447729,-0.917435201,0),\n",
"(108,-2.839660226,-2.562009211,0),\n",
"(109,-0.271123757,-2.139845405,0),\n",
"(110,-1.67752756,-2.817099446,0),\n",
"(111,-1.990709823,-3.384842756,0),\n",
"(112,-1.980548006,-3.081970268,0),\n",
"(113,-2.890542485,-2.913015063,0),\n",
"(114,-1.719362906,-2.698999554,0),\n",
"(115,-1.179134005,-3.113842051,0),\n",
"(116,-0.31589445,-3.486864213,0),\n",
"(117,-1.225029419,-4.054172114,0),\n",
"(118,-0.775855112,-4.798714411,0),\n",
"(119,-1.594178086,-2.941142304,0),\n",
"(120,-2.042977212,-2.933130133,0),\n",
"(121,-4.691983303,-2.111173512,0),\n",
"(122,-2.215532819,-2.647239265,0),\n",
"(123,-3.473353314,-0.949728515,0),\n",
"(124,-2.024310476,-3.291014402,0),\n",
"(125,-2.377147514,-1.872579721,0),\n",
"(126,-1.669438317,-2.836688653,0),\n",
"(127,-2.603734147,-0.617959122,0),\n",
"(128,-1.487351993,-3.072354694,0),\n",
"(129,-1.272323639,-3.748055201,0),\n",
"(130,-2.723251986,-1.755721612,0),\n",
"(131,-3.587873685,-2.785118842,0),\n",
"(132,-0.883282566,-2.791948353,0),\n",
"(133,-1.964424203,-2.690516863,0),\n",
"(134,-3.059411934,-1.811419461,0),\n",
"(135,-1.893925178,-2.994277815,0),\n",
"(136,-3.093000881,-1.826091978,0),\n",
"(137,-3.953156735,-4.44330023,0),\n",
"(138,-1.842918398,-2.06192018,0),\n",
"(139,-3.215679278,-3.042618882,0),\n",
"(140,-2.81353762,-2.830866664,0),\n",
"(141,-5.264478475,-1.807066297,0),\n",
"(142,-2.258918952,-1.832503553,0),\n",
"(143,-0.516154749,-1.263799453,0),\n",
"(144,-2.594099029,-4.712126893,0),\n",
"(145,-2.431227839,-3.852530459,0),\n",
"(146,-3.198092122,-4.56994428,0),\n",
"(147,-1.907192352,-3.565506078,0),\n",
"(148,-2.414464255,-0.226651715,0),\n",
"(149,-3.392614469,-2.088505119,0),\n",
"(150,-2.949470639,-3.130261936,0),\n",
"(151,1.423851782,0.425685042,1),\n",
"(152,-1.275510857,0.666652654,1),\n",
"(153,0.125735799,-1.209277913,1),\n",
"(154,-0.092881052,-0.730732398,1),\n",
"(155,0.322701118,-1.850123428,1),\n",
"(156,-0.178767017,1.25698062,1),\n",
"(157,0.19723042,2.0465566,1),\n",
"(158,0.005282715,-2.059768647,1),\n",
"(159,0.910788477,0.598477996,1),\n",
"(160,-0.773430717,1.147038948,1),\n",
"(161,1.773401623,1.284216146,1),\n",
"(162,1.502500866,-1.223375612,1),\n",
"(163,-0.501311924,-0.440490759,1),\n",
"(164,-0.834755065,-0.8186158,1),\n",
"(165,-0.250178435,-0.218692894,1),\n",
"(166,-1.257613288,-0.41308356,1),\n",
"(167,0.941070819,-0.540142468,1),\n",
"(168,-0.698602136,-1.22077356,1),\n",
"(169,0.124262074,0.079382121,1),\n",
"(170,-0.569170722,-1.681698232,1),\n",
"(171,-0.892885579,0.451077538,1),\n",
"(172,0.101802076,-0.83620399,1),\n",
"(173,-0.473321762,0.246196156,1),\n",
"(174,-0.325040499,-0.429683581,1),\n",
"(175,1.545869155,-0.622612864,1),\n",
"(176,0.686238366,-0.493025895,1),\n",
"(177,0.365612386,-1.660420309,1),\n",
"(178,-0.879435071,-0.523046756,1),\n",
"(179,-1.256420076,-0.185672564,1),\n",
"(180,0.169493316,0.5178859,1),\n",
"(181,-0.958280935,-0.514351478,1),\n",
"(182,0.75208944,-0.478467004,1),\n",
"(183,-1.273005887,-1.382281404,1),\n",
"(184,-1.676742007,-0.18294616,1),\n",
"(185,1.458854642,-1.463275405,1),\n",
"(186,0.030502061,-0.031380713,1),\n",
"(187,0.691101797,-0.327078622,1),\n",
"(188,0.967384974,0.212910418,1),\n",
"(189,-0.781569801,-0.156304279,1),\n",
"(190,-0.15064646,-0.757864836,1),\n",
"(191,-0.429420958,0.738464034,1),\n",
"(192,0.163354473,-0.923980377,1),\n",
"(193,-0.555645057,0.630094151,1),\n",
"(194,-0.056850435,0.187970078,1),\n",
"(195,0.530485714,1.911034018,1),\n",
"(196,0.249602752,1.205077158,1),\n",
"(197,-1.111697529,1.916493579,1),\n",
"(198,0.713042239,0.5819636,1),\n",
"(199,-0.372663212,2.01479565,1),\n",
"(200,1.340973515,-0.527066068,1);\n",
"\n",
"SELECT * FROM svm_train;"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Load test data"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Done.\n",
"Done.\n",
"100 rows affected.\n",
"100 rows affected.\n"
]
},
{
"data": {
"text/html": [
"<table>\n",
" <tr>\n",
" <th>id</th>\n",
" <th>x1_norm</th>\n",
" <th>x2_norm</th>\n",
" <th>y</th>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>3.19186286567</td>\n",
" <td>2.43784535123</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>1.02701012682</td>\n",
" <td>3.06641275604</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>2.48462374719</td>\n",
" <td>1.04708378822</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>0.097790220096</td>\n",
" <td>2.60185711577</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>5</td>\n",
" <td>1.21584854749</td>\n",
" <td>1.43810800943</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>6</td>\n",
" <td>2.35447228032</td>\n",
" <td>-0.174050345617</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>7</td>\n",
" <td>4.60880786586</td>\n",
" <td>1.90245046405</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>8</td>\n",
" <td>4.48280063191</td>\n",
" <td>2.04884896705</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>9</td>\n",
" <td>2.73551902596</td>\n",
" <td>3.58553765209</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>10</td>\n",
" <td>1.97071189136</td>\n",
" <td>2.18443772079</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>11</td>\n",
" <td>2.7161779127</td>\n",
" <td>3.63376955721</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>12</td>\n",
" <td>2.70888295081</td>\n",
" <td>-0.0349398271765</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>13</td>\n",
" <td>1.4610361909</td>\n",
" <td>3.42655806213</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>14</td>\n",
" <td>2.75610655671</td>\n",
" <td>2.730120387</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>15</td>\n",
" <td>2.27752828164</td>\n",
" <td>2.64326783305</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>16</td>\n",
" <td>2.19407139716</td>\n",
" <td>3.34949077338</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>17</td>\n",
" <td>2.9029515132</td>\n",
" <td>3.01094444761</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>18</td>\n",
" <td>2.30993917087</td>\n",
" <td>4.55741164938</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>19</td>\n",
" <td>3.01936737641</td>\n",
" <td>1.97005505678</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>20</td>\n",
" <td>2.28747683695</td>\n",
" <td>2.78263630598</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>21</td>\n",
" <td>2.60400876789</td>\n",
" <td>5.55877721123</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>22</td>\n",
" <td>3.9296721907</td>\n",
" <td>2.10219683258</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>23</td>\n",
" <td>2.63118303549</td>\n",
" <td>0.102491621587</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>24</td>\n",
" <td>1.54954589</td>\n",
" <td>3.0873860536</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>25</td>\n",
" <td>0.280390465108</td>\n",
" <td>3.63355026715</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>26</td>\n",
" <td>1.93490924459</td>\n",
" <td>2.98615616267</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>27</td>\n",
" <td>3.70552133101</td>\n",
" <td>0.518456719244</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>28</td>\n",
" <td>2.41009015975</td>\n",
" <td>1.73486922003</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>29</td>\n",
" <td>3.62793873024</td>\n",
" <td>2.25297304037</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>30</td>\n",
" <td>2.11239158631</td>\n",
" <td>3.97721589469</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>31</td>\n",
" <td>3.40408008627</td>\n",
" <td>1.79304504107</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>32</td>\n",
" <td>1.96513807156</td>\n",
" <td>2.76333684743</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>33</td>\n",
" <td>1.40559917894</td>\n",
" <td>2.04750092686</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>34</td>\n",
" <td>2.36471284908</td>\n",
" <td>1.45578753228</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>35</td>\n",
" <td>2.46178401494</td>\n",
" <td>1.11353099074</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>36</td>\n",
" <td>0.527280130908</td>\n",
" <td>1.68421750733</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>37</td>\n",
" <td>2.20892855566</td>\n",
" <td>1.34335228455</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>38</td>\n",
" <td>2.98027545988</td>\n",
" <td>0.906884241663</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>39</td>\n",
" <td>2.43711377609</td>\n",
" <td>3.90681533588</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>40</td>\n",
" <td>2.68902430613</td>\n",
" <td>2.09365080861</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>41</td>\n",
" <td>3.36499620301</td>\n",
" <td>2.17017069799</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>42</td>\n",
" <td>1.84475904693</td>\n",
" <td>1.44292615032</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>43</td>\n",
" <td>2.01650147464</td>\n",
" <td>2.60834301026</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>44</td>\n",
" <td>3.20509042041</td>\n",
" <td>0.713442363197</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>45</td>\n",
" <td>3.69423060656</td>\n",
" <td>1.4613341537</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>46</td>\n",
" <td>2.90323108665</td>\n",
" <td>2.31873337952</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>47</td>\n",
" <td>1.811774607</td>\n",
" <td>0.857649765268</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>48</td>\n",
" <td>1.9616767974</td>\n",
" <td>1.6330322035</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>49</td>\n",
" <td>2.38568235146</td>\n",
" <td>3.04014153969</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>50</td>\n",
" <td>1.11599099692</td>\n",
" <td>1.62223948418</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>51</td>\n",
" <td>-3.88019683701</td>\n",
" <td>-1.90804244929</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>52</td>\n",
" <td>-2.93763779286</td>\n",
" <td>-2.88818972468</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>53</td>\n",
" <td>-2.78329949771</td>\n",
" <td>-1.5892574663</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>54</td>\n",
" <td>-2.14876766014</td>\n",
" <td>-2.22759926419</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>55</td>\n",
" <td>-2.34465891168</td>\n",
" <td>-2.03636354773</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>56</td>\n",
" <td>-1.65191983387</td>\n",
" <td>-2.15892690859</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>57</td>\n",
" <td>-2.60565569168</td>\n",
" <td>-1.77081432005</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>58</td>\n",
" <td>-3.02843491486</td>\n",
" <td>-3.14074593129</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>59</td>\n",
" <td>-2.84599676178</td>\n",
" <td>-3.5855177319</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>60</td>\n",
" <td>-0.447689435222</td>\n",
" <td>-4.13124024997</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>61</td>\n",
" <td>-1.57464494278</td>\n",
" <td>-3.22753686927</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>62</td>\n",
" <td>-2.49254751533</td>\n",
" <td>-2.1488959318</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>63</td>\n",
" <td>0.295159850408</td>\n",
" <td>-3.57251507732</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>64</td>\n",
" <td>-4.13078933837</td>\n",
" <td>-2.98341199186</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>65</td>\n",
" <td>-0.197155430154</td>\n",
" <td>-2.45256963443</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>66</td>\n",
" <td>-2.23928404309</td>\n",
" <td>-2.70028255284</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>67</td>\n",
" <td>-2.03885222945</td>\n",
" <td>-1.30051374079</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>68</td>\n",
" <td>-4.15703137573</td>\n",
" <td>-2.51795211914</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>69</td>\n",
" <td>-3.81258564319</td>\n",
" <td>-1.58708278034</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>70</td>\n",
" <td>-2.74132281548</td>\n",
" <td>-2.95685549949</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>71</td>\n",
" <td>-0.252829440321</td>\n",
" <td>-1.22099691425</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>72</td>\n",
" <td>-4.26347094531</td>\n",
" <td>-0.447575628693</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>73</td>\n",
" <td>-2.07874099971</td>\n",
" <td>-0.382538953021</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>74</td>\n",
" <td>-4.1453133219</td>\n",
" <td>-2.31714511082</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>75</td>\n",
" <td>-2.83269168197</td>\n",
" <td>-3.324534933</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>76</td>\n",
" <td>0.455785040089</td>\n",
" <td>0.155584948007</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>77</td>\n",
" <td>-0.220722173235</td>\n",
" <td>-2.43418864974</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>78</td>\n",
" <td>0.548729745831</td>\n",
" <td>-0.0949369421177</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>79</td>\n",
" <td>-1.82864961519</td>\n",
" <td>1.56402197565</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>80</td>\n",
" <td>0.194053705543</td>\n",
" <td>-0.536890334562</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>81</td>\n",
" <td>0.704394015603</td>\n",
" <td>-2.56069284052</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>82</td>\n",
" <td>0.616913425127</td>\n",
" <td>0.492556355778</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>83</td>\n",
" <td>-0.129096443198</td>\n",
" <td>-0.420867814109</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>84</td>\n",
" <td>1.67726030243</td>\n",
" <td>0.458590858694</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>85</td>\n",
" <td>-2.50698410523</td>\n",
" <td>1.69003334943</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>86</td>\n",
" <td>0.717087045371</td>\n",
" <td>0.526262692684</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>87</td>\n",
" <td>-0.489268029472</td>\n",
" <td>0.493801683345</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>88</td>\n",
" <td>1.09772735903</td>\n",
" <td>0.283993342264</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>89</td>\n",
" <td>-0.628598555989</td>\n",
" <td>-0.396686804053</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>90</td>\n",
" <td>0.426377368884</td>\n",
" <td>-0.249374086909</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>91</td>\n",
" <td>-1.11022692039</td>\n",
" <td>1.2123400865</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>92</td>\n",
" <td>-0.856443670332</td>\n",
" <td>0.460830018915</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>93</td>\n",
" <td>-1.25844897922</td>\n",
" <td>1.24886842621</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>94</td>\n",
" <td>0.0194201567275</td>\n",
" <td>-0.382042722033</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>95</td>\n",
" <td>-0.22296693646</td>\n",
" <td>0.706213987443</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>96</td>\n",
" <td>0.844667743656</td>\n",
" <td>-0.803070954602</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>97</td>\n",
" <td>-0.223217405348</td>\n",
" <td>0.0493403000661</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>98</td>\n",
" <td>-1.01637580125</td>\n",
" <td>0.17698380305</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>99</td>\n",
" <td>0.835728235311</td>\n",
" <td>0.733391997738</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <td>100</td>\n",
" <td>-1.06826377671</td>\n",
" <td>-0.266085820059</td>\n",
" <td>1</td>\n",
" </tr>\n",
"</table>"
],
"text/plain": [
"[(1, 3.19186286566966, 2.43784535122886, 0),\n",
" (2, 1.02701012681504, 3.06641275603551, 0),\n",
" (3, 2.48462374718673, 1.04708378821908, 0),\n",
" (4, 0.097790220095995, 2.60185711577429, 0),\n",
" (5, 1.21584854749131, 1.43810800942926, 0),\n",
" (6, 2.35447228032043, -0.174050345616505, 0),\n",
" (7, 4.60880786586247, 1.90245046404784, 0),\n",
" (8, 4.48280063190995, 2.0488489670482, 0),\n",
" (9, 2.7355190259579, 3.58553765209102, 0),\n",
" (10, 1.97071189136441, 2.1844377207943, 0),\n",
" (11, 2.71617791269589, 3.63376955721377, 0),\n",
" (12, 2.70888295081494, -0.0349398271765065, 0),\n",
" (13, 1.46103619090143, 3.42655806212587, 0),\n",
" (14, 2.75610655670671, 2.73012038700395, 0),\n",
" (15, 2.27752828163629, 2.64326783305459, 0),\n",
" (16, 2.19407139715775, 3.3494907733755, 0),\n",
" (17, 2.90295151320092, 3.0109444476061, 0),\n",
" (18, 2.30993917086741, 4.55741164938292, 0),\n",
" (19, 3.01936737640503, 1.97005505677551, 0),\n",
" (20, 2.28747683694863, 2.78263630597799, 0),\n",
" (21, 2.60400876788757, 5.55877721123048, 0),\n",
" (22, 3.92967219070071, 2.10219683257706, 0),\n",
" (23, 2.63118303548735, 0.102491621587433, 0),\n",
" (24, 1.5495458899994, 3.08738605359776, 0),\n",
" (25, 0.280390465107923, 3.63355026715455, 0),\n",
" (26, 1.93490924459427, 2.98615616267194, 0),\n",
" (27, 3.70552133100886, 0.518456719243975, 0),\n",
" (28, 2.41009015975065, 1.73486922002713, 0),\n",
" (29, 3.62793873023914, 2.25297304037118, 0),\n",
" (30, 2.11239158630912, 3.97721589469075, 0),\n",
" (31, 3.4040800862678, 1.79304504106644, 0),\n",
" (32, 1.9651380715639, 2.7633368474252, 0),\n",
" (33, 1.40559917893875, 2.04750092685709, 0),\n",
" (34, 2.36471284907595, 1.45578753227826, 0),\n",
" (35, 2.46178401493505, 1.11353099073764, 0),\n",
" (36, 0.527280130908475, 1.68421750733042, 0),\n",
" (37, 2.20892855566477, 1.34335228455463, 0),\n",
" (38, 2.98027545987572, 0.906884241662529, 0),\n",
" (39, 2.43711377608713, 3.90681533587623, 0),\n",
" (40, 2.68902430613035, 2.09365080860582, 0),\n",
" (41, 3.36499620300795, 2.17017069799415, 0),\n",
" (42, 1.84475904693213, 1.4429261503175, 0),\n",
" (43, 2.01650147464037, 2.60834301025553, 0),\n",
" (44, 3.20509042040977, 0.713442363197075, 0),\n",
" (45, 3.69423060656181, 1.46133415370448, 0),\n",
" (46, 2.90323108665145, 2.31873337951872, 0),\n",
" (47, 1.81177460700238, 0.857649765268067, 0),\n",
" (48, 1.96167679740308, 1.63303220350444, 0),\n",
" (49, 2.38568235145946, 3.04014153969476, 0),\n",
" (50, 1.11599099692355, 1.62223948417966, 0),\n",
" (51, -3.88019683700604, -1.90804244928957, 0),\n",
" (52, -2.93763779285733, -2.88818972467874, 0),\n",
" (53, -2.78329949771396, -1.58925746630064, 0),\n",
" (54, -2.14876766013915, -2.22759926418836, 0),\n",
" (55, -2.34465891167707, -2.03636354772884, 0),\n",
" (56, -1.65191983386845, -2.15892690858565, 0),\n",
" (57, -2.60565569168374, -1.77081432005374, 0),\n",
" (58, -3.02843491486103, -3.14074593129005, 0),\n",
" (59, -2.84599676177635, -3.58551773190068, 0),\n",
" (60, -0.447689435222359, -4.1312402499689, 0),\n",
" (61, -1.5746449427815, -3.22753686927059, 0),\n",
" (62, -2.49254751533449, -2.14889593180042, 0),\n",
" (63, 0.29515985040801, -3.5725150773244, 0),\n",
" (64, -4.13078933837291, -2.9834119918556, 0),\n",
" (65, -0.197155430154265, -2.45256963443226, 0),\n",
" (66, -2.23928404308736, -2.7002825528411, 0),\n",
" (67, -2.03885222944665, -1.30051374079238, 0),\n",
" (68, -4.15703137572666, -2.51795211913551, 0),\n",
" (69, -3.81258564318533, -1.58708278033839, 0),\n",
" (70, -2.7413228154835, -2.95685549949341, 0),\n",
" (71, -0.252829440320784, -1.22099691425309, 0),\n",
" (72, -4.26347094530745, -0.447575628692978, 0),\n",
" (73, -2.07874099970573, -0.382538953021058, 0),\n",
" (74, -4.14531332190171, -2.31714511082298, 0),\n",
" (75, -2.83269168196913, -3.32453493299708, 0),\n",
" (76, 0.455785040088776, 0.155584948007113, 1),\n",
" (77, -0.220722173234831, -2.43418864974351, 1),\n",
" (78, 0.548729745831362, -0.0949369421177311, 1),\n",
" (79, -1.82864961519218, 1.56402197565447, 1),\n",
" (80, 0.194053705542875, -0.536890334561662, 1),\n",
" (81, 0.704394015602911, -2.56069284052162, 1),\n",
" (82, 0.616913425127299, 0.492556355778381, 1),\n",
" (83, -0.129096443198353, -0.420867814109458, 1),\n",
" (84, 1.67726030243255, 0.458590858693851, 1),\n",
" (85, -2.5069841052313, 1.69003334942688, 1),\n",
" (86, 0.717087045370892, 0.526262692683728, 1),\n",
" (87, -0.489268029471517, 0.493801683345106, 1),\n",
" (88, 1.09772735902704, 0.283993342264404, 1),\n",
" (89, -0.628598555988557, -0.396686804052564, 1),\n",
" (90, 0.426377368884161, -0.249374086909448, 1),\n",
" (91, -1.11022692038932, 1.21234008650199, 1),\n",
" (92, -0.856443670332039, 0.460830018915429, 1),\n",
" (93, -1.25844897922185, 1.248868426214, 1),\n",
" (94, 0.0194201567274547, -0.382042722032664, 1),\n",
" (95, -0.222966936459862, 0.706213987442536, 1),\n",
" (96, 0.844667743656113, -0.803070954601802, 1),\n",
" (97, -0.223217405347698, 0.0493403000660624, 1),\n",
" (98, -1.01637580125337, 0.176983803049904, 1),\n",
" (99, 0.835728235311067, 0.733391997738253, 1),\n",
" (100, -1.06826377671416, -0.266085820059313, 1)]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%sql \n",
"DROP TABLE IF EXISTS svm_test;\n",
"\n",
"CREATE TABLE svm_test (id INT, x1_norm FLOAT, x2_norm FLOAT, y INT);\n",
"\n",
"INSERT INTO svm_test VALUES\n",
"(1,3.19186286566966,2.43784535122886,0),\n",
"(2,1.02701012681504,3.06641275603551,0),\n",
"(3,2.48462374718673,1.04708378821908,0),\n",
"(4,0.097790220095995,2.60185711577429,0),\n",
"(5,1.21584854749131,1.43810800942926,0),\n",
"(6,2.35447228032043,-0.174050345616505,0),\n",
"(7,4.60880786586247,1.90245046404784,0),\n",
"(8,4.48280063190995,2.0488489670482,0),\n",
"(9,2.7355190259579,3.58553765209102,0),\n",
"(10,1.97071189136441,2.1844377207943,0),\n",
"(11,2.71617791269589,3.63376955721377,0),\n",
"(12,2.70888295081494,-0.0349398271765065,0),\n",
"(13,1.46103619090143,3.42655806212587,0),\n",
"(14,2.75610655670671,2.73012038700395,0),\n",
"(15,2.27752828163629,2.64326783305459,0),\n",
"(16,2.19407139715775,3.3494907733755,0),\n",
"(17,2.90295151320092,3.0109444476061,0),\n",
"(18,2.30993917086741,4.55741164938292,0),\n",
"(19,3.01936737640503,1.97005505677551,0),\n",
"(20,2.28747683694863,2.78263630597799,0),\n",
"(21,2.60400876788757,5.55877721123048,0),\n",
"(22,3.92967219070071,2.10219683257706,0),\n",
"(23,2.63118303548735,0.102491621587433,0),\n",
"(24,1.5495458899994,3.08738605359776,0),\n",
"(25,0.280390465107923,3.63355026715455,0),\n",
"(26,1.93490924459427,2.98615616267194,0),\n",
"(27,3.70552133100886,0.518456719243975,0),\n",
"(28,2.41009015975065,1.73486922002713,0),\n",
"(29,3.62793873023914,2.25297304037118,0),\n",
"(30,2.11239158630912,3.97721589469075,0),\n",
"(31,3.4040800862678,1.79304504106644,0),\n",
"(32,1.9651380715639,2.7633368474252,0),\n",
"(33,1.40559917893875,2.04750092685709,0),\n",
"(34,2.36471284907595,1.45578753227826,0),\n",
"(35,2.46178401493505,1.11353099073764,0),\n",
"(36,0.527280130908475,1.68421750733042,0),\n",
"(37,2.20892855566477,1.34335228455463,0),\n",
"(38,2.98027545987572,0.906884241662529,0),\n",
"(39,2.43711377608713,3.90681533587623,0),\n",
"(40,2.68902430613035,2.09365080860582,0),\n",
"(41,3.36499620300795,2.17017069799415,0),\n",
"(42,1.84475904693213,1.4429261503175,0),\n",
"(43,2.01650147464037,2.60834301025553,0),\n",
"(44,3.20509042040977,0.713442363197075,0),\n",
"(45,3.69423060656181,1.46133415370448,0),\n",
"(46,2.90323108665145,2.31873337951872,0),\n",
"(47,1.81177460700238,0.857649765268067,0),\n",
"(48,1.96167679740308,1.63303220350444,0),\n",
"(49,2.38568235145946,3.04014153969476,0),\n",
"(50,1.11599099692355,1.62223948417966,0),\n",
"(51,-3.88019683700604,-1.90804244928957,0),\n",
"(52,-2.93763779285733,-2.88818972467874,0),\n",
"(53,-2.78329949771396,-1.58925746630064,0),\n",
"(54,-2.14876766013915,-2.22759926418836,0),\n",
"(55,-2.34465891167707,-2.03636354772884,0),\n",
"(56,-1.65191983386845,-2.15892690858565,0),\n",
"(57,-2.60565569168374,-1.77081432005374,0),\n",
"(58,-3.02843491486103,-3.14074593129005,0),\n",
"(59,-2.84599676177635,-3.58551773190068,0),\n",
"(60,-0.447689435222359,-4.1312402499689,0),\n",
"(61,-1.5746449427815,-3.22753686927059,0),\n",
"(62,-2.49254751533449,-2.14889593180042,0),\n",
"(63,0.29515985040801,-3.5725150773244,0),\n",
"(64,-4.13078933837291,-2.9834119918556,0),\n",
"(65,-0.197155430154265,-2.45256963443226,0),\n",
"(66,-2.23928404308736,-2.7002825528411,0),\n",
"(67,-2.03885222944665,-1.30051374079238,0),\n",
"(68,-4.15703137572666,-2.51795211913551,0),\n",
"(69,-3.81258564318533,-1.58708278033839,0),\n",
"(70,-2.7413228154835,-2.95685549949341,0),\n",
"(71,-0.252829440320784,-1.22099691425309,0),\n",
"(72,-4.26347094530745,-0.447575628692978,0),\n",
"(73,-2.07874099970573,-0.382538953021058,0),\n",
"(74,-4.14531332190171,-2.31714511082298,0),\n",
"(75,-2.83269168196913,-3.32453493299708,0),\n",
"(76,0.455785040088776,0.155584948007113,1),\n",
"(77,-0.220722173234831,-2.43418864974351,1),\n",
"(78,0.548729745831362,-0.0949369421177311,1),\n",
"(79,-1.82864961519218,1.56402197565447,1),\n",
"(80,0.194053705542875,-0.536890334561662,1),\n",
"(81,0.704394015602911,-2.56069284052162,1),\n",
"(82,0.616913425127299,0.492556355778381,1),\n",
"(83,-0.129096443198353,-0.420867814109458,1),\n",
"(84,1.67726030243255,0.458590858693851,1),\n",
"(85,-2.5069841052313,1.69003334942688,1),\n",
"(86,0.717087045370892,0.526262692683728,1),\n",
"(87,-0.489268029471517,0.493801683345106,1),\n",
"(88,1.09772735902704,0.283993342264404,1),\n",
"(89,-0.628598555988557,-0.396686804052564,1),\n",
"(90,0.426377368884161,-0.249374086909448,1),\n",
"(91,-1.11022692038932,1.21234008650199,1),\n",
"(92,-0.856443670332039,0.460830018915429,1),\n",
"(93,-1.25844897922185,1.248868426214,1),\n",
"(94,0.0194201567274547,-0.382042722032664,1),\n",
"(95,-0.222966936459862,0.706213987442536,1),\n",
"(96,0.844667743656113,-0.803070954601802,1),\n",
"(97,-0.223217405347698,0.0493403000660624,1),\n",
"(98,-1.01637580125337,0.176983803049904,1),\n",
"(99,0.835728235311067,0.733391997738253,1),\n",
"(100,-1.06826377671416,-0.266085820059313,1);\n",
"\n",
"SELECT * FROM svm_test;"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 3. Plot data\n",
"\n",
"Plot training data"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"200 rows affected.\n"
]
}
],
"source": [
"training_dataset_D = %sql SELECT * FROM svm_train;\n",
"training_dataset = np.array(training_dataset_D)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"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": [
"plt.scatter(training_dataset[:, 1], training_dataset[:, 2], c=training_dataset[:, 3]);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plot test data"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"100 rows affected.\n"
]
}
],
"source": [
"test_dataset_D = %sql SELECT * FROM svm_test;\n",
"test_dataset = np.array(test_dataset_D)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"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": [
"plt.scatter(test_dataset[:, 1], test_dataset[:, 2], c=test_dataset[:, 3]);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 4. Train SVM\n",
"\n",
"Kernel parameters to note:\n",
"* `gamma`: important for the performance of Gaussian kernel machine; too large means overfit, too small will not capture the complexity of the data. Default `1/num_features`.\n",
"* `n_components`: dimensionality of the transformed feature space; a larger value lowers the variance of the estimate of the kernel and makes for a better decision boundary, but requires more memory and takes longer to train. (Due to use of primal formulation, not needed in R or other single node implementations using dual formulation which effectively transform to an infinite feature space.)\n",
"\n",
"Other parameters to note:\n",
"* `lambda`: regularization parameter\n",
"* `n_folds`: cross validation "
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Done.\n",
"Done.\n",
"Done.\n",
"Done.\n",
"1 rows affected.\n"
]
},
{
"data": {
"text/html": [
"<table>\n",
" <tr>\n",
" <th>svm_classification</th>\n",
" </tr>\n",
" <tr>\n",
" <td></td>\n",
" </tr>\n",
"</table>"
],
"text/plain": [
"[('',)]"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%sql\n",
"\n",
"drop table if exists svm_training_model;\n",
"drop table if exists svm_training_model_summary;\n",
"drop table if exists svm_training_model_random;\n",
"drop table if exists svm_training_model_cv;\n",
"\n",
"select madlib.svm_classification( 'svm_train', -- input table\n",
" 'svm_training_model', -- output table\n",
" 'y', -- response\n",
" 'ARRAY[1, x1_norm, x2_norm]', --independent variables\n",
" 'gaussian', -- kernel function\n",
" 'gamma = 0.05, n_components=200', -- kernel params \n",
" NULL, -- grouping columns\n",
" 'max_iter = 200, lambda = [0.01, 0.1, 1.0, 10.0], n_folds = 4, validation_result = svm_training_model_cv' -- other params\n",
" );"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 rows affected.\n"
]
},
{
"data": {
"text/html": [
"<table>\n",
" <tr>\n",
" <th>coef</th>\n",
" <th>loss</th>\n",
" <th>norm_of_gradient</th>\n",
" <th>num_iterations</th>\n",
" <th>num_rows_processed</th>\n",
" <th>num_rows_skipped</th>\n",
" <th>dep_var_mapping</th>\n",
" </tr>\n",
" <tr>\n",
" <td>[-0.247638001187006, -0.0878202315632783, 0.142027045804666, -0.298534161845242, -0.212814693754258, 0.00951936273774327, 0.0309992988764415, 0.0531029822542204, -0.269321459648847, -0.413570239051523, -0.164899619393403, -0.00399219578950107, -0.0782158838838237, 0.0552081571867629, -0.0143547265330704, 0.106642315707336, 0.125067391283005, -0.110514555096947, -0.152346894777986, -0.163901402203572, 0.147093440464267, -0.170748680715982, 0.303175600280573, -0.0454889841414594, -0.0957316690589579, 0.609071293233739, -0.0217382188015194, 0.021435805306995, -0.0204743134939781, 0.242122140191446, -0.0293204986011736, 0.0427269958094875, -0.0314478813475749, 0.10765871050169, -0.00595637092371008, 0.147616811725263, 0.0536475063891488, -0.0727492214606364, 0.19321785771905, 0.429057057862055, -2.56913867142973e-06, -0.118831074306111, 0.00104664647610515, 0.168895055982987, -0.0824613240262346, 0.250621981773729, -0.103971662179853, -0.253440562237518, 0.238287968406832, -0.504857853451738, -0.0110461444686454, -0.128578580654163, 0.0840469794489789, -0.0292783622302947, -0.124404071434733, -0.0159581452338036, 0.448947104884033, -0.0257795422013251, 0.209698448667435, 0.487960181351465, 0.19433332104364, -0.000165521866635228, -0.269382918107344, -0.141140689787238, 0.476033493315934, 0.0198336806853106, -0.024751922721905, -0.0485060422750173, -0.0883207280551508, -0.237724278284468, 0.256490095940052, 0.277624561622209, -0.176677326483865, -0.00847293285028706, 0.0081150052409867, -0.0526495728606435, -0.0217591390507141, -0.00218645551126831, -0.131994172031981, -0.132019920396717, -0.24458307681021, -0.258731599603819, -0.0253331646402694, -0.012004835152084, 0.0484590843480131, 0.113746063551968, -0.00665190835234488, 0.237089752579193, 0.0251132999744867, 0.0850659009677271, -0.00580932301551021, 0.0475269952528408, -0.0929996725409939, 0.249562200675441, -0.334322817668117, 0.133501483887465, 0.39799691520699, -0.0887330559515026, -0.0447047840707671, 0.0257248607130651, 0.00533876334085726, 0.000854839321490486, -0.0499038573036775, -0.102877635058737, -0.185760790473132, -0.0316311467103458, 0.117420466661029, -0.109726079469638, -0.210335275370236, -0.178868771714647, -0.00295782094048036, -0.0202527572739872, -0.266836141609253, -0.0292691352338796, -0.0670733297883694, -0.145119085381695, 0.0295192308263084, 0.030239622497257, 0.18748219396635, 0.0488254597535894, -0.19736914158152, 0.0244543308265674, 0.0309909149769551, 0.179165459115388, -0.0306021961150362, -0.358818847285618, 0.231028707748804, 0.00381082938607031, -0.416749569080756, 0.151427111142064, 0.115063817950119, 0.0385585643259013, -0.21391784482638, 0.0191401296893679, -0.15916630576383, -0.346249836257994, -0.136745402127452, 0.185033353628172, 0.0472385118174406, 0.195470793796848, -0.17974039677141, -0.185963662767924, -0.0812037435448062, 0.47695147228903, 0.104472669130584, 0.0490627997024866, -0.00931746247178089, -0.00641664916784256, -0.20299335091487, 0.501531095014075, 0.1824816793102, -0.16374762576661, 0.0968813401672747, -0.0776690417742163, -0.172953404261275, 0.0756395417844298, -0.178924840285484, 0.53647633154829, -0.079821096269303, -0.224373163213635, -0.0743110679927451, 0.0180641328423829, 0.18414467892906, -0.382609805094148, -0.0763127170383385, 0.0624792765323409, -0.0465983517203798, 0.0199421469578879, 0.0673817264964236, 0.164029425613712, -0.125589475624738, -0.0543498792169311, -0.253752100607004, -0.127120419445205, -0.273583597952251, 0.101482529962103, 0.0765015307153593, 0.061935361780663, -0.175540516981155, -0.268798924265087, 0.258791010430485, -0.224552659163546, -0.209888523876239, 0.0809050291560658, 0.0138355781642866, -0.00830956172228398, -0.146298306139808, -0.109653247157203, 0.00832331641595114, 0.0507631116751362, -0.116282176725908, 0.209210456898655, 0.528683527793701, 0.0303004155181999, -0.00270385056765793, -0.140364660581793, 0.138856589902468, 0.202849542329509, 0.115729641386549, 0.0900799082402619]</td>\n",
" <td>0.319005467869</td>\n",
" <td>17.9374582302</td>\n",
" <td>193</td>\n",
" <td>200</td>\n",
" <td>0</td>\n",
" <td>[0, 1]</td>\n",
" </tr>\n",
"</table>"
],
"text/plain": [
"[([-0.247638001187006, -0.0878202315632783, 0.142027045804666, -0.298534161845242, -0.212814693754258, 0.00951936273774327, 0.0309992988764415, 0.053102 ... (3702 characters truncated) ... 3527793701, 0.0303004155181999, -0.00270385056765793, -0.140364660581793, 0.138856589902468, 0.202849542329509, 0.115729641386549, 0.0900799082402619], 0.319005467869325, 17.9374582302373, 193, 200L, 0L, [0, 1])]"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%sql\n",
"SELECT * FROM svm_training_model;"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 rows affected.\n"
]
},
{
"data": {
"text/html": [
"<table>\n",
" <tr>\n",
" <th>method</th>\n",
" <th>version_number</th>\n",
" <th>source_table</th>\n",
" <th>model_table</th>\n",
" <th>dependent_varname</th>\n",
" <th>independent_varname</th>\n",
" <th>kernel_func</th>\n",
" <th>kernel_params</th>\n",
" <th>grouping_col</th>\n",
" <th>optim_params</th>\n",
" <th>reg_params</th>\n",
" <th>num_all_groups</th>\n",
" <th>num_failed_groups</th>\n",
" <th>total_rows_processed</th>\n",
" <th>total_rows_skipped</th>\n",
" </tr>\n",
" <tr>\n",
" <td>SVC</td>\n",
" <td>1.18.0</td>\n",
" <td>svm_train</td>\n",
" <td>svm_training_model</td>\n",
" <td>y</td>\n",
" <td>ARRAY[1, x1_norm, x2_norm]</td>\n",
" <td>gaussian</td>\n",
" <td>gamma=0.05, n_components=200,random_state=1, fit_intercept=False, fit_in_memory=True</td>\n",
" <td>NULL</td>\n",
" <td> init_stepsize=0.01,<br> decay_factor=0.9,<br> max_iter=200,<br> tolerance=1e-10,<br> epsilon=0.01,<br> eps_table=,<br> class_weight=<br> </td>\n",
" <td>lambda=0.01, norm=l2, n_folds=4</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>200</td>\n",
" <td>0</td>\n",
" </tr>\n",
"</table>"
],
"text/plain": [
"[(u'SVC', u'1.18.0', u'svm_train', u'svm_training_model', u'y', u'ARRAY[1, x1_norm, x2_norm]', u'gaussian', u'gamma=0.05, n_components=200,random_state=1, fit_intercept=False, fit_in_memory=True', u'NULL', u' init_stepsize=0.01,\\n decay_factor=0.9,\\n max_iter=200,\\n tolerance=1e-10,\\n epsilon=0.01,\\n eps_table=,\\n class_weight=\\n ', u'lambda=0.01, norm=l2, n_folds=4', 1, 0, 200L, 0L)]"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%sql\n",
"SELECT * FROM svm_training_model_summary;"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2 rows affected.\n"
]
},
{
"data": {
"text/html": [
"<table>\n",
" <tr>\n",
" <th>id</th>\n",
" <th>val</th>\n",
" <th>desp</th>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>[0.000282463148844145, 1.06854926775554, 1.27363439881687, 4.92113244385683, 5.88050478186476, 2.38371197270601, 0.188191753905778, 5.00152091298268, 3.30377631046135, 3.06006771362737, 1.12529045900961, 0.758882218008675, 1.03332880983786, 3.89012929340847, 1.15508552723012, 0.147184275867239, 4.73292119803055, 6.22141591433932, 2.84266048501545, 5.86361131985996, 3.73349785245437, 5.35391259938194, 5.02023603276569, 1.92263870062125, 5.04582865521354, 5.79979610045191, 2.06984375870274, 4.49860157725386, 5.1125595932414, 3.6948415588, 5.48199871084762, 5.21057744823836, 3.87618160713836, 0.187149764170324, 4.96911687373134, 3.64153982546779, 2.37682086490301, 0.556348430709138, 1.16122459858708, 1.17658817304737, 1.37582435281381, 5.43193339703686, 1.2509735695327, 4.33448602587526, 6.18745504059241, 3.42868978563389, 0.90053006577059, 2.41097073011092, 2.80994063393471, 3.5231926376193, 1.05516311673901, 2.27882562076791, 1.46645729493548, 0.99452140844911, 3.00727926851044, 3.94749212244254, 5.51466938447417, 5.17715123886572, 5.13825367783566, 6.18649291740665, 0.96833865655087, 2.05990971984947, 2.49469565894825, 4.20782614250475, 5.7275315957865, 0.957786163227338, 1.61851461822353, 2.19313164222992, 5.55153864762131, 0.468724544306662, 0.0523177658536725, 5.87370740029735, 0.992942457557997, 2.18796452486822, 1.17384357488128, 0.838217789881864, 4.18086484608486, 4.89815130280723, 2.39845975520694, 2.07846081433144, 5.7622633629935, 6.16762852438854, 1.42709324443954, 4.65758888100415, 1.53624997421429, 2.16961665896601, 1.43313733437721, 1.10214468701089, 1.8963072665068, 3.20460515814386, 3.75658049661208, 1.16924353723268, 4.98447161801809, 3.41453469854165, 2.48751983802839, 3.3989665759495, 4.98091140498618, 1.20549480819167, 1.86087056003845, 1.66575157303058, 1.57190956502974, 1.90094994236578, 1.11654038316568, 5.64057224284798, 0.510647618884324, 0.535380850105716, 0.627976217834976, 2.95421639166492, 6.08897043573016, 5.8496082299563, 0.0911732943214408, 2.79651434629772, 2.59094905333812, 0.898297257791668, 1.44524705133252, 1.31405799699107, 2.13800846763139, 2.48816377653161, 3.06659551450256, 2.06950099992229, 0.51966310610395, 2.18217803139786, 4.59735622216461, 3.16037371001673, 4.94335338830334, 4.08302613125855, 0.797715811482743, 3.18049698500494, 2.42023727747987, 4.00929166309902, 4.12727411328581, 0.409050813800684, 3.52372985039687, 1.85421986234114, 1.07237384178796, 3.67727352478736, 5.68544575109151, 5.18401736587958, 3.56424932822207, 3.69930251975251, 0.905558995890399, 0.118229449275523, 1.92162563277625, 0.126327879963781, 3.28348415913575, 3.71453945232039, 1.2748496975315, 0.752963596703114, 4.36208403398306, 0.0524333597887316, 5.17035692942627, 3.8957788518948, 3.68795488656462, 6.06426467225865, 0.799723306670559, 5.83651754450451, 2.79241217185615, 5.63681650788876, 1.42993939545295, 3.81406762686963, 5.24578644272995, 0.706335672248045, 2.96588368123095, 3.79402716767397, 5.48331836536061, 6.07976734389588, 1.43013400451938, 0.641671252300887, 4.2927675345395, 3.01345900606421, 0.656708695507617, 1.31569259436013, 5.64343434844598, 0.437270117365658, 2.24651994227664, 0.269007749137349, 4.21234916044225, 4.14664460281392, 5.53052492950746, 3.99155770784352, 2.60472214911281, 6.00494583690153, 2.55272319114478, 2.95418449419909, 4.54924786264781, 5.70031621390269, 0.429817061766178, 0.62163577580421, 4.77081931976045, 0.911539387448997, 6.05437141956147, 0.764605928886681, 0.862422957415364, 3.91603917597464, 1.49715016768542, 6.02163404564795, 3.86152789612169, 2.83780532030526, 3.97781206811536, 5.10658970250879]</td>\n",
" <td>offsets</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>[0.132244135344213, 0.0188290441940648, 0.0759280169061063, -0.0138424226185057, -0.127275168329622, -0.0834052175304927, 0.140194970184786, 0.555547509440608, 0.310368219349419, -0.466659008482937, 0.37378984585167, 0.635218649228036, -0.044772484141059, 0.0956311444482931, 0.0306365867238579, -0.182486240121873, 0.173154842810299, 0.211574820240683, 0.504518685764862, -0.030623055872928, -0.394784858455538, 0.514412891692292, -0.14178938531911, 0.579900846968879, 0.0523592195320865, -0.321270189557846, -0.301331192801743, -0.049827322216768, -0.443279828006404, -0.283818447911368, -0.340840503865306, -0.146412883755029, 0.0141681152728698, 0.671324262031851, 0.231833635673849, 0.170641816612805, -0.236188493312015, 0.0226262611991977, -0.290620126189795, 0.462235204382556, -0.605743854544914, 0.413837767959717, 0.579995603313178, 0.13428986491122, 0.356421816164379, 0.180052519082082, 0.534578352050982, -0.0326951107678858, 0.435816386365341, -0.286712217566949, -0.312118819082835, -0.234262660367544, -0.311429813824037, 0.0186954454533834, 0.0297846699928401, -0.168120082540185, -0.358165949996232, 0.28102177532168, 0.178424321071437, 0.0622614544359256, 0.247744049485646, 0.226046007108429, -0.110122632156595, 0.461834745017676, -0.0329789457142214, -0.176427096910557, 0.239571130654002, -0.529677915496423, -0.28298865821506, -0.0395873530726208, 0.421326396644337, 0.119514812533845, 0.0101884341433407, 0.142868595077961, -0.133719769172177, 0.193541846086561, -0.110852705542812, -0.931424759553294, 0.154456237284816, -0.306974473301274, -0.131282049060957, -0.150474012091915, -0.455892767031671, 0.765079279991614, 0.161255425402996, 0.0471749599460663, -0.415671285958825, -0.503550843909399, 0.0151965733804442, -0.119579127750069, 0.127051459044509, -0.187904777982327, -0.188970060996667, -0.582709458362471, -0.274367156645656, 0.375000787931538, -0.243605465058671, 0.043949279821307, 0.383644176600453, -0.167134261834375, -0.164773945376999, 0.637151067279054, -0.433367915897184, 0.186588441747244, -0.456912942816813, 0.259246041665953, 0.15424108434004, 0.0392728970031731, -0.343110718719926, -0.0294268541882204, -0.279843922789607, 0.0361877599034367, -0.485225863401553, 0.183722422027203, -0.142050388083237, 0.431945688975864, 0.235600833364962, -0.362346376723056, -0.884842083212452, -0.212181590630865, 0.1765052799849, -0.326055258438691, -0.15170878664923, -0.276802116354869, 0.0894969299269706, -0.102807274248908, 0.299313932360965, -0.331072632547347, -0.0643308792835425, -0.361277877703161, -0.136291023637762, 0.0455006792877693, 0.00440398177437728, -0.287483945574462, -0.0432768164772036, -0.516546593285565, -0.0470636117072219, 0.0907078992817221, 0.0483522337986626, 0.138759739171084, -0.274996638008537, 0.215065920794444, -0.266813721684536, -0.353629762737249, -0.0659435240219164, -0.0866898437097168, 0.0853559142555575, -0.0711831568876829, 0.277281869341317, 0.528330685504308, -0.356740574990924, 0.417790908485098, -0.0277414632871697, 0.283568802402947, 0.391793821550098, 0.142746091026354, 0.438529031307995, 0.00646835580055001, -0.154797123856729, 0.453526132176522, 0.131533289780492, 0.0731500884508895, -0.020448737800725, -0.275421546129722, -0.231387487328622, -0.0995475289268668, -0.197065158173588, -0.223679015811652, 0.403660942499776, -0.625186909391519, -0.16877388136967, -0.0964668138733549, -0.0928354415117944, -0.264963076660051, 0.172960719381249, 0.505994294134424, 0.225963310796625, 0.170889304106466, 0.174106160599899, 0.624360852285356, 0.160346475696284, 0.462308105927109, 0.25273449462572, -0.245967229057025, 0.327729736098724, 0.0754793431081872, 0.170340351717711, 0.264366316476253, 0.385185955145537, -0.155331254842125, -0.0675789410622638, -0.546082679020147, 0.00793624908654733, 0.351505964950466, 0.552348828549216, 0.258701999787712, 0.350855045552914, 0.103754233331567, -0.210273340156933, -0.199871059897868, -0.0337046127484983, 0.0784245822469115, 0.38665878245337, 0.0848726084054108, -0.0483977646308112, -0.355996152113599, 0.461896444289256, -0.187895765230453, 0.166184668098007, -0.107820534977, -0.00304819867437552, 0.635023266341618, -0.00781875792920249, -0.239138311267448, -0.321153223237872, -0.337014204401358, -0.284038867287024, 0.000926244777876378, 0.146839542789969, -0.355166822416911, -0.709855845230776, 0.503283750617628, 0.195500806734663, 0.159645355746889, -0.481160625332987, -0.56557154068071, -0.187700922136057, -0.168691148097878, 0.418820052362979, 0.774430037588443, -0.150438778252147, 0.390501542672928, 0.148639021414888, 0.244269652762172, -0.110396708975185, -0.377712401779562, -0.18207792483991, 0.00345134309728004, 0.125287119097787, 0.550317312189208, 0.173700015600382, -0.0208066776922318, -0.0410260192957425, 0.345967493564064, -0.0166744688639513, 0.0104905323871502, -0.220272706005545, 0.26581691439422, -0.441835972532662, 0.134222064953909, 0.287013976276728, -0.0260795671607153, 0.207109262403498, -0.0215055441684504, -0.0528746860503175, -0.0817421298746909, 0.169471082520247, -0.0296139197719246, 0.195540740298889, 0.0737371979600552, 0.29474125296919, -0.136153381297764, 0.413204793859033, 0.284116786900035, 0.619703869599732, 0.350236014435894, 0.0277804824016063, -0.16711058618679, -0.393574043234699, 0.0764498247366284, 0.290302682625557, -0.0115682126134999, 0.418035677769779, -0.0838289861452166, 0.5211368186373, -0.0302555124020751, 0.0737166341142905, 0.0174637385680738, -0.0459565382859647, -0.156055340994828, 0.0801145234594399, -0.135824869674618, 0.0528733909482593, 0.049565727146845, -0.776559778186625, 0.269333342182903, -0.224354216221951, -0.0271558523185276, 1.12803393722824, 0.137004686928218, 0.599838369757466, -0.307122933644324, 0.193144812423457, -0.360342437799061, -0.54196946528236, 0.270501146937042, -0.137658562578032, -0.0174811097395715, -0.0299596871864872, -0.0833457080957991, -0.0611706771760604, 0.163136804370124, -0.246001132219424, -0.44535811625812, 0.117872459515451, 0.312345332556628, 0.169329767522301, -0.0125467822879069, -0.148774628430231, 0.349096011493798, 0.115785433763387, 0.18602870091791, 0.192927274132713, -0.0480504778747779, -0.0529725966041062, -0.0293688876703205, -0.0532451603302631, -0.307711537184275, 0.0527260126850105, -0.0887495234355464, 0.598707324047928, 0.045572031423489, -0.0268525824621637, -0.458693355258742, -0.278030172704874, -0.0768132258189983, 0.163165212230398, 0.336916332825202, 0.365017271509638, -0.188093404763333, 0.409483553794121, -0.398102899214905, -0.00426184461406554, 0.172592900875089, -0.417311087175104, -0.00603287168655304, 0.348535112154675, -0.185596775092621, -0.42577262342397, -0.0769362750530846, -0.280691117323162, 0.603948074571591, -0.344486684299039, 0.0979040652963607, -0.279788155736639, -0.389853410621127, -0.0592058003013354, 0.197036917367976, -0.370063803857118, -0.102160271662755, -0.207162024946536, 0.540823634808833, -0.192411862867514, -0.187599224666466, 0.587847208666086, 0.114035443423421, -0.22622415090689, 0.333188143195427, 0.00400795172251272, -0.346702081612588, -0.271972507265894, 0.125748405193463, 0.0653867829351504, -0.333217083069341, 0.0823077768089438, 0.200164931358292, 0.0320139977312439, -0.132955627331022, 0.12306951867403, 0.117525737845351, -0.0119409712465544, 0.222811208940871, 0.000505744328220781, -0.0199803843794664, 0.207236259108325, -0.0109455167969591, -0.585757539458761, -0.474207619095636, 0.0032826568028232, -0.0953763410713086, -0.624141426438293, -0.575179714537065, 0.106656024198487, 0.287349707196232, 0.332736834160781, 0.634332725377989, 0.153487816805504, -0.0542131398139608, 0.0478918782920643, 0.127358307392469, -0.281906729395963, 0.284818813829289, -0.0348051074680784, 0.312093158494473, 0.273819472763521, 0.175993982711315, 0.0805311056771843, 0.807515869053221, -0.169507894544767, 0.119452087644684, -0.437495258354885, 0.526650591840649, -0.204595881810301, 0.0911838561578707, 0.0201246156851443, 0.164267454387258, -0.299225039298332, -0.504735239377462, -0.0297469949820887, -0.298784626198305, 0.379173434031523, -0.210441339241114, -0.539174051064514, -0.296508136958115, -0.41029265624403, 0.117912832183, 0.243290963471604, 0.175151525681741, -0.0161531447456957, -0.0136145898857994, -0.0812095627058352, -0.0359225734747263, 0.00834982013214984, -0.437737253036478, -0.211696165137502, 0.318909011896176, -0.39805573088716, -0.265321135895378, -0.664763806891539, -0.407149746861692, -0.445806004258618, -0.336284580080797, 0.785556486953091, 0.140087133201684, -0.284208691741823, 0.0569959869894547, -0.284831676313595, -0.065896756869677, 0.412286421998065, -0.531682248678345, 0.0667758720190633, -0.263595505037019, 0.0813753824434974, 0.314546590218159, -0.118549201794288, -0.0500716481842573, 0.75140252893848, 0.0658795316659679, -0.233414764668042, -0.584328698370704, 0.18397053208059, 0.220906753145137, 0.45806275392643, 0.14332947812476, 0.141313356031101, 0.446657711307886, -0.132616873024028, 0.236667507208975, -0.461196508722913, -0.0199396778827139, -0.170080480459794, 0.452036540511462, 0.0101593178144703, -0.241839298377595, 0.191052634778646, -0.567593840274848, 0.217961927344655, 0.310070209013181, 0.303922791631061, 0.317609316923216, 0.231113916392309, -0.334152812749043, -0.31494299347789, -0.804597872066824, -0.329691804201733, 0.03130875086588, -0.202226376132677, -0.353456903481123, -0.366493526773521, -0.229080777443104, -0.247441510331932, -0.0135950192849107, 0.00830953895623273, 0.2149999103936, -0.0416482376749359, 0.461581355956868, -0.125531182732272, -0.270491406704439, 0.345556306845909, -0.027667290992852, 0.133131087797908, 0.616250452457047, -0.352690170536195, -0.233108236955314, 0.0334486838015223, -0.0797104041027037, -0.289972939112216, -0.170773237402752, -0.0669902883219737, 0.0336225940225638, 0.200408811702527, 0.730197615363388, 0.072355303133454, -0.678175571132895, 0.164558732954116, -0.0552464476783697, 0.218993410224431, 0.203296671823927, -0.152034410131603, 0.348283350811747, -0.0711254255118694, -0.542144010897351, 0.430326178615882, 0.0319357206430265, 0.111687019536696, 0.00349371131472537, 0.723818628755645, -0.0562745174672215, -0.0220282719927613, -0.341773678739374, 0.129557370907779, 0.155863821187385, 0.420850077259559, -0.613738887447514, -0.0481522823709847, -0.0214449545591243, -0.066050226752726, 0.541396878653764, 0.115052988067072, 0.0909180577344296, -0.181009552882061, 0.16404894566461, 0.052190456733926, 0.224278404733828, -0.10484922989607, 0.113856698202185, -0.13131310053531, -0.219527071008641, 0.330981399642972, 0.317800358156253, 0.401134264233909, 0.101546441852298, -0.087506230736562, 0.00898649003387406, -0.0193565613757402, 0.138302812553104, -0.27092235214824, -0.432776128299165, -0.210963097693253, 0.154715981945059, 0.082959860977413, -0.388998418599331, 0.0614242947034886, -0.0786159151484874, -0.625111194230739, 0.325345769212997, -0.174048756599106, -0.224427351554686, -0.3214789420315, -0.484151511801769, 0.311083721470781, -0.167272104866828, -0.330636745009295, 0.0472395575488415, -0.187808901545839, 0.287610934387278, 0.0801304752981416, -0.26661861045216, -0.0468989528842515, 0.4903815901145, -0.124688460151329, 0.489120779374278, -0.251117527112999, -0.0698829696085002, -0.4095962003164, -0.221323693975881, -0.447732510756272, 0.459562163605195, 0.380134246616067, 0.122821530422956, -0.237576247327879, -0.121932567985834, 0.159414782017861, -0.511040343411012, 0.242698693965587, 0.862447993869263, 0.157832033882161, 0.0831067491959887, -0.142830066560511, -0.338369119722944, 0.474385859899612, -0.0806574850369048, 0.301960647753032, -0.188438993287052, -0.143863293064765, 0.434553161915615, -0.274577644487135, 0.64880218007095, 0.347559247517978, 0.146438887476848]</td>\n",
" <td>weights</td>\n",
" </tr>\n",
"</table>"
],
"text/plain": [
"[(1, [0.000282463148844145, 1.06854926775554, 1.27363439881687, 4.92113244385683, 5.88050478186476, 2.38371197270601, 0.188191753905778, 5.00152091298268, ... (3324 characters truncated) ... 6681, 0.862422957415364, 3.91603917597464, 1.49715016768542, 6.02163404564795, 3.86152789612169, 2.83780532030526, 3.97781206811536, 5.10658970250879], u'offsets'),\n",
" (1, [0.132244135344213, 0.0188290441940648, 0.0759280169061063, -0.0138424226185057, -0.127275168329622, -0.0834052175304927, 0.140194970184786, 0.5555475 ... (11509 characters truncated) ... 01960647753032, -0.188438993287052, -0.143863293064765, 0.434553161915615, -0.274577644487135, 0.64880218007095, 0.347559247517978, 0.146438887476848], u'weights')]"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%sql\n",
"SELECT * FROM svm_training_model_random;"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"4 rows affected.\n"
]
},
{
"data": {
"text/html": [
"<table>\n",
" <tr>\n",
" <th>lambda</th>\n",
" <th>mean_score</th>\n",
" <th>std_dev_score</th>\n",
" </tr>\n",
" <tr>\n",
" <td>0.01</td>\n",
" <td>0.78</td>\n",
" <td>0.0909212113132</td>\n",
" </tr>\n",
" <tr>\n",
" <td>0.1</td>\n",
" <td>0.78</td>\n",
" <td>0.0909212113132</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1.0</td>\n",
" <td>0.78</td>\n",
" <td>0.100664459137</td>\n",
" </tr>\n",
" <tr>\n",
" <td>10.0</td>\n",
" <td>0.75</td>\n",
" <td>0.0503322295685</td>\n",
" </tr>\n",
"</table>"
],
"text/plain": [
"[(Decimal('0.01'), Decimal('0.78'), Decimal('0.0909212113132')),\n",
" (Decimal('0.1'), Decimal('0.78'), Decimal('0.0909212113132')),\n",
" (Decimal('1.0'), Decimal('0.78'), Decimal('0.100664459137')),\n",
" (Decimal('10.0'), Decimal('0.75'), Decimal('0.0503322295685'))]"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%sql\n",
"SELECT * FROM svm_training_model_cv;"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 5. Training accuracy\n",
"\n",
"Predict on training data"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Done.\n",
"1 rows affected.\n"
]
},
{
"data": {
"text/html": [
"<table>\n",
" <tr>\n",
" <th>svm_predict</th>\n",
" </tr>\n",
" <tr>\n",
" <td></td>\n",
" </tr>\n",
"</table>"
],
"text/plain": [
"[('',)]"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%sql\n",
"DROP TABLE IF EXISTS training_acc_out;\n",
"\n",
"SELECT madlib.svm_predict( 'svm_training_model', -- svm model table\n",
" 'svm_train', -- predict on training input\n",
" 'id', -- id column\n",
" 'training_acc_out' -- output table\n",
" ); "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Count correct predictions"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 rows affected.\n"
]
},
{
"data": {
"text/html": [
"<table>\n",
" <tr>\n",
" <th>train_accuracy_count</th>\n",
" </tr>\n",
" <tr>\n",
" <td>189</td>\n",
" </tr>\n",
"</table>"
],
"text/plain": [
"[(189L,)]"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%sql\n",
"SELECT count(*) as train_accuracy_count from\n",
" (select svm_train.y as actual, training_acc_out.prediction as estimated \n",
" from training_acc_out inner join svm_train\n",
" on svm_train.id=training_acc_out.id) q \n",
"WHERE q.actual=q.estimated;"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Percent correct predictions"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 rows affected.\n"
]
},
{
"data": {
"text/html": [
"<table>\n",
" <tr>\n",
" <th>train_accuracy_percent</th>\n",
" </tr>\n",
" <tr>\n",
" <td>94.00</td>\n",
" </tr>\n",
"</table>"
],
"text/plain": [
"[(Decimal('94.00'),)]"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%sql\n",
"SELECT round(count(*)*100/200,2) as train_accuracy_percent from\n",
" (select svm_train.y as actual, training_acc_out.prediction as estimated \n",
" from training_acc_out inner join svm_train\n",
" on svm_train.id=training_acc_out.id) q\n",
"WHERE q.actual=q.estimated;"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plot decision boundary overlayed with training data"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Done.\n"
]
},
{
"data": {
"text/plain": [
"[]"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": [
"'Persisted grid_points'"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Done.\n"
]
},
{
"data": {
"text/plain": [
"[]"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"10000 rows affected.\n"
]
},
{
"data": {
"text/plain": [
"[]"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Predict over the decision grid for plotting\n",
"# xx, yy = np.meshgrid(np.linspace(-5, 5, 500), np.linspace(-5, 5, 500))\n",
"xx, yy = np.meshgrid(np.linspace(-5, 5, 100), np.linspace(-5, 5, 100))\n",
"grid_points = pd.DataFrame(np.c_[xx.ravel(), yy.ravel()], columns=['x1_norm', 'x2_norm'])\n",
"\n",
"%sql DROP TABLE IF EXISTS grid_points CASCADE\n",
"%sql --persist grid_points\n",
"\n",
"%sql ALTER TABLE grid_points add column X float[]\n",
"%sql update grid_points set X = array[x1_norm, x2_norm]::float[]"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Done.\n",
"1 rows affected.\n",
"10000 rows affected.\n"
]
},
{
"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": [
"# Plot the decision grid\n",
"%sql drop table if exists Z_D;\n",
"%sql SELECT madlib.svm_predict('svm_training_model', 'grid_points', 'index', 'Z_D');\n",
"Z_D = %sql SELECT decision_function from Z_D order by index\n",
"Z = np.array(Z_D)\n",
"Z = Z.reshape(xx.shape)\n",
"\n",
"plt.title(\"SVM Decision Boundary with Training Data\")\n",
"plt.contourf(xx, yy, Z, levels=[0, Z.max()], colors='blue')\n",
"plt.contourf(xx, yy, Z, levels=[Z.min(), 0], colors='green')\n",
"#plt.contourf(xx, yy, Z, levels=np.linspace(Z.min(), Z.max(), 7), cmap=plt.cm.Blues_r)\n",
"plt.scatter(training_dataset[:, 1], training_dataset[:, 2], c=training_dataset[:, 3])\n",
"plt.axis('tight')\n",
"plt.xlim((-5, 5))\n",
"plt.ylim((-5, 5))\n",
"plt.show();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 7. Test accuracy\n",
"\n",
"Predict on test data"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Done.\n",
"1 rows affected.\n"
]
},
{
"data": {
"text/html": [
"<table>\n",
" <tr>\n",
" <th>svm_predict</th>\n",
" </tr>\n",
" <tr>\n",
" <td></td>\n",
" </tr>\n",
"</table>"
],
"text/plain": [
"[('',)]"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%sql\n",
"DROP TABLE IF EXISTS svm_prediction_results;\n",
"\n",
"SELECT madlib.svm_predict( 'svm_training_model', -- svm model table\n",
" 'svm_test', -- new data table for predictor input\n",
" 'id', -- id column\n",
" 'svm_prediction_results' -- output table\n",
" ); "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Count correct predictions"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 rows affected.\n"
]
},
{
"data": {
"text/html": [
"<table>\n",
" <tr>\n",
" <th>test_accuracy_count</th>\n",
" </tr>\n",
" <tr>\n",
" <td>94</td>\n",
" </tr>\n",
"</table>"
],
"text/plain": [
"[(94L,)]"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%sql\n",
"SELECT count(*) as test_accuracy_count from\n",
" (select svm_test.y as actual, svm_prediction_results.prediction as estimated \n",
" from svm_prediction_results inner join svm_test\n",
" on svm_test.id=svm_prediction_results.id) q\n",
"WHERE q.actual=q.estimated;"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Percent correct predictions"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 rows affected.\n"
]
},
{
"data": {
"text/html": [
"<table>\n",
" <tr>\n",
" <th>test_accuracy_percent</th>\n",
" </tr>\n",
" <tr>\n",
" <td>94.00</td>\n",
" </tr>\n",
"</table>"
],
"text/plain": [
"[(Decimal('94.00'),)]"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%sql\n",
"SELECT round(count(*)*100/100,2) as test_accuracy_percent from\n",
" (select svm_test.y as actual, svm_prediction_results.prediction as estimated \n",
" from svm_prediction_results inner join svm_test\n",
" on svm_test.id=svm_prediction_results.id) q\n",
"WHERE q.actual=q.estimated;"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plot decision boundary overlayed with test data"
]
},
{
"cell_type": "code",
"execution_count": 23,
"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": [
"plt.title(\"SVM Decision Boundary with Test Data\")\n",
"plt.contourf(xx, yy, Z, levels=[0, Z.max()], colors='blue')\n",
"plt.contourf(xx, yy, Z, levels=[Z.min(), 0], colors='green')\n",
"#plt.contourf(xx, yy, Z, levels=np.linspace(Z.min(), Z.max(), 7), cmap=plt.cm.Blues_r)\n",
"plt.scatter(test_dataset[:, 1], test_dataset[:, 2], c=test_dataset[:, 3])\n",
"plt.axis('tight')\n",
"plt.xlim((-5, 5))\n",
"plt.ylim((-5, 5))\n",
"plt.show();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 8. Confusion matrix"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Done.\n",
"100 rows affected.\n",
"Done.\n",
"1 rows affected.\n",
"2 rows affected.\n"
]
},
{
"data": {
"text/html": [
"<table>\n",
" <tr>\n",
" <th>row_id</th>\n",
" <th>class</th>\n",
" <th>confusion_arr</th>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" <td>[Decimal('73'), Decimal('2')]</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>True</td>\n",
" <td>[Decimal('4'), Decimal('21')]</td>\n",
" </tr>\n",
"</table>"
],
"text/plain": [
"[(1L, False, [Decimal('73'), Decimal('2')]),\n",
" (2L, True, [Decimal('4'), Decimal('21')])]"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%sql\n",
"\n",
"drop table if exists svm_prediction_vs_actual;\n",
"create table svm_prediction_vs_actual as (\n",
"SELECT p.id, p.y::boolean as actual, g.prediction::boolean as pred\n",
"FROM svm_test p, svm_prediction_results g\n",
"WHERE p.id = g.id\n",
");\n",
"\n",
"DROP TABLE IF EXISTS svm_confusion_matrix;\n",
"SELECT madlib.confusion_matrix( 'svm_prediction_vs_actual', \n",
" 'svm_confusion_matrix', \n",
" 'pred', \n",
" 'actual');\n",
"\n",
"select * from svm_confusion_matrix;"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.16"
}
},
"nbformat": 4,
"nbformat_minor": 1
}