1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
| #include <cfloat>
| #include <cmath>
| #include <cstdlib>
| #include <cstdio>
| #include <cstring>
| #include <ctime>
| #include <iostream>
|
| #include "tsne.h"
|
| // Function that runs the Barnes-Hut implementation of t-SNE
| // simulate input data from code, print result to console
| // 3 dims ---> 2 dims for this test
| int main() {
|
| // Define some variables
| int origN = 8, N = 8, D = 3, no_dims = 2, max_iter = 1000;
| double perplexity = 2, theta = 0.5;
| int rand_seed = -1;
| double data[] = {100, 23.9, 12,
| 45.2, 46.9, 10,
| 201, 44.8, 30,
| 201, 40.2, 32,
| 101, 7.8, 33,
| 21, 4, 35,
| 441, 4.8, 36,
| 2.1, 32.4, 56};
|
| N = origN;
|
| // Now fire up the SNE implementation
| double* Y = (double*) malloc(N * no_dims * sizeof(double));
| if(Y == NULL) { printf("Memory allocation failed!\n"); exit(1); }
|
| // data: input high dims of features, N * D
| // Y: output low dims of features, N * no_dims
| TSNE::run(data, N, D, Y, no_dims, perplexity, theta, rand_seed, false, max_iter, 250, 250);
|
| // Print the results
| for (int i = 0; i < N; i++) {
| /* code */
| std::cout << Y[i] << "," << Y[i+1] << std::endl;
| }
|
| // you can display result on 2D screen here
|
| // Clean up the memory
| free(Y); Y = NULL;
| }
|
|