Multidimensional scaling (MDS)
Mix.install([
{:scholar, github: "elixir-nx/scholar", override: true},
{:kino, "~> 0.11.3", override: true},
{:kino_vega_lite, "~> 0.1.9"},
{:exla, "~> 0.6.4"},
{:tucan, "~> 0.3.0"},
{:explorer, "~> 0.7.1"},
{:req, "~> 0.4.5"},
{:nx, git: "https://github.com/elixir-nx/nx.git", sparse: "nx", override: true}
])
Setup
alias Scholar.Manifold.MDS
alias VegaLite, as: Vl
alias Explorer.DataFrame, as: DF
And let’s configure EXLA
as our default backend (where our tensors are stored) and compiler (which compiles Scholar code) across the notebook and all branched sections:
Nx.global_default_backend(EXLA.Backend)
Nx.Defn.global_default_options(compiler: EXLA)
Swiss roll
Multidimensional scaling (MDS) seeks a low-dimensional representation of the data in which the distances respect well the distances in the original high-dimensional space.
The first example demonstrating MDS will use so-called Swiss Roll dataset. It’s call as such because it resembles a popular sponge cake. Let’s have a look on this dataset.
Figure 1: Swiss Roll (Source: https://scikit-learn.org/stable/auto_examples/manifold/plot_swissroll.html) |
Because there are no good swiss roll datasets available on the Internet directly, we’ll load to tensor created swiss roll dataset with 1000 samples.
swiss_roll =
Nx.tensor([
[-8.8313152, 2.10151711, -4.45670876],
[6.15941887, 5.17977657, 2.58770188],
[10.23410953, 19.38484837, -6.29460341],
[11.60978359, 8.25325228, 5.93527204],
[-9.44716177, 4.1405192, -1.75077878],
[-9.14066212, 10.03281252, 1.49703653],
[-8.30319363, 8.17661164, 3.53076713],
[-3.50163931, 0.06305818, -10.06943069],
[-5.36417404, 9.28502669, -8.97624018],
[-5.74223798, 4.48630607, -8.68466132],
[11.51680254, 1.85733993, -4.09883143],
[-3.67908164, 6.4411102, -9.98645122],
[-7.38759241, 6.97403281, -7.00970874],
[-5.01240594, 5.82777801, 6.84732906],
[-9.34088572, 10.66496615, 0.6029048],
[-5.31263585, 13.34134448, 6.66928822],
[10.78417439, 20.0123519, -5.47919839],
[7.43646909, 7.77331775, -9.01371917],
[5.35145344, 18.18259548, 4.48193741],
[-9.47674306, 1.42425568, -1.09677707],
[5.57085789, 18.54771524, 4.10142655],
[-4.80862233, 5.3346213, 6.95886807],
[11.91401456, 12.42519895, -3.10333003],
[3.52144312, 4.79076306, -4.1197149],
[-3.88239859, 1.62842458, 7.37931694],
[4.50836922, 16.70636732, 5.58104807],
[12.50699262, 15.08508412, 2.57579946],
[1.33187579, 11.11716535, 7.56329701],
[11.94849042, 12.24028964, 5.03235914],
[-7.62193067, 13.40510227, -6.69624307],
[4.31595182, 6.04745455, -3.55837632],
[-0.47401598, 8.12957525, -10.94201811],
[-7.54759353, 13.36704012, -6.79844625],
[-2.83238685, 20.62432552, 7.70208861],
[11.02660149, 9.67867052, -5.06808249],
[4.97693483, 6.31073777, 12.83620986],
[12.54070575, 16.70115382, -0.28211401],
[-3.12322929, 14.36409155, -10.23335682],
[6.15504322, 6.17994614, 12.20604373],
[-9.46928984, 7.89309513, -1.38427241],
[-3.57353186, 20.46941371, 7.49035496],
[0.74117884, 10.16360345, -11.03776613],
[5.75830231, 20.12651737, -1.68213898],
[0.33151929, 19.54850012, -4.77026848],
[4.06279356, 9.47926784, -3.76096312],
[4.78869214, 10.34172688, -3.10600293],
[7.85635468, 6.93968359, 10.99932961],
[-3.86985637, 2.22281317, -9.89271464],
[8.19692404, 7.06896747, -8.44132047],
[0.44250408, 16.90923521, -4.78419875],
[6.3446155, 16.42643105, 0.53255482],
[6.07222961, 0.55829229, 2.89848962],
[4.19249291, 1.48283922, 5.89768184],
[-5.49908409, 14.64743159, 6.55005453],
[9.53695925, 13.44975138, -7.15522323],
[-8.93428834, 14.84191116, 2.14788096],
[11.02594346, 13.52161869, 7.1507573],
[1.63692776, 8.98139788, 7.46052236],
[4.32153517, 12.7298557, 5.77309443],
[-8.70674945, 15.37617867, 2.72063783],
[-4.81699699, 10.70378252, 6.95442742],
[5.86026776, 15.15945121, -1.45905989],
[6.44342732, 14.61781518, -9.62821188],
[12.58899959, 5.56269559, 0.34418107],
[11.89886403, 5.75441231, -3.14647192],
[10.84038438, 12.56144376, 7.47955699],
[8.22545033, 12.69229784, 10.68067914],
[-8.29320994, 7.8364129, 3.5484666],
[-6.08674638, 4.12945347, 6.12651234],
[3.74341434, 6.38150565, 13.34880751],
[4.24853793, 16.95338914, 5.84433787],
[-9.30843557, 7.95630492, -2.78160162],
[6.34476788, 13.44014924, 1.44330463],
[-8.76058105, 17.72028715, 2.59489988],
[5.63857516, 12.40441207, -10.03157055],
[-5.14799209, 12.69503064, -9.130977],
[-4.31509327, 17.38568396, 7.1998396],
[5.76534121, 20.31141789, -9.97320641],
[8.51320446, 10.27123949, 10.41535388],
[4.95945381, 14.00276241, -2.9136638],
[2.7874212, 8.18363232, 6.93225434],
[6.82948167, 13.41956201, 11.77423634],
[1.27886402, 17.65631858, 7.57970442],
[-8.07758036, 14.30406837, -6.0028668],
[4.13266509, 16.6570385, -3.70747957],
[12.5825374, 2.50703498, 0.22986054],
[-2.2605078, 11.50682434, 7.81518798],
[3.37348866, 12.04572521, 6.56291498],
[-6.49904453, 20.73956309, -8.00862441],
[4.00047908, 18.37510258, -3.80717916],
[5.98031223, 2.33735624, 3.17611432],
[6.34227329, 14.14384321, 0.50119354],
[2.73379039, 3.88664814, 6.96233845],
[11.79080211, 18.99432667, -3.44035457],
[12.08528456, 9.28169687, -2.57456403],
[2.74475645, 4.98017065, -4.48851969],
[10.80000471, 20.49884326, -5.45345469],
[-9.28620542, 11.34853999, 0.89233151],
[-6.77355445, 11.66460162, 5.52425488],
[2.76730238, 3.66446413, -10.89839044],
[-5.9174973, 9.29464305, -8.539737],
[-2.66403786, 10.18609958, 7.73982977],
[1.8803158, 9.67455061, 13.87565254],
[4.4742536, 13.94489946, -10.48412406],
[0.83245284, 15.00524786, -4.81221014],
[-1.45908722, 18.99011584, 7.90298737],
[6.34678493, 15.23879447, 0.56368875],
[6.3059199, 2.99744911, 0.15547907],
[-9.07517772, 1.61968996, 1.72252085],
[11.54373672, 11.70252553, -4.03865376],
[-1.79745436, 17.91955908, -10.67859439],
[1.98102707, 10.23384359, -4.71087471],
[-7.38878555, 13.5510619, 4.85862952],
[1.99277958, 20.74908238, -10.9957415],
[-9.4754214, 11.41981006, -1.18301902],
[4.79069647, 11.90037425, 5.26090616],
[-0.4470774, 4.45873243, 7.89788473],
[12.60587502, 10.22424953, 1.03455834],
[-3.02284231, 13.71775046, -10.27395798],
[1.89692351, 6.52916473, -4.72759871],
[-8.98162829, 2.45226941, 2.01254378],
[-8.85074596, 2.16862452, -4.40568126],
[-9.09477444, 9.10920615, 1.65725701],
[-1.59420735, 15.92413901, -10.73030283],
[3.84253976, 19.747862, 6.20639199],
[2.99588934, 3.7427977, -4.38613248],
[-7.63287559, 6.76846841, 4.55180338],
[-9.44495828, 11.30192091, -1.77793528],
[-9.3714683, 13.50778735, -2.41065506],
[-5.66214464, 7.21900098, -8.74877148],
[4.89889258, 1.06334016, 12.87287917],
[2.48047748, 9.56255577, 7.09672506],
[2.28405917, 3.0025995, -10.96557981],
[-4.91976519, 8.21809381, 6.89894202],
[-6.77264339, 6.50043151, -7.72833737],
[5.68637128, 17.834621, 3.87542805],
[-7.36919831, 2.76915445, 4.88207307],
[-4.67551326, 7.5889942, -9.44150225],
[4.61082309, 9.74047523, 5.46932658],
[2.55781647, 17.46513455, -4.55502376],
[2.54333691, 7.75362726, 7.06453858],
[-7.93896942, 9.00625301, 4.12306274],
[4.0461184, 16.86758555, -3.77346553],
[-6.11865229, 0.83166964, 6.10127456],
[-1.2958277, 1.05183285, -10.79867562],
[8.13882818, 10.71772927, -8.48856341],
[-8.6676732, 18.34670324, 2.80876248],
[-9.19093659, 10.89141337, 1.30747332],
[2.83893255, 16.62682712, 13.63964549],
[8.22365353, 7.59402792, -8.41937623],
[-9.44834484, 10.16153756, -0.25531781],
[12.46867557, 5.30573332, 2.85570706],
[-0.00738733, 18.32033424, -10.99489992],
[3.77209917, 2.0015116, -10.68876556],
[-5.77501984, 4.93348532, 6.36060111],
[4.97557715, 16.12420438, 5.02821176],
[8.3576441, 12.9549197, -8.30735835],
[-5.50944353, 20.22917632, 6.54322691],
[6.2902454, 18.84446588, 12.1239157],
[-8.82155888, 14.86681432, 2.44575791],
[3.22446319, 16.79289452, 6.66425592],
[4.75460865, 0.00877746, -3.14235018],
[0.91481478, 16.05261378, -4.81403011],
[11.19712672, 9.66134372, 6.82622795],
[-9.46768405, 0.83689931, -1.42159092],
[-5.53375621, 18.3998009, 6.52711765],
[10.96044847, 6.71630255, -5.18400692],
[10.4351764, 15.26003256, -6.01297327],
[4.18087526, 18.69528983, -3.66952153],
[6.22937585, 19.98937415, -0.2926236],
[-9.46938658, 2.11172417, -1.38190959],
[6.35393757, 4.27216985, 0.68868349],
[6.20282647, 0.38603574, 2.40642951],
[12.51159145, 10.60661689, 2.53874859],
[2.2754204, 7.7811052, -4.64043337],
[10.91956822, 4.13148501, -5.25418863],
[5.01569359, 15.80616581, -2.84629111],
[3.78456699, 17.88768735, -3.95705292],
[5.30830065, 19.72249123, -2.45758728],
[9.17003027, 16.58250053, -7.54907087],
[3.67149946, 10.54910499, 6.34340481],
[-5.68172263, 6.40012611, -8.73322022],
[2.61491996, 18.1532473, -10.92190052],
[12.29800693, 7.2092361, -1.76413294],
[2.50773863, 18.38404008, 13.72935656],
[2.25900517, 7.69168124, -4.64485463],
[-8.04833423, 10.64461678, -6.05133859],
[6.16508487, 0.57625979, -0.56846685],
[12.29762626, 14.78252085, -1.76581264],
[-8.79717701, 13.65648542, 2.50630109],
[7.23127936, 16.81039757, 11.48913947],
[6.16294153, 2.8500571, 2.57379403],
[-8.51342001, 16.81909389, -5.19360231],
[4.64255568, 7.24713667, -3.25744236],
[12.57202663, 14.81449512, 0.07383412],
[4.52682027, 3.2278555, 5.56127892],
[11.85103674, 12.62481635, 5.31396507],
[5.7433291, 10.23432855, -1.7129558],
[5.42176832, 2.52761295, -2.28632458],
[-9.45673506, 0.84492645, -0.37130913],
[11.28131752, 15.43200474, 6.65806894],
[11.25562486, 14.54476269, -4.64185679],
[5.53665318, 20.67696068, -2.09829731],
[6.24979379, 3.73527961, -0.19059094],
[6.05762713, 5.84889942, -9.83140315],
[11.34836526, 7.80851894, 6.51965563],
[4.62922328, 12.54565264, -3.27070438],
[3.88597741, 17.65496259, 6.17021748],
[6.09040706, 12.80852517, -0.83349675],
[4.98923228, 2.97183159, -2.8782543],
[4.31831015, 6.77654364, -10.53384521],
[4.30648895, 20.11727773, 5.78794618],
[2.59423262, 12.53698395, -4.54270217],
[3.95395557, 8.62692975, 6.11243484],
[-0.02429998, 7.4352724, 7.85703681],
[6.3398709, 1.58844699, 1.50746241],
[6.01869697, 16.47012319, 3.06507259],
[0.70415449, 7.7466722, -4.80654807],
[5.19192276, 4.55229095, 12.73206923],
[9.18178458, 13.32628919, 9.73366853],
[6.5502299, 8.93943139, 11.9598403],
[4.72367491, 9.6064527, -3.17478658],
[6.34581918, 14.64753812, 0.54955323],
[9.24500012, 11.79369975, 9.66393968],
[9.54218705, 18.37170203, 9.32230048],
[1.75081984, 15.02651711, 7.41840641],
[12.601052, 3.72181327, 1.3477256],
[12.51779379, 6.4347312, -0.48887104],
[4.42082809, 3.39523891, 13.08470694],
[12.43037807, 13.24812235, -1.09495397],
[11.09369122, 15.64626259, 7.02494162],
[-9.41659692, 6.77682741, -2.0676137],
[12.60580513, 10.18949219, 0.94048968],
[4.79385999, 1.62751429, 5.25709001],
[1.42409054, 19.99621531, -4.7940951],
[-5.9432868, 11.49566492, 6.23700443],
[9.84608487, 7.61662726, -6.7936431],
[-2.97012464, 20.87154095, 7.66840673],
[-3.78808993, 6.20248289, -9.93347304],
[-8.09109113, 13.5439202, 3.88812014],
[-1.94526534, 16.40543157, 7.8594572],
[3.37725903, 6.73427783, -4.20023195],
[2.18260996, 10.9808, -4.66465822],
[12.2538423, 14.17331298, -1.95224796],
[-3.58745667, 14.74504765, 7.48564561],
[6.2817215, 16.46669624, -0.00915335],
[4.60124278, 1.52827391, 5.47997853],
[-4.35618994, 14.37024175, -9.6315042],
[2.13533057, 15.40890678, 7.26044861],
[11.66390434, 5.01064442, 5.80382567],
[6.25953795, 15.03770352, 2.12531083],
[-6.97076522, 20.55338737, -7.5112793],
[5.48480022, 3.58901443, 12.5826365],
[-6.92549248, 12.20969922, -7.56199456],
[5.44653741, 16.31855163, 4.32387036],
[12.29441665, 17.75830125, 3.79029361],
[2.84603717, 2.94229036, 6.89869935],
[-1.24800989, 3.28858041, 7.9126011],
[2.56655831, 17.51901644, -4.55209358],
[-4.23407672, 8.86042395, 7.23563509],
[-9.42834435, 14.94327951, -0.03421047],
[-7.24138736, 2.7101173, -7.19317848],
[-9.19273969, 12.69473007, 1.30035888],
[-9.25063343, 20.26818152, 1.05783357],
[3.1527838, 20.68514372, -4.31424557],
[6.36074527, 17.5196472, 1.04554292],
[4.3772878, 10.34191952, -3.50546943],
[12.52915803, 7.23070999, -0.39024239],
[-3.77133484, 0.87217498, -9.94171654],
[-6.30584026, 17.99294701, 5.94813829],
[12.2693674, 8.84908718, 3.89931927],
[3.86110068, 19.64905301, 13.30585603],
[12.48585667, 5.97180791, 2.73585372],
[1.52311473, 15.68329522, 7.50055389],
[-6.61668276, 6.95179101, -7.89072957],
[5.45751823, 13.78570209, -2.22950852],
[5.57564272, 19.69873111, -2.03065558],
[-9.46772669, 10.53690656, -0.56910505],
[-9.47114535, 1.9365499, -0.65339504],
[7.21026985, 0.10135008, 11.50459741],
[6.36096027, 6.47941012, 1.01172813],
[-5.25528799, 9.10220351, -9.05521994],
[1.00409689, 11.59121384, -4.81440925],
[0.34952479, 12.79532865, -11.02173525],
[7.07135617, 5.90826433, 11.60525068],
[9.10414674, 2.12121685, -7.61610888],
[-9.13399816, 0.25393018, 1.52100015],
[4.15161677, 12.78203788, -3.69266238],
[5.10011276, 13.18989975, -2.74104088],
[-3.61799236, 1.88819289, 7.47522145],
[-6.47177577, 5.53708564, 5.80480478],
[-7.96813607, 6.14447986, 4.07925246],
[-9.46311926, 15.77750804, -0.47685411],
[10.00346835, 9.53470295, 8.74124915],
[11.72898907, 6.91332187, -3.5987422],
[5.9470408, 12.7901538, 12.32825978],
[12.26320873, 9.46255155, 3.92547593],
[-9.38822975, 4.48344336, 0.29864154],
[9.78991479, 3.22969719, -6.86155209],
[-6.30827905, 1.29334933, 5.94608448],
[12.361408, 11.64379715, -1.46748043],
[11.30324182, 7.50511035, 6.61326375],
[5.99099333, 20.22954069, 3.14584202],
[2.55340503, 6.36581665, -10.93078332],
[-8.28459554, 5.99454125, -5.64063984],
[-0.37540677, 3.32674247, 7.89258732],
[2.44500437, 16.3876331, 7.11455853],
[-3.21696928, 16.14180269, -10.19436565],
[3.10091446, 10.59185756, -4.3387045],
[-7.81614116, 5.61665964, 4.30163126],
[0.87011369, 5.12098907, -4.81321782],
[-1.37994813, 18.6569221, -10.78029786],
[5.97314654, 1.72113245, 3.19616827],
[-9.02535826, 5.11330826, -3.90236601],
[7.95426716, 7.35276076, 10.91705601],
[-7.92300608, 15.40103177, -6.25234414],
[-7.81568354, 1.55017873, 4.30227939],
[-6.52807472, 0.98103109, 5.75447049],
[5.74224614, 0.10326456, -1.71516719],
[-6.75182519, 1.59190599, 5.54536644],
[0.5991863, 4.09046489, 14.08190054],
[7.52957906, 1.40338925, 11.26278159],
[-7.9410127, 4.76624703, -6.22410593],
[0.54610649, 18.93896027, -4.79479657],
[5.71716963, 6.33811849, 3.81145832],
[3.47614624, 14.01604482, 6.48991841],
[7.09570829, 2.58574642, 11.58779908],
[11.77508873, 20.12065245, 5.52000733],
[-7.13864965, 0.63987368, 5.14613712],
[0.89565756, 4.17831196, -11.04025234],
[4.15011698, 2.12071053, -3.69383987],
[4.86894048, 17.37555409, 12.88679422],
[11.6913201, 15.43163044, -3.69219589],
[3.08433424, 1.35716429, 6.75477706],
[6.05238036, 7.36953597, -0.9531857],
[11.79590859, 19.14943813, 5.46458363],
[-4.20142934, 15.86864982, -9.71820285],
[3.73555399, 17.99281478, -3.98895873],
[9.17794322, 13.13426478, 9.73787396],
[3.9634721, 5.38358719, 6.10422933],
[7.59716226, 11.3187506, 11.20966007],
[-0.01103023, 10.57013661, 7.85537805],
[-4.51770169, 13.92496597, -9.53731381],
[-0.90475834, 19.06530699, 7.91624394],
[-6.1946827, 1.78627047, 6.04013266],
[-9.37443576, 8.35945887, 0.39441501],
[5.84155867, 3.26076758, 3.53371073],
[2.50670401, 20.35062954, -10.93729414],
[2.39628476, 15.93318147, 13.75758567],
[-3.02053692, 7.88756689, -10.27487648],
[-4.82170487, 20.88248788, 6.95192576],
[5.85884411, 5.92115656, -1.46234971],
[12.60399379, 3.93198339, 1.21795084],
[12.26568109, 7.87485496, -1.90309687],
[-8.82042808, 20.52858812, 2.44859376],
[2.3772035, 2.11304822, -4.61169746],
[0.06347708, 0.05088757, -4.72539502],
[-5.90551322, 5.82067884, -8.54985496],
[4.34659564, 12.02800538, -10.52501035],
[7.89846129, 17.33800614, -8.67762127],
[7.12876977, 14.69956143, 11.56397524],
[8.28299708, 16.80131632, -8.37018192],
[-2.19313184, 12.03371615, 7.82571806],
[-9.47534143, 9.25007197, -0.80221252],
[-5.79121753, 20.25213489, -8.64480938],
[1.64658927, 11.86884501, 13.92241276],
[12.05525654, 16.85064776, 4.69676261],
[5.80764757, 2.73570108, -9.95331037],
[6.35900294, 8.69661188, 0.82866805],
[-6.72997637, 16.21024445, 5.56644629],
[-9.46929759, 17.90890879, -1.3840838],
[-5.6947518, 16.2829144, -8.72282809],
[12.14933621, 17.26681116, 4.37109197],
[12.23583401, 7.1123822, 4.03889424],
[2.03068953, 3.49669124, -4.70029534],
[4.53077988, 5.85285972, -3.36593169],
[4.38959297, 2.78110543, 5.70480142],
[-9.07486681, 3.12246385, 1.72354229],
[5.32909709, 14.41859745, 4.51775806],
[6.02755813, 14.62919674, 3.0385062],
[-4.90210598, 15.46834082, 6.90860782],
[-0.99808115, 19.21451886, -10.85813638],
[9.20902847, 16.72393706, 9.70373876],
[11.46872605, 15.43412385, -4.2041334],
[12.34279577, 17.12224186, -1.55833575],
[-9.43790935, 15.33828436, -1.85908374],
[1.99016484, 8.11488289, -4.70896748],
[-3.83241639, 7.27475864, -9.9114869],
[2.99627921, 0.02675155, -10.85900779],
[12.33643285, 6.58530293, -1.58862717],
[6.05436989, 16.65693804, 2.9557556],
[1.05202781, 16.82225469, -11.04056566],
[-1.66199583, 19.32661758, 7.88845224],
[5.80712869, 2.13211514, -9.95355567],
[-6.2964307, 20.19366583, 5.95604802],
[-5.14501005, 6.30899751, 6.7707572],
[-5.9666599, 20.09866973, 6.21933018],
[7.50833768, 11.59772557, 11.27933456],
[2.36291408, 2.84039175, -4.61586971],
[6.1310463, 18.24281247, 2.69540916],
[-9.39227363, 7.97328725, 0.26914986],
[-9.40321575, 13.49050263, 0.18556303],
[-9.46509247, 9.16614047, -0.51417707],
[5.76390055, 18.5098781, 3.71098125],
[1.59744539, 10.63620367, -11.02433937],
[1.79854898, 6.52625605, -11.01156319],
[5.85603983, 10.37783546, 3.49905603],
[-8.50271151, 9.86210371, -5.21582292],
[6.25985428, 6.17816142, 2.12354282],
[6.15791552, 9.28390112, 2.59359896],
[11.2397899, 1.99368337, -4.67268335],
[9.38162489, 10.78751905, 9.50978695],
[5.13648602, 19.69917224, -10.24477884],
[0.28665043, 17.79842244, -11.01785707],
[1.86140801, 17.70020377, 7.37550435],
[3.83204229, 13.94018893, 6.21504835],
[11.46178071, 8.76352008, -4.21912963],
[2.43912605, 0.67611828, -4.59309238],
[11.34364384, 1.05018713, 6.52953999],
[-1.32375274, 10.33976747, 7.90979692],
[2.89460039, 11.95668048, -4.42926939],
[7.8589346, 6.8281969, -8.70774987],
[9.99859098, 6.14712165, -6.6039573],
[3.46544093, 2.75516009, 6.49765572],
[-9.47161899, 8.81006602, -0.66678511],
[10.72045337, 10.04258051, -5.58138651],
[12.03931017, 1.89335016, 4.74896161],
[10.01173798, 9.7489887, 8.73020013],
[3.99796396, 7.57771853, 6.07424541],
[-9.32683759, 9.35436205, -2.68192582],
[5.51926424, 7.23713298, -2.12780584],
[0.59878822, 16.24718722, -11.03355475],
[7.81590619, 3.76358506, 11.03285825],
[12.60505652, 8.71746935, 1.14541992],
[-9.00606252, 20.06165813, -3.96260683],
[0.35454903, 4.64864947, -4.77337996],
[-8.14689924, 12.92547141, -5.88543586],
[1.37525108, 7.4975037, 7.54955642],
[-5.47016524, 6.7296145, 6.56899967],
[5.38624612, 15.05021673, -2.34137344],
[-7.25126369, 8.45229537, -7.18105549],
[1.98976683, 0.73151342, -4.70905093],
[-9.47714535, 11.06303073, -0.94141357],
[7.27530961, 10.55097285, -9.12304797],
[-3.53097316, 0.01383815, 7.50457704],
[3.04359826, 3.98678095, 6.78025648],
[11.63679475, 18.62236351, 5.87017886],
[2.91401955, 11.868894, -10.87371853],
[5.82280496, 16.1509102, 3.57780421],
[12.60238486, 14.5760398, 1.29598465],
[0.1176621, 11.53465036, -11.00563601],
[4.83888272, 5.03822054, 5.20217929],
[-2.93194237, 15.45594742, -10.30970463],
[0.48833024, 0.46655802, -4.78917125],
[-9.24269689, 17.21720597, 1.09286587],
[9.20316205, 15.70190032, -7.51495278],
[-8.11047755, 12.99992421, -5.94759208],
[-5.56341682, 11.64913545, -8.8260334],
[0.89170045, 9.11693995, -11.04021566],
[0.8646575, 9.06777345, -4.81309017],
[-4.82983027, 4.81220433, -9.34407639],
[0.56019485, 8.48648438, 7.76174327],
[4.37026041, 7.31233976, -3.51161109],
[10.8547143, 15.24431357, 7.45493612],
[-9.47718815, 19.83729967, -1.03939175],
[-9.29031076, 13.00373561, -2.87449023],
[-6.36275192, 15.36969199, 5.89980572],
[12.60012589, 14.14331356, 0.61450063],
[5.81088842, 6.13381954, 3.60537995],
[3.87696013, 5.59306171, -3.89481542],
[11.10792913, 19.44556782, -4.92135198],
[2.86219443, 19.08417168, -4.4425404],
[-9.04903241, 4.30529595, -3.8265574],
[3.74239517, 7.85611232, -3.98455075],
[12.60357326, 12.34155331, 0.75313191],
[-9.32339508, 10.10850062, -2.70102594],
[10.59578128, 18.21811348, -5.77498426],
[-5.82897872, 0.51797505, 6.321654],
[3.52145295, 12.22948375, 6.45684404],
[6.73503903, 18.8845359, 11.83812236],
[-4.26024317, 4.42108256, 7.22418645],
[1.92345172, 7.06781192, -4.72248495],
[4.83891432, 13.95433521, -3.05124739],
[12.36657513, 11.77361769, 3.4481163],
[3.29979683, 0.09416538, 13.5000047],
[6.06021219, 19.02784327, 2.93722125],
[12.31246447, 6.38994103, -1.69951716],
[4.20787683, 3.15661216, -10.56756465],
[-3.50992086, 15.26826299, 7.51151708],
[3.67866439, 5.69096418, -4.02505182],
[4.23700065, 1.61247185, -3.62421353],
[1.27488189, 7.32462386, -11.03718705],
[10.29556247, 4.34428818, -6.21033762],
[-0.16432605, 17.50756184, -10.97937897],
[4.75209949, 7.1181983, -10.38933435],
[0.44346509, 6.10329572, -4.78430769],
[-7.63301286, 2.55616106, -6.68077377],
[-9.47498197, 8.15792291, -1.20397191],
[8.7979396, 1.59395401, 10.13686886],
[6.69524513, 2.18849218, 11.86469681],
[-6.74889247, 20.60677591, 5.54820453],
[12.16243832, 12.84567217, 4.32302805],
[6.18323611, 3.06971496, 2.49105418],
[6.01887607, 17.0489327, -1.05208758],
[3.54992646, 17.63831891, -4.10310671],
[6.08936601, 0.10844492, 2.84176066],
[-5.04920645, 0.56150948, 6.8263997],
[-9.46578573, 13.42557794, -0.52800229],
[6.12076913, 17.49023208, 2.73270283],
[-6.17954918, 3.87426946, 6.05241633],
[-8.60224837, 17.20952077, -5.00356863],
[-3.79156681, 20.79433091, 7.41341343],
[-7.51321729, 8.75562251, -6.84481511],
[1.10145608, 11.05790765, -11.04020413],
[4.56746174, 5.4577204, -3.33099388],
[6.17453501, 3.72451825, 12.19433571],
[-9.43859471, 16.81870388, -0.14025644],
[6.89462801, 6.6286802, 11.72948947],
[3.69406382, 1.40513988, -4.01538034],
[-7.34432123, 13.74035769, 4.9116108],
[-6.85639863, 5.18748609, -7.63810342],
[-7.34860447, 16.44101179, 4.90654387],
[8.29074022, 13.9049743, 10.62182902],
[5.44662705, 6.94592814, -2.24697224],
[-1.46734963, 20.11162257, -10.76045855],
[9.02392798, 19.55197246, -7.69631424],
[5.97771219, 6.5877462, -1.16650159],
[7.47988343, 12.30306392, -8.98358819],
[1.82503545, 17.38688446, 13.88708684],
[0.17767577, 2.41797825, -4.74648035],
[-1.63810091, 14.12366422, -10.71949123],
[5.88638256, 17.4340991, -9.91571993],
[12.49876229, 0.02031415, 2.6400017],
[8.51989295, 18.56741116, 10.40899947],
[0.8673597, 2.69609331, 7.69296694],
[0.34873548, 0.6232146, -4.77260547],
[4.06956032, 18.4227781, -3.75586119],
[4.29158857, 14.28829805, 13.13828865],
[-9.25933893, 17.77338568, -3.0231234],
[-3.2456347, 7.52485346, 7.59334776],
[5.21265378, 17.57705164, 4.69687797],
[3.54084664, 10.21214184, 13.41992889],
[-2.95299672, 4.10610572, 7.67273347],
[12.11884289, 1.30642208, -2.46036719],
[-9.47554847, 16.40000633, -0.81268906],
[0.92782626, 8.68732058, -11.04049778],
[3.70172911, 10.57273094, -4.01053907],
[12.3872413, 12.94397538, 3.34060489],
[6.3596338, 16.41864444, 0.85616289],
[-7.9111896, 8.23933225, -6.27076269],
[-6.26566138, 16.58858831, 5.98175358],
[3.37812941, 3.83734792, 13.47452059],
[-7.94594789, 0.70253853, 4.11263163],
[-2.7944145, 20.06634664, 7.71092918],
[-1.5540607, 20.12695528, 7.89683053],
[2.49865902, 3.01916596, -10.93839546],
[-8.36800472, 12.55981801, 3.41352341],
[5.22721792, 9.83689994, -2.57234913],
[10.47084609, 4.01465493, 8.07577536],
[3.07560641, 20.69897246, -10.84422151],
[-9.43967166, 11.18912572, -0.1521841],
[4.79579307, 14.74894143, 5.25475545],
[0.79062295, 1.97199731, -4.81074344],
[12.16699566, 11.33081205, 4.30613589],
[-3.75412428, 10.73107315, 7.42711622],
[4.32886347, 1.63803329, 5.76582894],
[-3.3013088, 16.669283, -10.15838327],
[5.45608624, 15.80270468, -2.23181256],
[5.00111016, 15.36512194, -2.86396549],
[4.93866614, 5.74507531, 12.85426572],
[-9.4234495, 17.49104976, 0.01244129],
[-6.87873729, 17.52868308, -7.61366481],
[-9.46866135, 17.5374019, -1.39928829],
[-0.90392149, 12.87036609, 7.91623464],
[6.18951066, 16.26833148, -0.4702797],
[-0.85552941, 19.37277951, 7.91554637],
[12.33187964, 2.79376583, 3.61842486],
[5.25588882, 11.04386537, -2.53244505],
[11.16860606, 16.41953337, 6.8818557],
[-6.54016179, 12.211683, 5.74354796],
[1.73961061, 12.17746339, -4.75488612],
[-0.28488445, 8.73968421, -10.96590111],
[11.7142917, 18.70734494, 5.67762732],
[3.55024469, 16.03396452, -10.74332526],
[12.60436753, 11.12709945, 0.79837264],
[6.32414558, 12.04173024, -9.69303326],
[9.37394658, 19.63008045, 9.51857862],
[-5.14641819, 18.16308386, 6.76992677],
[0.98496101, 11.49504399, -4.81446724],
[6.05594593, 18.31928124, -0.94231887],
[11.11159075, 14.042427, -4.91463133],
[6.35869106, 20.40877215, 1.15983541],
[-9.37410419, 16.86405121, -2.39295929],
[-9.47680298, 12.4590394, -1.09105948],
[-9.43862046, 6.03791649, -1.85124712],
[6.17519366, 20.20104478, 2.52439778],
[2.20009617, 18.29589992, -4.66023726],
[5.99578554, 1.65576537, -1.11715678],
[11.18317097, 3.84372312, -4.78117205],
[5.53466904, 1.61257183, 4.16820673],
[-5.2487189, 12.5521913, -9.05991653],
[4.93303926, 9.71290717, 5.08356735],
[3.74382626, 14.7536552, -3.9836268],
[3.13111586, 7.65415415, 13.55314343],
[4.66159147, 3.84270901, 5.4121466],
[2.81572649, 14.84206724, 6.91613947],
[7.10412348, 2.99496085, 11.58174949],
[-1.88592718, 3.06986314, -10.65476532],
[9.63660653, 2.61086759, -7.04183732],
[6.16582042, 6.15217363, 12.19957572],
[9.92021403, 3.94659523, 8.85116779],
[-7.5188064, 19.52724364, -6.83731373],
[-9.47728176, 13.10625841, -1.00993349],
[-3.74244014, 14.93903458, 7.43135038],
[11.39015546, 12.65765968, 6.43122135],
[4.31572789, 17.13462906, -10.53464773],
[5.24643535, 19.85979079, 12.70492389],
[5.87582192, 6.92838142, 3.4508175],
[5.95335505, 2.08095667, -1.23097851],
[-9.28522659, 1.70164748, 0.89709069],
[10.49909571, 6.27361871, -5.91971986],
[-6.78846021, 2.78309506, -7.71146331],
[9.90086175, 5.07066187, 8.8763812],
[-8.67129047, 17.78578717, 2.80071005],
[2.19086918, 5.19600509, -4.66257833],
[12.43040252, 16.94196127, 3.09788978],
[5.10029457, 19.62225802, -10.25906684],
[-8.41650557, 1.21800784, -5.38977798],
[12.57832486, 1.57968741, 1.83144584],
[3.81913271, 0.93674051, -3.93409267],
[2.91528393, 7.11641766, 13.61771334],
[1.66609636, 7.24979965, 7.44993373],
[-6.75627239, 1.48906974, 5.54105764],
[5.62326217, 20.90913604, -1.9450963],
[-5.05757277, 13.22078267, -9.19326522],
[4.61694024, 11.25573834, 5.46250247],
[-6.34412953, 16.08907921, -8.15820808],
[10.63920934, 20.68478738, 7.81290083],
[-8.16111094, 10.63996389, 3.77427726],
[-5.42201444, 17.98986971, -8.93340439],
[-9.12578158, 6.83357564, 1.55020747],
[6.88306428, 13.08051611, 11.73747302],
[6.05684674, 18.19987502, -0.93956248],
[6.28141425, 20.08377426, -0.01106354],
[-1.06500681, 9.70301364, 7.91639313],
[9.79709465, 5.34802496, -6.85292853],
[-9.22591665, 0.7652322, 1.16494521],
[5.93862884, 8.20388954, 3.2900805],
[-5.25605952, 14.1519058, 6.70413007],
[6.3837549, 5.31305765, -9.66086697],
[-9.34318851, 10.64116378, -2.58801175],
[-0.70795571, 10.45229065, -10.90781136],
[6.05630832, 1.45919688, 2.94962688],
[-1.85212118, 13.67564763, -10.6639658],
[6.22064833, 13.66297803, 2.3246352],
[-3.199839, 5.94272537, 7.60654191],
[-9.46267974, 9.94678496, -0.46890345],
[-2.00044279, 2.89967645, 7.85262463],
[0.45599332, 3.63610625, 14.09745963],
[2.41802752, 17.02242174, 13.75215548],
[5.9278506, 15.56156951, 12.33928764],
[4.93413221, 13.423613, -10.32284735],
[0.99915092, 16.35520192, 14.03054334],
[-9.32311682, 5.68672998, 0.70262972],
[-2.46486278, 20.20524868, -10.47854364],
[-3.17244161, 20.0109507, -10.21301767],
[10.29306801, 11.93640366, 8.33927129],
[-5.37675505, 6.99307973, 6.6290553],
[1.35589495, 17.78749875, 13.97482237],
[4.57628448, 1.58475759, 5.50752676],
[-3.17525198, 14.5783939, -10.21184745],
[7.09731258, 8.16235268, 11.58664653],
[12.50114725, 4.38415572, 2.62166143],
[5.29660167, 6.43599442, -2.47451684],
[-3.72491348, 14.04319513, -9.96436467],
[9.38792604, 16.87281961, -7.31953179],
[4.16077212, 12.93563346, 5.92736846],
[-5.3976888, 15.81872297, 6.61574638],
[6.18277881, 13.6931034, -0.49804191],
[-7.96057023, 8.17733191, -6.19319822],
[6.15580942, 11.286278, 2.60182253],
[5.56776118, 13.18907695, -2.04449842],
[5.95559246, 10.63665137, -1.22514796],
[-9.03053575, 15.70837466, -3.88597032],
[3.06473602, 18.33178946, -4.35535679],
[12.58280032, 14.09650402, 0.23417547],
[0.90799653, 14.40025496, -4.8139331],
[-8.06500986, 10.13458813, 3.92956857],
[6.22136812, 7.84474729, 2.32122306],
[11.04498948, 11.28130852, -5.03532394],
[6.36051762, 7.20954733, 0.90949498],
[2.6357712, 14.66611826, 7.01582793],
[11.09544351, 12.31031817, -4.94419279],
[-4.93935905, 5.77351781, -9.27261397],
[5.00971792, 4.74601751, -2.85355087],
[11.43831001, 6.63807929, 6.32713239],
[6.07283571, 15.97730192, -0.88987287],
[6.0335698, 4.67858974, 3.02026837],
[1.28431482, 4.2938609, 13.98675865],
[-2.27992619, 11.96177583, 7.81204479],
[1.18143677, 20.73034349, -4.81026869],
[6.43961185, 7.68935974, 12.03065569],
[0.23839815, 19.10432274, 7.81987179],
[-6.51512802, 16.30336814, -7.99273038],
[-8.31391581, 16.98680447, -5.58635483],
[9.06033909, 8.62488821, 9.86490498],
[-9.47625216, 0.4635807, -0.85402702],
[4.02145845, 17.62702022, 6.05360022],
[8.16548244, 0.88843843, -8.46696497],
[-8.9838694, 10.13967428, 2.00596379],
[-0.83623931, 2.35037183, -10.88684357],
[2.78976271, 0.4273365, 6.93092751],
[-7.40749902, 8.41097489, 4.83607613],
[-4.07236922, 10.39055184, -9.78791913],
[-6.20607875, 3.56672804, -8.2863697],
[1.35033842, 5.84902076, -4.80029411],
[5.83151255, 3.82552406, -1.52448351],
[-8.28483628, 11.70322644, -5.64019737],
[2.99787415, 6.23336687, -10.85871631],
[2.17921721, 19.50976176, 7.24081747],
[-9.38784164, 2.97615214, -2.29679281],
[5.96390174, 5.99667829, 3.22174855],
[-8.04949257, 13.81871622, 3.9539914],
[11.28454038, 17.42551197, -4.58499959],
[0.5921885, 16.43592456, -11.03331483],
[-2.09286511, 9.76988448, 7.84031106],
[-7.56980225, 10.91098349, 4.63380879],
[6.70242802, 2.11246651, -9.48109822],
[11.97525385, 7.1122447, 4.95114575],
[-1.853731, 2.44455543, 7.86993848],
[12.60589483, 14.64181732, 0.96656689],
[5.09490443, 14.59220534, -2.74768404],
[-0.22053996, 0.21078255, -10.97326308],
[-7.56082812, 19.15814931, -6.78044607],
[2.00301756, 13.8367927, 13.84943815],
[-5.51732243, 19.33516012, 6.5380196],
[0.77454046, 17.09259726, -4.81008202],
[11.88357976, 7.05959255, 5.22223515],
[12.10322728, 15.80150215, 4.53472121],
[9.26921032, 16.18634071, -7.44611168],
[-9.4661205, 16.94277537, -0.53482799],
[-6.46176534, 17.08161524, 5.81366242],
[5.82307852, 15.52884317, -1.54327674],
[-3.48058838, 10.45205717, 7.52108215],
[3.6106127, 6.64516035, 6.39017315],
[1.59031817, 13.02416839, -4.77600803],
[4.20132619, 5.81720564, -10.56952623],
[5.57424669, 6.58946441, -2.03311391],
[-7.78475074, 4.11542664, 4.34580707],
[-2.91347949, 7.7876348, -10.31684812],
[0.54947172, 11.25606715, 7.76390739],
[11.18817476, 15.84956135, 6.84375884],
[5.77607797, 4.77319603, -1.64495333],
[12.54244574, 5.85757716, 2.26213447],
[1.3151522, 11.24810046, -11.03609724],
[6.35285163, 10.44839605, 1.31060098],
[6.1728297, 19.3850004, 2.53405652],
[-4.03095697, 7.1572094, 7.32090959],
[5.65572309, 4.4004285, 3.93744533],
[12.15472852, 11.65721866, 4.35139945],
[12.2649096, 19.40163358, -1.90632692],
[1.61127087, 20.69977191, 7.46972463],
[-4.30383035, 12.89401082, 7.2048776],
[5.89220996, 9.32936465, -1.38377349],
[-8.66797021, 8.55688838, 2.80810209],
[-6.06824121, 12.63313092, -8.40976077],
[6.32716094, 8.21372886, 1.64536444],
[4.6702708, 20.51725842, 12.97689368],
[3.61089891, 1.28044345, 6.38995569],
[3.7491159, 17.69158421, 6.28228048],
[11.51609826, 8.88434517, 6.15369484],
[1.61567566, 17.08598593, -11.02333218],
[5.46987073, 3.68405937, -10.10637165],
[2.80336154, 16.46977888, 6.92319941],
[-1.84757928, 3.74639429, -10.66519292],
[-3.67775637, 12.69670072, 7.45443219],
[12.57236122, 4.48004318, 0.07838943],
[4.52766414, 14.64131342, -10.46652292],
[0.45728431, 4.12921238, 14.09732598],
[-3.48669783, 0.51691372, 7.51909994],
[-6.72289977, 3.39064286, -7.78091197],
[2.2685462, 2.74231692, -10.96738138],
[-8.48742605, 1.81028308, 3.18593572],
[-1.49512168, 2.46051283, 7.90078523],
[6.34239074, 1.45029468, 1.47550467],
[3.6809035, 14.13394809, 13.3711321],
[3.34173768, 4.28502893, -10.79028548],
[7.6600934, 12.73571569, 11.15956488],
[6.23874165, 10.48190969, -0.24692683],
[7.82081145, 13.93686441, -8.73655807],
[9.4114013, 18.36473565, -7.29405697],
[-7.20874646, 10.44706769, -7.2329754],
[-8.27209696, 16.90406282, 3.58559094],
[-9.04368029, 5.59278093, 1.82391426],
[2.655589, 12.13740042, -10.9158361],
[-9.39760807, 3.92064544, -2.22379997],
[0.76452381, 5.45531427, 7.71746368],
[12.60143647, 6.62935714, 0.66039499],
[12.10614689, 5.79345452, -2.50405231],
[11.96759072, 1.05526872, -2.94645934],
[4.85962149, 19.69529851, 5.17650123],
[2.665549, 8.41914546, -4.51768818],
[-9.37679259, 4.7405001, 0.37853799],
[2.85086189, 13.69305981, -4.44712134],
[-9.31459748, 0.57699202, 0.74833698],
[0.28797263, 13.84688223, 14.11382866],
[5.25792698, 19.80607923, 4.62866321],
[10.36814562, 6.70638885, 8.22965894],
[5.06194113, 13.29591228, -2.78926485],
[5.74519213, 8.77304827, -1.70914605],
[0.90307573, 14.12080951, 7.68410811],
[11.68536201, 14.70021788, 5.75055147],
[3.53317689, 16.24064654, 6.44819806],
[6.35614972, 19.12805125, 1.23692659],
[4.19013107, 20.24238803, -3.66213329],
[4.02378074, 2.6718563, 13.24447984],
[1.06633343, 18.82718163, -11.04048377],
[-8.73986013, 7.71880889, 2.64392147],
[-9.38860265, 20.82373441, -2.29125443],
[3.66363184, 16.69917135, 6.3495058],
[-9.47012158, 10.6023231, -0.62611705],
[7.50322226, 13.78849333, -8.96726925],
[2.90117132, 5.17725021, -4.42654732],
[9.95020824, 18.00163836, 8.81184046],
[-4.14922269, 7.61963527, -9.74668352],
[11.13528086, 15.31303164, 6.94603751],
[-9.34975224, 3.23567856, 0.55063758],
[5.57921356, 10.4399444, 4.08575269],
[6.15843267, 18.32898384, 2.59157293],
[2.4120058, 11.75523405, 13.75366311],
[-9.04635914, 4.22084065, 1.81544943],
[10.45356386, 13.80161056, -5.98633972],
[4.40796752, 11.08258169, 5.68604361],
[3.72575869, 11.18310085, 6.30085517],
[-3.34255814, 16.86798991, 7.56446859],
[1.67174315, 15.52183638, -4.76506206],
[3.98750217, 11.0080951, 13.25837003],
[5.0044622, 16.20853306, -2.85991582],
[-8.89589192, 13.81296773, 2.2529198],
[1.76551138, 7.73381367, -4.75074957],
[2.31853658, 12.33138393, 7.17623474],
[-7.47900512, 15.01466393, -6.89041981],
[5.82461393, 8.60363142, -1.53986838],
[-3.74746931, 1.80940914, 7.42953032],
[1.48102878, 8.062214, 7.51484426],
[12.39198912, 0.13903103, -1.31005014],
[6.22501762, 13.88620367, 2.30378269],
[1.87624155, 15.2125167, 7.3695971],
[-5.84847976, 13.44961807, -8.59758378],
[3.57680664, 9.07684902, 13.40756063],
[6.23403815, 15.34535655, -0.27009539],
[-0.0283997, 16.30207145, 7.85754462],
[-9.45532029, 11.53357657, -1.64034427],
[3.59681448, 13.41922739, 6.40063061],
[4.45391987, 20.55396369, -3.43711525],
[0.78075959, 3.2573418, -4.81034422],
[0.47311198, 2.77387042, 7.77886216],
[6.03680126, 9.54348831, -0.99987462],
[-0.18672304, 0.78150116, 7.87547339],
[2.97616419, 10.38512203, -4.39473153],
[-0.6569106, 3.51600339, 7.9096116],
[-1.02037396, 5.19592954, 7.91667739],
[2.8006065, 3.57206066, 6.92476815],
[0.58296908, 11.27885667, -4.79801226],
[-9.41908556, 10.02109474, 0.05225261],
[-7.06045336, 12.14730312, 5.23103075],
[-7.23818091, 20.75138294, 5.03474367],
[9.54433054, 1.78242614, 9.31974941],
[-2.96544787, 5.28489854, 7.66959206],
[-9.47678109, 17.4535852, -1.09318655],
[1.92079014, 3.17064829, -4.72300471],
[2.29680571, 9.30989509, -10.96408304],
[-0.89562274, 11.5732489, 7.91613766],
[6.16056055, 19.71582817, -9.77900671],
[-2.90544476, 9.89884562, -10.31994456],
[-6.103068, 3.87513355, 6.11363255],
[5.33925295, 0.44224098, -2.41216364],
[-6.46543583, 17.45931332, 5.81041782],
[10.62181766, 0.5204134, 7.84070021],
[-6.14388872, 8.77855441, 6.08113743],
[11.18969377, 3.05731189, -4.76880862],
[5.61589166, 13.40316314, -1.95856126],
[11.85155916, 19.00919151, -3.27798546],
[3.12835461, 7.7792221, 6.72682477],
[-8.18752325, 9.20184198, -5.81487252],
[5.02021859, 16.89350691, 12.81561363],
[-1.4085818, 5.7834015, -10.77388211],
[12.57724837, 15.85852768, 1.84755793],
[11.02018078, 12.48736056, 7.16130935],
[12.47065557, 13.32936423, -0.84136053],
[5.79926868, 2.36176081, 3.63195007],
[3.52338421, 13.23258192, -4.11859056],
[1.50273643, 5.9384242, 13.94913998],
[-5.17919659, 12.68524327, 6.75049211],
[6.24019288, 5.78462313, -0.23968494],
[-3.29673848, 4.53561858, -10.1603552],
[5.94696706, 8.42335455, -1.24752631],
[5.43682574, 7.07254093, 12.60772343],
[5.83603715, 20.05570828, -1.51432918],
[-9.21165711, 12.77590254, -3.23210049],
[-7.10545377, 14.45875101, 5.18245129],
[-8.30589034, 12.91679944, -5.60129365],
[8.91671755, 3.78304789, 10.01566435],
[-9.25397353, 4.60346437, 1.0428986],
[5.75202171, 13.30038507, -1.69512059],
[2.37407747, 16.45451768, 13.76309353],
[4.78227107, 16.15478589, 12.9265676],
[-4.5506191, 8.81520271, 7.08984212],
[0.95983301, 3.65733836, -4.81442809],
[4.20856222, 10.26099018, 5.88250466],
[-4.48273029, 10.51206298, 7.12246679],
[-4.38623592, 4.30524189, 7.16755271],
[-4.94497545, 10.84140858, -9.26889668],
[-3.15337977, 2.00129042, 7.6196332],
[2.32708204, 16.81850836, 7.17215977],
[6.11406143, 0.58132816, -0.75436705],
[-1.95156118, 16.97813048, -10.63656481],
[-4.63522155, 13.30046047, -9.46632649],
[6.89559337, 16.08113297, 11.72882219],
[2.60547148, 20.95452597, 7.03197819],
[11.96224339, 19.10529238, 4.99085171],
[-9.4772763, 10.93974307, -0.97608829],
[1.83017627, 16.44522632, -11.00922031],
[2.94455372, 11.63343377, 6.84068353],
[3.63314369, 18.50448852, -4.05321835],
[-5.73007393, 16.44690031, -8.69448192],
[0.28104078, 19.42323864, 14.11446032],
[10.03609414, 6.73687564, 8.69751784],
[5.24059175, 2.50383401, -2.55382496],
[-9.47426022, 12.70793063, -1.23445033],
[10.84103024, 0.48800361, -5.38605633],
[6.31362165, 7.66723108, 1.76575821],
[11.98365616, 12.69803211, 4.9252699],
[3.69710942, 3.97615552, 6.32342537],
[-9.43658231, 13.44263299, -1.87352076],
[1.3893681, 16.41538043, -4.79715323],
[12.45403973, 3.60403513, 2.95193129],
[6.34587712, 17.09102444, 0.55038829],
[-8.43812877, 12.96946242, -5.34693923],
[-8.32793578, 8.68041905, 3.48649454],
[-2.56860996, 2.96179631, 7.75956508],
[6.35161696, 13.24838702, 0.6430925],
[3.35921256, 14.922693, 6.57285694],
[2.91332736, 12.70367062, -4.42148382],
[2.12477287, 19.31235662, -4.67881007],
[4.98259723, 11.42409861, 5.01896571],
[6.28307295, 10.33002964, -0.00070569],
[4.13042193, 10.05683455, 5.9554379],
[4.57384431, 7.04109692, -3.32484941],
[0.00707521, 2.68084339, 7.8530775],
[-9.17843827, 7.48937662, 1.35614938],
[-3.87616772, 19.79081681, 7.38169477],
[2.56923907, 7.48151936, 7.05105578],
[-6.08311141, 10.1165004, -8.39666201],
[-9.09121543, 12.09778042, -3.68576978],
[-0.61306988, 8.92723948, 7.90762607],
[-2.4380857, 18.25407482, 7.78463196],
[5.43508502, 2.54775681, -10.12139265],
[11.68723835, 8.6986158, -3.7021906],
[9.85092052, 4.11975947, 8.94087536],
[5.05006632, 8.46914232, -2.80405123],
[6.04706331, 17.03691486, 2.9786743],
[0.44733292, 19.90373177, -4.78474409],
[2.72799771, 14.76401771, -4.4948139],
[1.27950318, 17.33199782, -4.80519287],
[11.85132612, 14.78501498, 5.31315893],
[9.97911072, 15.31811261, 8.77365454],
[4.55891885, 12.06777708, -10.45608692],
[10.9408185, 4.79416889, 7.30434388],
[5.38308599, 9.6637121, -2.34620525],
[8.02985923, 20.72195231, -8.57553242],
[7.4150793, 7.39107389, 11.35121],
[-3.52196407, 10.45529604, 7.50755464],
[-9.44620147, 7.04982356, -1.76273218],
[9.38340826, 8.4251251, -7.3244173],
[2.55860699, 16.24099748, -10.93004566],
[0.2326738, 18.42587479, 14.11877161],
[-9.401443, 13.48065195, -2.19391115],
[-7.62198324, 3.08572018, 4.56610795],
[-9.36039132, 11.82283746, -2.48268759],
[6.3609914, 0.20873186, 1.0007836],
[8.31257343, 13.25950889, -8.3454169],
[5.74292616, 13.38404266, -1.71377887],
[1.85450172, 19.1407703, -11.0073566],
[3.43440484, 15.38210781, -4.16902115],
[4.68187389, 17.80879432, -3.21780624],
[4.37413777, 12.38342191, 5.72047255],
[8.37687345, 5.71583271, -8.2910022],
[-8.92912508, 3.51695361, -4.1905712],
[5.45210322, 2.34019079, -2.23820856],
[5.14312669, 0.37008062, 12.7561125],
[-9.42951441, 20.93101766, -0.04570735],
[-5.33917271, 6.75316158, 6.65273389],
[5.75121537, 19.01304607, -1.69678142],
[10.28897652, 12.06908724, -6.2194425],
[-2.05223603, 15.17399051, 7.84585835],
[-1.42016368, 2.90483486, -10.77126387],
[-6.73512703, 9.31084134, -7.76805775],
[12.43958974, 9.51776908, 3.04242137],
[11.19924714, 17.51695551, 6.82206591]
])
Now we will call MDS.fit/1
on our dataset:
key = Nx.Random.key(42)
embedding = MDS.fit(swiss_roll, key: key)
Extract only embedded data from struct
embedded_data = embedding.embedding
Now we will plot the resulting embedded swiss roll
embedded_data =
embedded_data
|> Nx.as_type(:f64)
|> DF.new()
|> DF.rename(["x coordinate", "y coordinate"])
Tucan.scatter(embedded_data, "x coordinate", "y coordinate", filled: true)
|> Tucan.set_size(500, 500)
|> Tucan.set_title("Scatterplot showing embedded Swiss roll data set", offset: 20)
As we see, MDS collapsed one dimension and what we see is similar to a cross section of the original dataset.
Digits dataset
In the next section we change dataset to Digits dataset. It consists of almost 1800 8x8 images with digits.
digits_url =
"https://github.com/scikit-learn/scikit-learn/raw/main/sklearn/datasets/data/digits.csv.gz"
image_width = 8
image_height = 8
data =
Req.get!(digits_url).body
df_data = DF.load_csv!(data, delimiter: ",", header: false)
labels = DF.select(df_data, "column_65") |> DF.rename(["labels"])
digits_data = Nx.stack(df_data, axis: 1)
# remove labels from data
digits_data = digits_data[[.., 0..(image_width * image_height - 1)]]
labels
Let’s look how one of the images look like
image =
Nx.reshape(digits_data[[1234, ..]], {image_height, image_width})
|> Nx.as_type({:u, 8})
Tucan.imshow(image, width: 200, height: 200, color_scheme: :greys, reverse: true)
embedding = MDS.fit(digits_data, key: key)
embedded_data = embedding.embedding
As we can observe, digits with the same label are embedded close to each other. The most problematic label is 5 which is similar to 9 and some samples lie close to each other.
embedded_data =
embedded_data
|> Nx.as_type(:f64)
|> DF.new()
|> DF.rename(["x coordinate", "y coordinate"])
embedded_data = DF.concat_columns([embedded_data, labels])
Tucan.scatter(embedded_data, "x coordinate", "y coordinate", filled: true, color_by: "labels")
|> Tucan.set_size(500, 500)
|> Tucan.Scale.set_color_scheme(:paired)
|> Tucan.set_title("Scatterplot showing embedded Digits data set", offset: 20)