168 lines
24 KiB
C
168 lines
24 KiB
C
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <math.h>
|
|
|
|
#define N_FEATURES 6
|
|
#define N_CLASSES 5
|
|
#define N_VECTORS 289
|
|
#define N_ROWS 5
|
|
#define N_COEFFICIENTS 4
|
|
#define N_INTERCEPTS 10
|
|
#define KERNEL_TYPE 'l'
|
|
#define KERNEL_GAMMA 0.02
|
|
#define KERNEL_COEF 0.0
|
|
#define KERNEL_DEGREE 3
|
|
|
|
double vectors[289][6] = {{25.0, 77.0, 225.0, 217.0, 123.0, 157.0}, {16.0, 66.0, 169.0, 161.0, 131.0, 143.0}, {15.0, 70.0, 166.0, 155.0, 132.0, 143.0}, {18.0, 55.0, 184.0, 178.0, 130.0, 142.0}, {170.0, 69.0, 169.0, 144.0, 148.0, 126.0}, {172.0, 77.0, 144.0, 120.0, 147.0, 129.0}, {167.0, 51.0, 166.0, 150.0, 142.0, 125.0}, {169.0, 63.0, 172.0, 150.0, 146.0, 126.0}, {168.0, 64.0, 148.0, 129.0, 145.0, 125.0}, {166.0, 87.0, 152.0, 124.0, 153.0, 123.0}, {165.0, 80.0, 176.0, 146.0, 154.0, 122.0}, {167.0, 90.0, 136.0, 110.0, 151.0, 124.0}, {165.0, 81.0, 137.0, 114.0, 148.0, 123.0}, {164.0, 78.0, 167.0, 139.0, 152.0, 122.0}, {165.0, 86.0, 149.0, 122.0, 152.0, 122.0}, {166.0, 86.0, 152.0, 124.0, 152.0, 123.0}, {163.0, 83.0, 157.0, 129.0, 152.0, 121.0}, {165.0, 87.0, 143.0, 117.0, 151.0, 123.0}, {164.0, 66.0, 162.0, 141.0, 147.0, 122.0}, {164.0, 78.0, 183.0, 151.0, 154.0, 121.0}, {165.0, 76.0, 163.0, 137.0, 151.0, 122.0}, {164.0, 78.0, 160.0, 134.0, 151.0, 121.0}, {166.0, 90.0, 140.0, 114.0, 151.0, 123.0}, {165.0, 80.0, 170.0, 141.0, 153.0, 122.0}, {167.0, 90.0, 135.0, 109.0, 151.0, 124.0}, {164.0, 83.0, 155.0, 128.0, 152.0, 121.0}, {164.0, 74.0, 163.0, 138.0, 151.0, 122.0}, {166.0, 90.0, 139.0, 112.0, 151.0, 124.0}, {164.0, 78.0, 148.0, 125.0, 150.0, 122.0}, {167.0, 91.0, 137.0, 110.0, 151.0, 124.0}, {164.0, 81.0, 151.0, 125.0, 151.0, 122.0}, {167.0, 93.0, 137.0, 110.0, 152.0, 124.0}, {166.0, 62.0, 141.0, 124.0, 144.0, 124.0}, {165.0, 85.0, 154.0, 126.0, 152.0, 122.0}, {165.0, 78.0, 159.0, 133.0, 151.0, 122.0}, {164.0, 72.0, 151.0, 129.0, 148.0, 122.0}, {166.0, 84.0, 155.0, 127.0, 152.0, 123.0}, {164.0, 74.0, 166.0, 140.0, 151.0, 122.0}, {166.0, 87.0, 152.0, 124.0, 152.0, 123.0}, {167.0, 91.0, 129.0, 104.0, 150.0, 124.0}, {166.0, 91.0, 150.0, 121.0, 153.0, 124.0}, {165.0, 88.0, 143.0, 116.0, 152.0, 122.0}, {163.0, 76.0, 159.0, 134.0, 151.0, 121.0}, {164.0, 74.0, 164.0, 139.0, 151.0, 122.0}, {165.0, 79.0, 179.0, 148.0, 154.0, 122.0}, {166.0, 92.0, 140.0, 112.0, 152.0, 124.0}, {166.0, 63.0, 171.0, 149.0, 147.0, 124.0}, {166.0, 87.0, 162.0, 132.0, 154.0, 123.0}, {166.0, 85.0, 155.0, 127.0, 152.0, 123.0}, {166.0, 86.0, 155.0, 127.0, 152.0, 123.0}, {167.0, 93.0, 135.0, 109.0, 151.0, 124.0}, {167.0, 91.0, 135.0, 109.0, 151.0, 124.0}, {164.0, 87.0, 136.0, 111.0, 150.0, 122.0}, {167.0, 90.0, 136.0, 110.0, 151.0, 124.0}, {167.0, 91.0, 132.0, 106.0, 150.0, 124.0}, {164.0, 85.0, 149.0, 122.0, 152.0, 122.0}, {166.0, 91.0, 140.0, 113.0, 152.0, 124.0}, {165.0, 87.0, 143.0, 117.0, 151.0, 122.0}, {167.0, 92.0, 139.0, 111.0, 152.0, 124.0}, {167.0, 93.0, 132.0, 106.0, 151.0, 124.0}, {169.0, 79.0, 154.0, 128.0, 149.0, 126.0}, {166.0, 89.0, 144.0, 117.0, 152.0, 123.0}, {165.0, 83.0, 157.0, 129.0, 152.0, 123.0}, {166.0, 87.0, 157.0, 128.0, 153.0, 123.0}, {163.0, 74.0, 164.0, 139.0, 151.0, 120.0}, {165.0, 79.0, 165.0, 138.0, 152.0, 122.0}, {164.0, 80.0, 155.0, 129.0, 151.0, 122.0}, {165.0, 84.0, 152.0, 125.0, 152.0, 122.0}, {164.0, 79.0, 149.0, 125.0, 150.0, 122.0}, {166.0, 86.0, 159.0, 129.0, 153.0, 123.0}, {166.0, 87.0, 145.0, 118.0, 152.0, 123.0}, {164.0, 90.0, 142.0, 115.0, 152.0, 122.0}, {163.0, 83.0, 167.0, 137.0, 155.0, 119.0}, {164.0, 84.0, 135.0, 112.0, 150.0, 122.0}, {166.0, 90.0, 141.0, 114.0, 152.0, 123.0}, {164.0, 71.0, 166.0, 142.0, 150.0, 122.0}, {164.0, 92.0, 157.0, 126.0, 155.0, 120.0}, {164.0, 93.0, 155.0, 124.0, 155.0, 121.0}, {166.0, 88.0, 145.0, 118.0, 152.0, 123.0}, {164.0, 91.0, 153.0, 123.0, 154.0, 121.0}, {166.0, 92.0, 149.0, 119.0, 153.0, 123.0}, {164.0, 96.0, 140.0, 111.0, 153.0, 121.0}, {165.0, 73.0, 137.0, 117.0, 147.0, 123.0}, {162.0, 67.0, 176.0, 151.0, 150.0, 120.0}, {164.0, 88.0, 148.0, 120.0, 153.0, 121.0}, {163.0, 91.0, 140.0, 114.0, 153.0, 121.0}, {164.0, 93.0, 155.0, 124.0, 155.0, 120.0}, {162.0, 91.0, 156.0, 126.0, 155.0, 119.0}, {164.0, 94.0, 138.0, 111.0, 153.0, 121.0}, {163.0, 83.0, 152.0, 126.0, 152.0, 121.0}, {163.0, 94.0, 156.0, 124.0, 155.0, 120.0}, {166.0, 93.0, 140.0, 113.0, 152.0, 123.0}, {162.0, 82.0, 183.0, 150.0, 156.0, 118.0}, {164.0, 93.0, 147.0, 118.0, 154.0, 121.0}, {163.0, 84.0, 165.0, 135.0, 154.0, 119.0}, {163.0, 92.0, 157.0, 126.0, 156.0, 120.0}, {164.0, 94.0, 154.0, 123.0, 155.0, 120.0}, {162.0, 75.0, 154.0, 131.0, 150.0, 120.0}, {165.0, 91.0, 134.0, 109.0, 151.0, 122.0}, {164.0, 91.0, 144.0, 116.0, 153.0, 122.0}, {162.0, 83.0, 185.0, 151.0, 157.0, 118.0}, {166.0, 88.0, 149.0, 121.0, 152.0, 123.0}, {166.0, 87.0, 157.0, 128.0, 153.0, 123.0}, {164.0, 73.0, 156.0, 133.0, 150.0, 122.0}, {166.0, 90.0, 138.0, 112.0, 151.0, 123.0}, {165.0, 96.0, 152.0, 120.0, 155.0, 121.0}, {166.0, 89.0, 149.0, 121.0, 152.0, 123.0}, {163.0, 89.0, 146.0, 118.0, 153.0, 120.0}, {166.0, 91.0, 155.0, 124.0, 154.0, 123.0}, {165.0, 92.0, 134.0, 108.0, 151.0, 122.0}, {164.0, 96.0, 142.0, 113.0, 154.0, 121.0}, {164.0, 89.0, 149.0, 121.0, 153.0, 121.0}, {166.0, 84.0, 144.0, 119.0, 150.0, 123.0}, {165.0, 83.0, 134.0, 111.0, 149.0, 123.0}, {166.0, 86.0, 154.0, 126.0, 152.0, 123.0}, {164.0, 74.0, 151.0, 128.0, 149.0, 122.0}, {162.0, 84.0, 175.0, 143.0, 156.0, 118.0}, {166.0, 91.0, 141.0, 114.0, 152.0, 123.0}, {165.0, 79.0, 161.0, 134.0, 152.0, 122.0}, {165.0, 84.0, 160.0, 131.0, 153.0, 122.0}, {164.0, 94.0, 154.0, 123.0, 155.0, 121.0}, {164.0, 92.0, 153.0, 123.0, 154.0, 121.0}, {164.0, 77.0, 182.0, 152.0, 154.0, 121.0}, {166.0, 88.0, 140.0, 114.0, 151.0, 123.0}, {163.0, 90.0, 152.0, 122.0, 154.0, 120.0}, {162.0, 87.0, 152.0, 124.0, 153.0, 120.0}, {165.0, 88.0, 145.0, 118.0, 152.0, 123.0}, {163.0, 82.0, 155.0, 129.0, 152.0, 120.0}, {163.0, 89.0, 157.0, 128.0, 155.0, 120.0}, {164.0, 88.0, 151.0, 123.0, 153.0, 121.0}, {165.0, 85.0, 138.0, 114.0, 150.0, 123.0}, {165.0, 88.0, 148.0, 120.0, 152.0, 123.0}, {164.0, 96.0, 154.0, 122.0, 156.0, 121.0}, {162.0, 86.0, 167.0, 136.0, 155.0, 119.0}, {165.0, 86.0, 145.0, 118.0, 151.0, 123.0}, {166.0, 93.0, 147.0, 118.0, 153.0, 123.0}, {166.0, 89.0, 145.0, 118.0, 152.0, 123.0}, {166.0, 85.0, 147.0, 120.0, 151.0, 123.0}, {165.0, 83.0, 156.0, 129.0, 152.0, 122.0}, {165.0, 95.0, 134.0, 107.0, 152.0, 122.0}, {164.0, 78.0, 145.0, 122.0, 149.0, 122.0}, {162.0, 82.0, 169.0, 139.0, 155.0, 119.0}, {166.0, 90.0, 146.0, 118.0, 153.0, 123.0}, {164.0, 95.0, 150.0, 119.0, 155.0, 121.0}, {165.0, 83.0, 138.0, 114.0, 149.0, 123.0}, {162.0, 83.0, 175.0, 144.0, 155.0, 119.0}, {164.0, 93.0, 147.0, 118.0, 154.0, 121.0}, {162.0, 84.0, 181.0, 148.0, 156.0, 118.0}, {164.0, 73.0, 152.0, 130.0, 149.0, 122.0}, {165.0, 80.0, 153.0, 128.0, 151.0, 122.0}, {164.0, 79.0, 142.0, 119.0, 149.0, 122.0}, {164.0, 92.0, 156.0, 125.0, 155.0, 121.0}, {164.0, 73.0, 156.0, 133.0, 149.0, 122.0}, {164.0, 95.0, 154.0, 122.0, 155.0, 121.0}, {163.0, 89.0, 152.0, 124.0, 154.0, 120.0}, {166.0, 89.0, 142.0, 115.0, 152.0, 123.0}, {164.0, 94.0, 151.0, 120.0, 155.0, 121.0}, {162.0, 85.0, 171.0, 140.0, 156.0, 119.0}, {165.0, 81.0, 145.0, 121.0, 150.0, 122.0}, {162.0, 82.0, 176.0, 145.0, 155.0, 119.0}, {166.0, 89.0, 146.0, 118.0, 152.0, 123.0}, {161.0, 78.0, 151.0, 127.0, 150.0, 120.0}, {164.0, 92.0, 157.0, 126.0, 155.0, 121.0}, {165.0, 95.0, 135.0, 108.0, 152.0, 122.0}, {165.0, 93.0, 135.0, 108.0, 152.0, 122.0}, {163.0, 90.0, 155.0, 125.0, 155.0, 120.0}, {164.0, 90.0, 161.0, 130.0, 155.0, 120.0}, {165.0, 85.0, 148.0, 121.0, 151.0, 123.0}, {166.0, 88.0, 144.0, 117.0, 152.0, 123.0}, {165.0, 77.0, 157.0, 132.0, 150.0, 123.0}, {165.0, 96.0, 152.0, 120.0, 155.0, 121.0}, {166.0, 87.0, 147.0, 120.0, 152.0, 123.0}, {162.0, 84.0, 149.0, 123.0, 152.0, 120.0}, {166.0, 94.0, 152.0, 121.0, 154.0, 123.0}, {164.0, 95.0, 153.0, 122.0, 155.0, 121.0}, {163.0, 88.0, 157.0, 127.0, 154.0, 120.0}, {164.0, 94.0, 155.0, 123.0, 155.0, 121.0}, {162.0, 86.0, 155.0, 127.0, 154.0, 120.0}, {163.0, 88.0, 142.0, 116.0, 152.0, 120.0}, {165.0, 85.0, 154.0, 126.0, 152.0, 122.0}, {164.0, 78.0, 181.0, 150.0, 154.0, 121.0}, {164.0, 90.0, 151.0, 122.0, 154.0, 121.0}, {163.0, 88.0, 180.0, 146.0, 157.0, 119.0}, {166.0, 91.0, 145.0, 117.0, 152.0, 123.0}, {165.0, 87.0, 139.0, 114.0, 151.0, 123.0}, {164.0, 92.0, 137.0, 110.0, 152.0, 122.0}, {166.0, 89.0, 147.0, 119.0, 152.0, 123.0}, {164.0, 96.0, 148.0, 118.0, 155.0, 121.0}, {163.0, 90.0, 154.0, 125.0, 154.0, 120.0}, {164.0, 91.0, 151.0, 122.0, 154.0, 121.0}, {164.0, 91.0, 139.0, 113.0, 152.0, 121.0}, {163.0, 83.0, 166.0, 136.0, 155.0, 119.0}, {163.0, 91.0, 162.0, 130.0, 155.0, 120.0}, {165.0, 94.0, 136.0, 109.0, 152.0, 122.0}, {162.0, 82.0, 170.0, 140.0, 154.0, 119.0}, {167.0, 90.0, 147.0, 118.0, 152.0, 124.0}, {165.0, 89.0, 146.0, 118.0, 152.0, 123.0}, {165.0, 86.0, 147.0, 120.0, 152.0, 123.0}, {166.0, 93.0, 158.0, 125.0, 155.0, 123.0}, {164.0, 95.0, 157.0, 125.0, 156.0, 121.0}, {163.0, 92.0, 156.0, 125.0, 155.0, 120.0}, {165.0, 74.0, 168.0, 142.0, 151.0, 122.0}, {164.0, 96.0, 154.0, 122.0, 156.0, 120.0}, {166.0, 86.0, 151.0, 124.0, 152.0, 123.0}, {166.0, 90.0, 146.0, 118.0, 153.0, 123.0}, {162.0, 88.0, 154.0, 125.0, 154.0, 119.0}, {164.0, 92.0, 150.0, 120.0, 154.0, 121.0}, {164.0, 79.0, 178.0, 147.0, 154.0, 121.0}, {165.0, 92.0, 136.0, 109.0, 152.0, 122.0}, {164.0, 97.0, 147.0, 117.0, 155.0, 121.0}, {163.0, 80.0, 154.0, 129.0, 151.0, 121.0}, {163.0, 90.0, 149.0, 121.0, 154.0, 120.0}, {163.0, 87.0, 137.0, 112.0, 151.0, 121.0}, {163.0, 90.0, 148.0, 120.0, 154.0, 120.0}, {164.0, 91.0, 150.0, 120.0, 154.0, 121.0}, {164.0, 95.0, 161.0, 128.0, 156.0, 121.0}, {164.0, 95.0, 152.0, 121.0, 155.0, 121.0}, {164.0, 92.0, 156.0, 125.0, 156.0, 120.0}, {165.0, 95.0, 159.0, 126.0, 156.0, 121.0}, {164.0, 98.0, 150.0, 119.0, 156.0, 121.0}, {163.0, 88.0, 143.0, 116.0, 152.0, 121.0}, {162.0, 84.0, 177.0, 145.0, 156.0, 118.0}, {164.0, 88.0, 134.0, 109.0, 151.0, 121.0}, {164.0, 93.0, 136.0, 110.0, 152.0, 121.0}, {164.0, 95.0, 145.0, 115.0, 154.0, 121.0}, {164.0, 92.0, 144.0, 116.0, 153.0, 121.0}, {164.0, 97.0, 147.0, 116.0, 155.0, 121.0}, {163.0, 85.0, 143.0, 118.0, 151.0, 120.0}, {164.0, 93.0, 147.0, 118.0, 154.0, 121.0}, {165.0, 94.0, 161.0, 128.0, 156.0, 121.0}, {164.0, 92.0, 145.0, 117.0, 153.0, 122.0}, {162.0, 83.0, 182.0, 149.0, 156.0, 118.0}, {163.0, 91.0, 156.0, 126.0, 155.0, 120.0}, {159.0, 76.0, 160.0, 135.0, 152.0, 118.0}, {163.0, 93.0, 157.0, 126.0, 155.0, 120.0}, {161.0, 73.0, 144.0, 123.0, 148.0, 120.0}, {163.0, 90.0, 150.0, 121.0, 154.0, 120.0}, {164.0, 99.0, 144.0, 113.0, 155.0, 121.0}, {164.0, 99.0, 159.0, 125.0, 158.0, 120.0}, {164.0, 90.0, 155.0, 125.0, 154.0, 121.0}, {164.0, 94.0, 161.0, 128.0, 157.0, 120.0}, {163.0, 90.0, 141.0, 115.0, 152.0, 121.0}, {163.0, 82.0, 150.0, 124.0, 151.0, 121.0}, {164.0, 94.0, 151.0, 120.0, 155.0, 120.0}, {164.0, 96.0, 141.0, 112.0, 154.0, 121.0}, {163.0, 85.0, 145.0, 119.0, 152.0, 120.0}, {164.0, 95.0, 161.0, 128.0, 157.0, 120.0}, {163.0, 85.0, 143.0, 118.0, 151.0, 121.0}, {162.0, 80.0, 183.0, 151.0, 156.0, 118.0}, {163.0, 85.0, 140.0, 115.0, 151.0, 121.0}, {164.0, 93.0, 150.0, 120.0, 154.0, 121.0}, {162.0, 81.0, 162.0, 135.0, 153.0, 119.0}, {163.0, 89.0, 140.0, 114.0, 152.0, 121.0}, {164.0, 98.0, 150.0, 118.0, 156.0, 120.0}, {163.0, 82.0, 150.0, 124.0, 151.0, 120.0}, {163.0, 90.0, 157.0, 127.0, 154.0, 120.0}, {164.0, 93.0, 147.0, 118.0, 154.0, 121.0}, {162.0, 86.0, 180.0, 146.0, 157.0, 118.0}, {163.0, 90.0, 149.0, 121.0, 154.0, 120.0}, {163.0, 81.0, 149.0, 125.0, 151.0, 121.0}, {164.0, 93.0, 163.0, 130.0, 157.0, 120.0}, {164.0, 98.0, 147.0, 116.0, 155.0, 121.0}, {164.0, 96.0, 152.0, 120.0, 155.0, 121.0}, {163.0, 79.0, 140.0, 118.0, 149.0, 121.0}, {162.0, 62.0, 167.0, 146.0, 147.0, 121.0}, {164.0, 95.0, 160.0, 127.0, 157.0, 120.0}, {164.0, 93.0, 146.0, 117.0, 153.0, 122.0}, {164.0, 91.0, 162.0, 130.0, 155.0, 121.0}, {165.0, 94.0, 138.0, 110.0, 152.0, 122.0}, {161.0, 82.0, 189.0, 155.0, 157.0, 117.0}, {164.0, 90.0, 151.0, 122.0, 154.0, 121.0}, {164.0, 96.0, 150.0, 119.0, 155.0, 121.0}, {164.0, 94.0, 139.0, 112.0, 153.0, 121.0}, {164.0, 99.0, 147.0, 116.0, 156.0, 121.0}, {164.0, 93.0, 142.0, 114.0, 153.0, 121.0}, {164.0, 90.0, 143.0, 116.0, 152.0, 121.0}, {162.0, 81.0, 169.0, 140.0, 154.0, 119.0}, {163.0, 82.0, 182.0, 149.0, 156.0, 119.0}, {163.0, 85.0, 144.0, 119.0, 151.0, 121.0}, {164.0, 97.0, 139.0, 110.0, 154.0, 121.0}, {162.0, 82.0, 182.0, 149.0, 156.0, 119.0}, {161.0, 81.0, 165.0, 137.0, 154.0, 119.0}, {164.0, 98.0, 160.0, 126.0, 157.0, 120.0}, {162.0, 85.0, 183.0, 149.0, 157.0, 118.0}, {163.0, 92.0, 150.0, 120.0, 154.0, 120.0}, {162.0, 84.0, 183.0, 150.0, 157.0, 118.0}, {164.0, 98.0, 145.0, 114.0, 155.0, 121.0}, {159.0, 85.0, 178.0, 146.0, 157.0, 115.0}, {164.0, 91.0, 161.0, 129.0, 155.0, 121.0}};
|
|
double coefficients[4][289] = {{0.0, 5.303863409217796e-05, 0.0, 3.2031987533306565e-05, -0.0, -0.0, -8.507062162548452e-05, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -6.1004103215905536e-05, -2.6005229500498222e-05, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -8.978306877861451e-05, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -4.469871049651553e-05, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -2.9273633355066813e-05, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -1.611281487819297e-05, -0.0}, {0.0, 8.700933271640375e-05, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.6019226454576679, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.4182707997819131, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.10739220867772487, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.07625963699802994, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.011478193261904222, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.025837385136688564, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.025451885286072465, -0.0, -0.0, -0.0, -0.004493693267534602, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0}, {4.155443330044486e-06, 6.5845271719993e-05, 0.0, 1.9782353728577016e-05, 0.0, 0.017236715058642507, 0.0, 0.0, 0.02007886333995027, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 0.8853803059868012, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.13194108694972034, 1.0, 0.0, 1.0, 1.0, 0.45373807146186934, 1.0, 1.0, 1.0, 1.0, 0.8791365160430618, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -0.0, -0.0, -0.0, -1.0, -1.0, -0.0, -0.0, -1.0, -0.0, -1.0, -0.0, -1.0, -1.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.9186429696313985, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -1.0, -1.0, -1.0, -1.0, -0.0, -1.0, -0.0, -1.0, -0.0, -0.0, -0.0, -1.0, -1.0, -1.0, -1.0, -0.0, -1.0, -1.0, -1.0, -0.0, -0.0, -1.0, -1.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -1.0, -1.0, -0.0, -0.0, -1.0, -1.0, -1.0, -1.0, -1.0, -0.0, -1.0, -0.0, -1.0, -0.0, -1.0, -0.0, -0.0, -0.0, -1.0, -1.0, -0.2345374142918145, -0.0, -1.0, -0.0, -0.0, -1.0, -0.0, -0.0, -1.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -1.0, -1.0, -1.0, -0.0, -1.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.19701559651826156, -1.0, -0.0, -0.0, -1.0, -1.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -1.0, -1.0, -1.0, -1.0, -0.0, -0.0, -1.0, -0.0, -1.0, -1.0, -0.0, -0.0, -1.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.28209786832393935, -0.0, -0.0, -0.0, -0.12865353487588044, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.285580206098652, -0.0, -0.0, -0.0, -1.0, -1.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0}, {0.0, 3.557490094891483e-05, 5.451025778086047e-05, 0.0, 0.011933466598221755, 0.0, 0.0, 0.00759394301315129, 0.010418168942234034, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7288671205718867, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.9674644887265839, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.3596780893432957, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.1746100959911591, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.22950549460530395, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.9802930499497441, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.09921850572115724, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.4722062559306744, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -0.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -0.2529351815671135, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -0.20704104288253916, -1.0, -1.0, -1.0, -1.0, -0.8555352670916899, -1.0, -1.0, -0.0, -1.0}};
|
|
double intercepts[10] = {0.6932873372049008, 0.9190683270330426, 0.9360106226270763, 0.8817884226918764, -194.06165810241006, -36.21808805278927, -39.37498913615268, -166.09279044410346, -347.79908003761426, -232.45136438404728};
|
|
int weights[5] = {4, 5, 62, 138, 80};
|
|
|
|
int predict (double features[]) {
|
|
int i, j, k, d, l;
|
|
|
|
double kernels[N_VECTORS];
|
|
double kernel;
|
|
switch (KERNEL_TYPE) {
|
|
case 'l':
|
|
// <x,x'>
|
|
for (i = 0; i < N_VECTORS; i++) {
|
|
kernel = 0.;
|
|
for (j = 0; j < N_FEATURES; j++) {
|
|
kernel += vectors[i][j] * features[j];
|
|
}
|
|
kernels[i] = kernel;
|
|
}
|
|
break;
|
|
case 'p':
|
|
// (y<x,x'>+r)^d
|
|
for (i = 0; i < N_VECTORS; i++) {
|
|
kernel = 0.;
|
|
for (j = 0; j < N_FEATURES; j++) {
|
|
kernel += vectors[i][j] * features[j];
|
|
}
|
|
kernels[i] = pow((KERNEL_GAMMA * kernel) + KERNEL_COEF, KERNEL_DEGREE);
|
|
}
|
|
break;
|
|
case 'r':
|
|
// exp(-y|x-x'|^2)
|
|
for (i = 0; i < N_VECTORS; i++) {
|
|
kernel = 0.;
|
|
for (j = 0; j < N_FEATURES; j++) {
|
|
kernel += pow(vectors[i][j] - features[j], 2);
|
|
}
|
|
kernels[i] = exp(-KERNEL_GAMMA * kernel);
|
|
}
|
|
break;
|
|
case 's':
|
|
// tanh(y<x,x'>+r)
|
|
for (i = 0; i < N_VECTORS; i++) {
|
|
kernel = 0.;
|
|
for (j = 0; j < N_FEATURES; j++) {
|
|
kernel += vectors[i][j] * features[j];
|
|
}
|
|
kernels[i] = tanh((KERNEL_GAMMA * kernel) + KERNEL_COEF);
|
|
}
|
|
break;
|
|
}
|
|
|
|
int starts[N_ROWS];
|
|
int start;
|
|
for (i = 0; i < N_ROWS; i++) {
|
|
if (i != 0) {
|
|
start = 0;
|
|
for (j = 0; j < i; j++) {
|
|
start += weights[j];
|
|
}
|
|
starts[i] = start;
|
|
} else {
|
|
starts[0] = 0;
|
|
}
|
|
}
|
|
|
|
int ends[N_ROWS];
|
|
for (i = 0; i < N_ROWS; i++) {
|
|
ends[i] = weights[i] + starts[i];
|
|
}
|
|
|
|
if (N_CLASSES == 2) {
|
|
|
|
for (i = 0; i < N_VECTORS; i++) {
|
|
kernels[i] = -kernels[i];
|
|
}
|
|
|
|
double decision = 0.;
|
|
for (k = starts[1]; k < ends[1]; k++) {
|
|
decision += kernels[k] * coefficients[0][k];
|
|
}
|
|
for (k = starts[0]; k < ends[0]; k++) {
|
|
decision += kernels[k] * coefficients[0][k];
|
|
}
|
|
decision += intercepts[0];
|
|
|
|
if (decision > 0) {
|
|
return 0;
|
|
}
|
|
return 1;
|
|
|
|
}
|
|
|
|
double decisions[N_INTERCEPTS];
|
|
double tmp;
|
|
for (i = 0, d = 0, l = N_ROWS; i < l; i++) {
|
|
for (j = i + 1; j < l; j++) {
|
|
tmp = 0.;
|
|
for (k = starts[j]; k < ends[j]; k++) {
|
|
tmp += kernels[k] * coefficients[i][k];
|
|
}
|
|
for (k = starts[i]; k < ends[i]; k++) {
|
|
tmp += kernels[k] * coefficients[j - 1][k];
|
|
}
|
|
decisions[d] = tmp + intercepts[d];
|
|
d = d + 1;
|
|
}
|
|
}
|
|
|
|
int votes[N_INTERCEPTS];
|
|
for (i = 0, d = 0, l = N_ROWS; i < l; i++) {
|
|
for (j = i + 1; j < l; j++) {
|
|
votes[d] = decisions[d] > 0 ? i : j;
|
|
d = d + 1;
|
|
}
|
|
}
|
|
|
|
int amounts[N_CLASSES];
|
|
for (i = 0, l = N_CLASSES; i < l; i++) {
|
|
amounts[i] = 0;
|
|
}
|
|
for (i = 0; i < N_INTERCEPTS; i++) {
|
|
amounts[votes[i]] += 1;
|
|
}
|
|
|
|
int classVal = -1;
|
|
int classIdx = -1;
|
|
for (i = 0; i < N_CLASSES; i++) {
|
|
if (amounts[i] > classVal) {
|
|
classVal = amounts[i];
|
|
classIdx= i;
|
|
}
|
|
}
|
|
return classIdx;
|
|
|
|
}
|
|
|
|
int main(int argc, const char * argv[]) {
|
|
|
|
/* Features: */
|
|
double features[argc-1];
|
|
int i;
|
|
for (i = 1; i < argc; i++) {
|
|
features[i-1] = atof(argv[i]);
|
|
}
|
|
|
|
/* Prediction: */
|
|
printf("%d", predict(features));
|
|
return 0;
|
|
|
|
}
|