Clustering Results with Large Errors on Low-Dimension Vectors
Summary
When I use the Clustering class in faiss to cluster a number of low-dimension vectors with very distinct categories several times, I find that a certain number of clusters in the clustering results are very different from the actual clustering centers occasionally. The results are shown below. The absolute value of each dimension of the clustering centers should be in the range of [110, 120].
This error is episodic, occurring once in thousands of iterations。
The test file is attached.
Clustering Config
Dimension:8 Number of Vectors:256 Number of Clustering Centers:4
Platform
OS: Ubuntu 20.04
Faiss version: git commit, 4bfdd4324f89d62ae5c494f8b14170d073f259fc
Installed from: compiled by myself
Faiss compilation options: using MKL with compile flags
Running on:
- CPU
Interface:
- C++
Error Output
Preprocessing in 0.00 s Iteration 24 (3.57 s search 2.14 s): objective-6.53359e+06 imbalance=1.318 nsplit-0 centroids: [0] :117.000999, 118.111115, 117.055557, 117.277779, 115.833336, 117.555557, 116.722221, 120.000000 [1] :116.391891, 115.581085, 117.445946, 116.554054, 117.770271, 116.878380, 116.594597, 114.729729 [2] :-116.936981, 3.138656, -116.609253, 2.735294, -116.634460, 3.163866, -117.025215, 2.420168 [3] :117.390411, 117.082191, 116.547943, -117.472603, 117.061646, -117.143837, 117.513695, -116.691789
Test File
#include <random>
#include "faiss/Clustering.h"
#include "faiss/IndexFlat.h"
using namespace faiss;
ClusteringParameters DefaultParams() {
ClusteringParameters params;
params.niter = 25;
params.nredo = 1;
params.verbose = true;
return params;
}
template <typename VT>
std::string VectorStr(VT vec, const std::string& name) {
std::string str;
str += name + ":";
if (vec.empty()) {
str += "empty\n";
return str;
}
str += "[";
for (const auto& v : vec) {
str += std::to_string(v) + " ";
}
str += "]\n";
return str;
}
std::string FMatrixToStr(
const float* mtx,
int row,
int col,
int rowlimit = -1,
int collimit = -1) {
std::string str;
int printRows = rowlimit > 0 ? std::min(row, rowlimit) - 1 : row;
int printCols = collimit > 0 ? std::min(col, collimit) - 1 : col;
for (int i = 0; i < printRows; ++i) {
str += "[" + std::to_string(i) + "] :";
for (int j = 0; j < printCols; ++j) {
str += std::to_string(mtx[i * col + j]);
if (j < printCols - 1)
str += ", ";
}
if (printCols < col) {
str += ", ..., " + std::to_string(mtx[i * col + col - 1]);
}
str += "\n";
}
if (printRows < row) {
str += "...\n";
str += "[" + std::to_string(row - 1) + "] :";
for (int j = 0; j < printCols; ++j) {
str += std::to_string(mtx[(row - 1) * col + j]);
if (j < printCols - 1)
str += ", ";
}
if (printCols < col) {
str += "..., " + std::to_string(mtx[(row - 1) * col + col - 1]);
}
str += "\n";
}
return str;
}
Clustering* GetClustering(
int d,
int nx,
int nlist,
Index** quantizer,
const ClusteringParameters& cp = DefaultParams()) {
if (!*quantizer)
*quantizer = new IndexFlatL2(d);
Clustering* cluster = new Clustering(d, nlist, cp);
return cluster;
}
int main() {
int nRun = 10000;
for (int i = 0; i < nRun; ++i) {
const int d = 8;
int nx = 256;
int nlist = 4;
float mean = 117;
float std = 1.5;
std::default_random_engine gen;
std::uniform_int_distribution<int> dist(-3, 3);
int groups[4][2] = {{1, 1}, {-1, 1}, {-1, -1}, {1, -1}};
std::vector<float> vecs(nx * d);
for (int i = 0; i < nx; ++i) {
int idx = rand();
for (int j = 0; j < d; ++j) {
float group_mean;
group_mean = mean * groups[idx % 4][j % 2];
int std_num = dist(gen);
vecs[i * d + j] = group_mean + std_num * std;
}
}
Index* quantizer = nullptr;
Clustering* cluster = GetClustering(d, nx, nlist, &quantizer);
cluster->train(nx, vecs.data(), *quantizer);
const std::vector<float>& centroids = cluster->centroids;
auto precisionEqual = [&](float a, float b) {
return fabs(fabs(a) - fabs(b)) <= std * 2.;
};
for (const float& a : centroids) {
if (!precisionEqual(a, mean)) {
std::fprintf(
stdout,
"%s\n",
FMatrixToStr(vecs.data(), nx, d).data());
std::fprintf(
stdout,
"centroids: \n%s",
FMatrixToStr(centroids.data(), nlist, d).c_str());
delete cluster;
delete quantizer;
return -1;
}
}
delete cluster;
delete quantizer;
}
return 0;
}
Do you have the log of the kmeans run (with verbose=true) ?
Do you have the log of the kmeans run (with verbose=true) ?
Clustering 256 points in 8D to 4 clusters, redo 1 times, 25 iterations
Preprocessing in 0.00 s
Iteration 0 (0.00 s, search 0.00 s): objective=1.25164e+07 imbalance=1.178 nsplit=0
Iteration 1 (0.00 s, search 0.00 s): objective=6.60736e+06 imbalance=1.440 nsplit=1
Iteration 2 (0.00 s, search 0.00 s): objective=6.53412e+06 imbalance=1.315 nsplit=0
Iteration 3 (0.00 s, search 0.00 s): objective=6.53367e+06 imbalance=1.316 nsplit=0
Iteration 4 (0.00 s, search 0.00 s): objective=6.53363e+06 imbalance=1.318 nsplit=0
Iteration 5 (0.00 s, search 0.00 s): objective=6.53361e+06 imbalance=1.318 nsplit=0
Iteration 6 (0.00 s, search 0.00 s): objective=6.53359e+06 imbalance=1.318 nsplit=0
Iteration 7 (0.00 s, search 0.00 s): objective=6.53359e+06 imbalance=1.318 nsplit=0
Iteration 8 (0.00 s, search 0.00 s): objective=6.53359e+06 imbalance=1.318 nsplit=0
Iteration 9 (0.00 s, search 0.00 s): objective=6.53359e+06 imbalance=1.318 nsplit=0
Iteration 10 (0.00 s, search 0.00 s): objective=6.53359e+06 imbalance=1.318 nsplit=0
Iteration 11 (0.00 s, search 0.00 s): objective=6.53359e+06 imbalance=1.318 nsplit=0
Iteration 12 (0.00 s, search 0.00 s): objective=6.53359e+06 imbalance=1.318 nsplit=0
Iteration 13 (0.00 s, search 0.00 s): objective=6.53359e+06 imbalance=1.318 nsplit=0
Iteration 14 (0.00 s, search 0.00 s): objective=6.53359e+06 imbalance=1.318 nsplit=0
Iteration 15 (0.00 s, search 0.00 s): objective=6.53359e+06 imbalance=1.318 nsplit=0
Iteration 16 (0.00 s, search 0.00 s): objective=6.53359e+06 imbalance=1.318 nsplit=0
Iteration 17 (0.00 s, search 0.00 s): objective=6.53359e+06 imbalance=1.318 nsplit=0
Iteration 18 (0.01 s, search 0.00 s): objective=6.53359e+06 imbalance=1.318 nsplit=0
Iteration 19 (0.01 s, search 0.00 s): objective=6.53359e+06 imbalance=1.318 nsplit=0
Iteration 20 (0.01 s, search 0.00 s): objective=6.53359e+06 imbalance=1.318 nsplit=0
Iteration 21 (0.01 s, search 0.00 s): objective=6.53359e+06 imbalance=1.318 nsplit=0
Iteration 22 (0.01 s, search 0.00 s): objective=6.53359e+06 imbalance=1.318 nsplit=0
Iteration 23 (0.01 s, search 0.00 s): objective=6.53359e+06 imbalance=1.318 nsplit=0
Iteration 24 (0.01 s, search 0.00 s): objective=6.53359e+06 imbalance=1.318 nsplit=0
[0] :112.500000, 112.500000, 120.000000, 117.000000, 117.000000, 114.000000, 112.500000, 118.500000
[1] :118.500000, -112.500000, 115.500000, -117.000000, 120.000000, -121.500000, 112.500000, -117.000000
[2] :-115.500000, 112.500000, -118.500000, 112.500000, -118.500000, 118.500000, -115.500000, 121.500000
[3] :-114.000000, 117.000000, -121.500000, 118.500000, -118.500000, 118.500000, -112.500000, 120.000000
[4] :114.000000, -121.500000, 120.000000, -118.500000, 118.500000, -114.000000, 121.500000, -118.500000
[5] :114.000000, 121.500000, 120.000000, 120.000000, 118.500000, 112.500000, 118.500000, 121.500000
[6] :114.000000, 117.000000, 120.000000, 117.000000, 114.000000, 114.000000, 115.500000, 114.000000
[7] :-117.000000, 121.500000, -112.500000, 112.500000, -112.500000, 117.000000, -117.000000, 115.500000
[8] :-112.500000, -117.000000, -120.000000, -121.500000, -112.500000, -121.500000, -117.000000, -118.500000
[9] :-120.000000, 121.500000, -117.000000, 117.000000, -112.500000, 112.500000, -114.000000, 120.000000
[10] :120.000000, -121.500000, 112.500000, -115.500000, 121.500000, -115.500000, 120.000000, -114.000000
[11] :121.500000, -112.500000, 114.000000, -118.500000, 115.500000, -117.000000, 118.500000, -114.000000
[12] :-118.500000, 120.000000, -120.000000, 115.500000, -117.000000, 117.000000, -118.500000, 114.000000
[13] :114.000000, 118.500000, 120.000000, 112.500000, 117.000000, 117.000000, 121.500000, 120.000000
[14] :-117.000000, -112.500000, -115.500000, -114.000000, -120.000000, -120.000000, -114.000000, -121.500000
[15] :112.500000, -120.000000, 112.500000, -118.500000, 112.500000, -115.500000, 121.500000, -120.000000
[16] :114.000000, 115.500000, 121.500000, 118.500000, 114.000000, 118.500000, 115.500000, 115.500000
[17] :-117.000000, 114.000000, -115.500000, 120.000000, -115.500000, 121.500000, -117.000000, 114.000000
[18] :-112.500000, -118.500000, -121.500000, -117.000000, -120.000000, -117.000000, -117.000000, -112.500000
[19] :112.500000, -120.000000, 115.500000, -115.500000, 112.500000, -115.500000, 118.500000, -114.000000
[20] :114.000000, -117.000000, 115.500000, -120.000000, 112.500000, -112.500000, 115.500000, -121.500000
[21] :121.500000, -118.500000, 112.500000, -112.500000, 112.500000, -120.000000, 112.500000, -118.500000
[22] :-120.000000, 112.500000, -114.000000, 117.000000, -118.500000, 117.000000, -114.000000, 121.500000
[23] :-115.500000, -120.000000, -115.500000, -112.500000, -120.000000, -112.500000, -117.000000, -117.000000
[24] :-115.500000, 120.000000, -114.000000, 117.000000, -112.500000, 118.500000, -117.000000, 120.000000
[25] :-115.500000, -115.500000, -112.500000, -112.500000, -114.000000, -118.500000, -117.000000, -117.000000
[26] :112.500000, 115.500000, 118.500000, 121.500000, 117.000000, 120.000000, 121.500000, 120.000000
[27] :-114.000000, -115.500000, -114.000000, -121.500000, -112.500000, -117.000000, -117.000000, -121.500000
[28] :118.500000, 117.000000, 118.500000, 118.500000, 114.000000, 121.500000, 121.500000, 121.500000
[29] :-117.000000, -121.500000, -117.000000, -112.500000, -120.000000, -117.000000, -118.500000, -117.000000
[30] :121.500000, -117.000000, 117.000000, -114.000000, 115.500000, -120.000000, 121.500000, -120.000000
[31] :118.500000, 118.500000, 112.500000, 112.500000, 120.000000, 120.000000, 115.500000, 115.500000
[32] :-115.500000, 118.500000, -120.000000, 120.000000, -115.500000, 120.000000, -121.500000, 112.500000
[33] :120.000000, 118.500000, 114.000000, 114.000000, 112.500000, 115.500000, 121.500000, 121.500000
[34] :-118.500000, 114.000000, -115.500000, 114.000000, -114.000000, 120.000000, -118.500000, 114.000000
[35] :114.000000, 112.500000, 114.000000, 121.500000, 114.000000, 120.000000, 112.500000, 115.500000
[36] :118.500000, 114.000000, 120.000000, 114.000000, 121.500000, 114.000000, 114.000000, 112.500000
[37] :-120.000000, -115.500000, -115.500000, -114.000000, -115.500000, -114.000000, -115.500000, -115.500000
[38] :-121.500000, -115.500000, -120.000000, -118.500000, -115.500000, -121.500000, -114.000000, -117.000000
[39] :-117.000000, -115.500000, -118.500000, -115.500000, -120.000000, -120.000000, -117.000000, -112.500000
[40] :120.000000, -117.000000, 120.000000, -118.500000, 112.500000, -117.000000, 115.500000, -115.500000
[41] :-117.000000, 117.000000, -120.000000, 115.500000, -118.500000, 117.000000, -117.000000, 115.500000
[42] :-120.000000, 112.500000, -118.500000, 114.000000, -115.500000, 118.500000, -117.000000, 120.000000
[43] :120.000000, 121.500000, 117.000000, 121.500000, 115.500000, 117.000000, 117.000000, 118.500000
[44] :-118.500000, 118.500000, -112.500000, 114.000000, -115.500000, 115.500000, -117.000000, 117.000000
[45] :120.000000, 112.500000, 114.000000, 118.500000, 117.000000, 121.500000, 114.000000, 121.500000
[46] :114.000000, -114.000000, 118.500000, -117.000000, 120.000000, -121.500000, 114.000000, -115.500000
[47] :-115.500000, 117.000000, -115.500000, 120.000000, -112.500000, 118.500000, -120.000000, 120.000000
[48] :-120.000000, 112.500000, -117.000000, 112.500000, -120.000000, 121.500000, -114.000000, 120.000000
[49] :-117.000000, 112.500000, -115.500000, 117.000000, -121.500000, 117.000000, -118.500000, 114.000000
[50] :115.500000, 118.500000, 118.500000, 118.500000, 117.000000, 114.000000, 120.000000, 115.500000
[51] :118.500000, 115.500000, 112.500000, 112.500000, 117.000000, 120.000000, 114.000000, 112.500000
[52] :-121.500000, 114.000000, -114.000000, 115.500000, -121.500000, 117.000000, -117.000000, 117.000000
[53] :-117.000000, 114.000000, -118.500000, 120.000000, -115.500000, 118.500000, -115.500000, 115.500000
[54] :112.500000, -112.500000, 117.000000, -121.500000, 120.000000, -121.500000, 115.500000, -117.000000
[55] :-115.500000, -114.000000, -115.500000, -117.000000, -121.500000, -121.500000, -112.500000, -120.000000
[56] :115.500000, -115.500000, 118.500000, -121.500000, 117.000000, -112.500000, 115.500000, -114.000000
[57] :121.500000, -120.000000, 114.000000, -118.500000, 120.000000, -112.500000, 114.000000, -114.000000
[58] :-115.500000, 117.000000, -120.000000, 118.500000, -121.500000, 114.000000, -121.500000, 117.000000
[59] :112.500000, -120.000000, 118.500000, -117.000000, 112.500000, -115.500000, 115.500000, -114.000000
[60] :-121.500000, 121.500000, -121.500000, 112.500000, -117.000000, 120.000000, -112.500000, 114.000000
[61] :115.500000, 120.000000, 117.000000, 120.000000, 118.500000, 118.500000, 120.000000, 112.500000
[62] :114.000000, 114.000000, 117.000000, 118.500000, 118.500000, 115.500000, 114.000000, 114.000000
[63] :118.500000, -120.000000, 120.000000, -120.000000, 112.500000, -115.500000, 112.500000, -112.500000
[64] :117.000000, 118.500000, 121.500000, 112.500000, 118.500000, 120.000000, 117.000000, 112.500000
[65] :-117.000000, 117.000000, -114.000000, 112.500000, -117.000000, 121.500000, -117.000000, 115.500000
[66] :117.000000, -114.000000, 114.000000, -120.000000, 115.500000, -112.500000, 121.500000, -120.000000
[67] :112.500000, 112.500000, 117.000000, 114.000000, 117.000000, 112.500000, 120.000000, 115.500000
[68] :115.500000, -118.500000, 118.500000, -115.500000, 121.500000, -114.000000, 120.000000, -115.500000
[69] :-118.500000, 121.500000, -115.500000, 115.500000, -117.000000, 117.000000, -118.500000, 114.000000
[70] :112.500000, -118.500000, 117.000000, -118.500000, 112.500000, -120.000000, 120.000000, -117.000000
[71] :-115.500000, -112.500000, -120.000000, -115.500000, -120.000000, -118.500000, -121.500000, -117.000000
[72] :-120.000000, -114.000000, -117.000000, -121.500000, -120.000000, -115.500000, -118.500000, -120.000000
[73] :121.500000, 112.500000, 120.000000, 121.500000, 114.000000, 118.500000, 112.500000, 115.500000
[74] :-118.500000, -117.000000, -114.000000, -114.000000, -114.000000, -118.500000, -114.000000, -115.500000
[75] :112.500000, 112.500000, 114.000000, 120.000000, 112.500000, 117.000000, 121.500000, 114.000000
[76] :114.000000, 112.500000, 118.500000, 118.500000, 117.000000, 114.000000, 118.500000, 115.500000
[77] :-120.000000, 114.000000, -117.000000, 117.000000, -112.500000, 121.500000, -117.000000, 112.500000
[78] :-117.000000, 112.500000, -114.000000, 118.500000, -114.000000, 115.500000, -120.000000, 117.000000
[79] :-117.000000, -118.500000, -112.500000, -112.500000, -114.000000, -112.500000, -118.500000, -120.000000
[80] :121.500000, -115.500000, 117.000000, -112.500000, 118.500000, -114.000000, 117.000000, -115.500000
[81] :-120.000000, -112.500000, -114.000000, -120.000000, -121.500000, -118.500000, -121.500000, -121.500000
[82] :-117.000000, -121.500000, -117.000000, -114.000000, -117.000000, -115.500000, -114.000000, -115.500000
[83] :112.500000, 114.000000, 118.500000, 115.500000, 112.500000, 112.500000, 121.500000, 114.000000
[84] :115.500000, -115.500000, 114.000000, -121.500000, 118.500000, -114.000000, 118.500000, -121.500000
[85] :-115.500000, 121.500000, -112.500000, 117.000000, -117.000000, 120.000000, -112.500000, 118.500000
[86] :-114.000000, -117.000000, -117.000000, -120.000000, -112.500000, -115.500000, -120.000000, -117.000000
[87] :118.500000, -115.500000, 112.500000, -117.000000, 118.500000, -115.500000, 117.000000, -115.500000
[88] :-115.500000, 117.000000, -120.000000, 117.000000, -114.000000, 112.500000, -121.500000, 117.000000
[89] :115.500000, -121.500000, 114.000000, -121.500000, 115.500000, -117.000000, 118.500000, -115.500000
[90] :-112.500000, -114.000000, -117.000000, -117.000000, -115.500000, -115.500000, -118.500000, -117.000000
[91] :-117.000000, -115.500000, -117.000000, -120.000000, -115.500000, -120.000000, -115.500000, -117.000000
[92] :121.500000, -120.000000, 115.500000, -115.500000, 120.000000, -112.500000, 118.500000, -114.000000
[93] :-117.000000, -120.000000, -120.000000, -112.500000, -120.000000, -115.500000, -121.500000, -112.500000
[94] :-120.000000, 121.500000, -120.000000, 121.500000, -117.000000, 112.500000, -118.500000, 118.500000
[95] :117.000000, -121.500000, 120.000000, -121.500000, 117.000000, -118.500000, 115.500000, -114.000000
[96] :115.500000, 115.500000, 112.500000, 118.500000, 117.000000, 114.000000, 112.500000, 121.500000
[97] :-112.500000, 117.000000, -118.500000, 120.000000, -120.000000, 114.000000, -121.500000, 114.000000
[98] :117.000000, 115.500000, 121.500000, 115.500000, 115.500000, 118.500000, 115.500000, 112.500000
[99] :120.000000, -112.500000, 121.500000, -112.500000, 120.000000, -120.000000, 118.500000, -121.500000
[100] :-114.000000, -117.000000, -112.500000, -120.000000, -112.500000, -115.500000, -118.500000, -114.000000
[101] :117.000000, -112.500000, 115.500000, -115.500000, 120.000000, -112.500000, 115.500000, -120.000000
[102] :-114.000000, -114.000000, -112.500000, -121.500000, -115.500000, -112.500000, -118.500000, -121.500000
[103] :-120.000000, 115.500000, -121.500000, 118.500000, -117.000000, 120.000000, -112.500000, 120.000000
[104] :118.500000, -112.500000, 121.500000, -117.000000, 112.500000, -118.500000, 115.500000, -115.500000
[105] :112.500000, 112.500000, 114.000000, 117.000000, 118.500000, 114.000000, 115.500000, 121.500000
[106] :-115.500000, 118.500000, -112.500000, 115.500000, -112.500000, 120.000000, -117.000000, 112.500000
[107] :117.000000, 117.000000, 117.000000, 117.000000, 120.000000, 121.500000, 115.500000, 114.000000
[108] :-121.500000, -121.500000, -112.500000, -118.500000, -120.000000, -112.500000, -114.000000, -120.000000
[109] :-121.500000, -120.000000, -118.500000, -115.500000, -117.000000, -115.500000, -117.000000, -118.500000
[110] :-118.500000, -115.500000, -117.000000, -120.000000, -115.500000, -112.500000, -115.500000, -118.500000
[111] :-114.000000, 120.000000, -114.000000, 115.500000, -121.500000, 117.000000, -115.500000, 118.500000
[112] :118.500000, 120.000000, 115.500000, 115.500000, 115.500000, 115.500000, 118.500000, 114.000000
[113] :115.500000, 118.500000, 120.000000, 115.500000, 114.000000, 118.500000, 112.500000, 121.500000
[114] :-118.500000, 117.000000, -118.500000, 114.000000, -118.500000, 120.000000, -121.500000, 118.500000
[115] :112.500000, 117.000000, 115.500000, 114.000000, 120.000000, 118.500000, 112.500000, 120.000000
[116] :-117.000000, -118.500000, -118.500000, -118.500000, -117.000000, -114.000000, -114.000000, -120.000000
[117] :117.000000, -118.500000, 112.500000, -121.500000, 114.000000, -117.000000, 120.000000, -118.500000
[118] :120.000000, -118.500000, 114.000000, -118.500000, 121.500000, -115.500000, 115.500000, -117.000000
[119] :118.500000, -112.500000, 115.500000, -121.500000, 117.000000, -115.500000, 120.000000, -112.500000
[120] :112.500000, -121.500000, 118.500000, -114.000000, 118.500000, -115.500000, 121.500000, -121.500000
[121] :-112.500000, 114.000000, -112.500000, 117.000000, -120.000000, 120.000000, -115.500000, 120.000000
[122] :-114.000000, 118.500000, -114.000000, 118.500000, -118.500000, 117.000000, -115.500000, 115.500000
[123] :-112.500000, -117.000000, -112.500000, -120.000000, -112.500000, -121.500000, -118.500000, -114.000000
[124] :121.500000, 115.500000, 117.000000, 117.000000, 120.000000, 121.500000, 118.500000, 114.000000
[125] :121.500000, -115.500000, 112.500000, -120.000000, 121.500000, -120.000000, 114.000000, -114.000000
[126] :-115.500000, -115.500000, -114.000000, -115.500000, -118.500000, -112.500000, -115.500000, -121.500000
[127] :112.500000, 118.500000, 118.500000, 117.000000, 118.500000, 112.500000, 115.500000, 120.000000
[128] :115.500000, 118.500000, 118.500000, 112.500000, 120.000000, 114.000000, 117.000000, 114.000000
[129] :-121.500000, -112.500000, -112.500000, -115.500000, -121.500000, -115.500000, -117.000000, -117.000000
[130] :121.500000, -117.000000, 118.500000, -120.000000, 117.000000, -120.000000, 121.500000, -120.000000
[131] :-112.500000, -117.000000, -121.500000, -112.500000, -112.500000, -120.000000, -121.500000, -114.000000
[132] :-121.500000, 121.500000, -115.500000, 118.500000, -121.500000, 112.500000, -114.000000, 117.000000
[133] :-115.500000, 117.000000, -117.000000, 112.500000, -112.500000, 118.500000, -120.000000, 115.500000
[134] :115.500000, -114.000000, 114.000000, -121.500000, 120.000000, -115.500000, 114.000000, -114.000000
[135] :112.500000, 112.500000, 114.000000, 115.500000, 120.000000, 120.000000, 118.500000, 118.500000
[136] :-118.500000, -120.000000, -118.500000, -120.000000, -120.000000, -115.500000, -118.500000, -112.500000
[137] :118.500000, 115.500000, 117.000000, 118.500000, 120.000000, 120.000000, 120.000000, 114.000000
[138] :114.000000, 114.000000, 117.000000, 112.500000, 121.500000, 120.000000, 112.500000, 114.000000
[139] :115.500000, 120.000000, 114.000000, 117.000000, 112.500000, 121.500000, 112.500000, 114.000000
[140] :117.000000, -114.000000, 114.000000, -120.000000, 114.000000, -118.500000, 114.000000, -112.500000
[141] :-114.000000, -115.500000, -115.500000, -118.500000, -112.500000, -120.000000, -121.500000, -114.000000
[142] :-115.500000, 112.500000, -114.000000, 112.500000, -112.500000, 118.500000, -118.500000, 115.500000
[143] :114.000000, -118.500000, 112.500000, -112.500000, 120.000000, -118.500000, 120.000000, -114.000000
[144] :121.500000, -121.500000, 115.500000, -112.500000, 115.500000, -118.500000, 112.500000, -115.500000
[145] :-114.000000, -114.000000, -117.000000, -114.000000, -115.500000, -117.000000, -118.500000, -118.500000
[146] :114.000000, -112.500000, 118.500000, -114.000000, 114.000000, -114.000000, 114.000000, -115.500000
[147] :-114.000000, 115.500000, -115.500000, 112.500000, -118.500000, 112.500000, -120.000000, 112.500000
[148] :-120.000000, 120.000000, -121.500000, 117.000000, -112.500000, 114.000000, -120.000000, 118.500000
[149] :-121.500000, -114.000000, -120.000000, -121.500000, -114.000000, -112.500000, -121.500000, -121.500000
[150] :120.000000, 112.500000, 120.000000, 114.000000, 115.500000, 118.500000, 118.500000, 112.500000
[151] :121.500000, 120.000000, 115.500000, 112.500000, 112.500000, 121.500000, 121.500000, 118.500000
[152] :120.000000, 114.000000, 120.000000, 118.500000, 114.000000, 114.000000, 112.500000, 117.000000
[153] :-118.500000, 121.500000, -121.500000, 117.000000, -118.500000, 121.500000, -114.000000, 118.500000
[154] :115.500000, -115.500000, 118.500000, -115.500000, 114.000000, -121.500000, 121.500000, -120.000000
[155] :118.500000, 117.000000, 115.500000, 112.500000, 117.000000, 112.500000, 118.500000, 117.000000
[156] :117.000000, 121.500000, 112.500000, 115.500000, 112.500000, 115.500000, 120.000000, 121.500000
[157] :-114.000000, 121.500000, -114.000000, 120.000000, -114.000000, 117.000000, -115.500000, 118.500000
[158] :120.000000, 117.000000, 114.000000, 115.500000, 121.500000, 117.000000, 115.500000, 117.000000
[159] :114.000000, 121.500000, 121.500000, 112.500000, 117.000000, 118.500000, 114.000000, 115.500000
[160] :120.000000, -121.500000, 115.500000, -120.000000, 120.000000, -120.000000, 120.000000, -118.500000
[161] :120.000000, -114.000000, 118.500000, -115.500000, 120.000000, -121.500000, 118.500000, -118.500000
[162] :117.000000, -117.000000, 117.000000, -118.500000, 121.500000, -121.500000, 115.500000, -118.500000
[163] :120.000000, 112.500000, 117.000000, 120.000000, 115.500000, 121.500000, 121.500000, 121.500000
[164] :-114.000000, 115.500000, -114.000000, 114.000000, -115.500000, 117.000000, -120.000000, 114.000000
[165] :-115.500000, -117.000000, -114.000000, -115.500000, -112.500000, -114.000000, -117.000000, -120.000000
[166] :112.500000, 117.000000, 114.000000, 118.500000, 115.500000, 118.500000, 112.500000, 120.000000
[167] :121.500000, -118.500000, 114.000000, -114.000000, 118.500000, -118.500000, 118.500000, -117.000000
[168] :117.000000, -115.500000, 121.500000, -115.500000, 114.000000, -121.500000, 118.500000, -118.500000
[169] :-121.500000, 114.000000, -115.500000, 115.500000, -117.000000, 120.000000, -118.500000, 115.500000
[170] :115.500000, -121.500000, 118.500000, -118.500000, 112.500000, -118.500000, 118.500000, -117.000000
[171] :-112.500000, -117.000000, -112.500000, -121.500000, -117.000000, -121.500000, -112.500000, -117.000000
[172] :118.500000, -121.500000, 117.000000, -121.500000, 117.000000, -112.500000, 117.000000, -112.500000
[173] :121.500000, 117.000000, 112.500000, 120.000000, 114.000000, 118.500000, 118.500000, 121.500000
[174] :-117.000000, 114.000000, -121.500000, 114.000000, -112.500000, 118.500000, -114.000000, 112.500000
[175] :-112.500000, -112.500000, -117.000000, -120.000000, -117.000000, -117.000000, -112.500000, -120.000000
[176] :-118.500000, -114.000000, -114.000000, -115.500000, -114.000000, -115.500000, -118.500000, -120.000000
[177] :-115.500000, 121.500000, -120.000000, 112.500000, -120.000000, 114.000000, -120.000000, 118.500000
[178] :118.500000, -117.000000, 115.500000, -117.000000, 115.500000, -121.500000, 121.500000, -117.000000
[179] :114.000000, -115.500000, 121.500000, -112.500000, 118.500000, -120.000000, 114.000000, -121.500000
[180] :114.000000, -121.500000, 115.500000, -117.000000, 121.500000, -120.000000, 112.500000, -121.500000
[181] :121.500000, -112.500000, 121.500000, -117.000000, 114.000000, -117.000000, 120.000000, -112.500000
[182] :118.500000, 117.000000, 117.000000, 120.000000, 115.500000, 114.000000, 117.000000, 115.500000
[183] :120.000000, -112.500000, 112.500000, -118.500000, 117.000000, -112.500000, 120.000000, -120.000000
[184] :-114.000000, 120.000000, -118.500000, 118.500000, -118.500000, 117.000000, -117.000000, 112.500000
[185] :115.500000, -114.000000, 114.000000, -118.500000, 114.000000, -114.000000, 118.500000, -115.500000
[186] :115.500000, -120.000000, 114.000000, -117.000000, 117.000000, -120.000000, 121.500000, -118.500000
[187] :-121.500000, 114.000000, -117.000000, 121.500000, -121.500000, 115.500000, -118.500000, 115.500000
[188] :114.000000, 115.500000, 115.500000, 118.500000, 118.500000, 112.500000, 115.500000, 112.500000
[189] :117.000000, -117.000000, 115.500000, -120.000000, 117.000000, -115.500000, 115.500000, -121.500000
[190] :-112.500000, -121.500000, -118.500000, -112.500000, -118.500000, -120.000000, -112.500000, -121.500000
[191] :112.500000, -112.500000, 120.000000, -120.000000, 112.500000, -120.000000, 117.000000, -120.000000
[192] :114.000000, -117.000000, 121.500000, -114.000000, 118.500000, -117.000000, 120.000000, -112.500000
[193] :-114.000000, 120.000000, -120.000000, 121.500000, -120.000000, 115.500000, -118.500000, 120.000000
[194] :121.500000, -114.000000, 117.000000, -115.500000, 117.000000, -121.500000, 114.000000, -112.500000
[195] :117.000000, 121.500000, 121.500000, 115.500000, 118.500000, 121.500000, 117.000000, 120.000000
[196] :112.500000, -120.000000, 121.500000, -114.000000, 121.500000, -121.500000, 117.000000, -118.500000
[197] :121.500000, -120.000000, 114.000000, -115.500000, 121.500000, -117.000000, 112.500000, -114.000000
[198] :120.000000, -115.500000, 112.500000, -112.500000, 112.500000, -112.500000, 114.000000, -117.000000
[199] :-115.500000, -114.000000, -112.500000, -115.500000, -112.500000, -120.000000, -114.000000, -120.000000
[200] :117.000000, 121.500000, 118.500000, 115.500000, 114.000000, 121.500000, 114.000000, 117.000000
[201] :-118.500000, -120.000000, -114.000000, -120.000000, -115.500000, -118.500000, -117.000000, -117.000000
[202] :118.500000, 118.500000, 112.500000, 120.000000, 115.500000, 117.000000, 121.500000, 120.000000
[203] :120.000000, 120.000000, 117.000000, 115.500000, 114.000000, 118.500000, 114.000000, 118.500000
[204] :-118.500000, -120.000000, -118.500000, -118.500000, -115.500000, -112.500000, -114.000000, -112.500000
[205] :-121.500000, -112.500000, -121.500000, -118.500000, -120.000000, -114.000000, -121.500000, -115.500000
[206] :-112.500000, -121.500000, -117.000000, -121.500000, -117.000000, -118.500000, -117.000000, -118.500000
[207] :115.500000, 117.000000, 121.500000, 118.500000, 118.500000, 112.500000, 114.000000, 115.500000
[208] :120.000000, -117.000000, 117.000000, -120.000000, 112.500000, -120.000000, 115.500000, -114.000000
[209] :-120.000000, -120.000000, -118.500000, -115.500000, -117.000000, -121.500000, -117.000000, -118.500000
[210] :112.500000, -117.000000, 112.500000, -120.000000, 117.000000, -118.500000, 121.500000, -112.500000
[211] :-118.500000, -117.000000, -114.000000, -112.500000, -118.500000, -115.500000, -117.000000, -120.000000
[212] :-117.000000, 117.000000, -114.000000, 112.500000, -120.000000, 114.000000, -118.500000, 115.500000
[213] :114.000000, -120.000000, 120.000000, -120.000000, 121.500000, -114.000000, 121.500000, -120.000000
[214] :-120.000000, -117.000000, -114.000000, -117.000000, -117.000000, -118.500000, -112.500000, -118.500000
[215] :-121.500000, -112.500000, -112.500000, -117.000000, -112.500000, -118.500000, -115.500000, -114.000000
[216] :-118.500000, -121.500000, -117.000000, -121.500000, -115.500000, -112.500000, -115.500000, -120.000000
[217] :-117.000000, 120.000000, -118.500000, 115.500000, -112.500000, 121.500000, -115.500000, 115.500000
[218] :117.000000, 112.500000, 120.000000, 118.500000, 118.500000, 114.000000, 114.000000, 114.000000
[219] :-120.000000, -120.000000, -114.000000, -112.500000, -114.000000, -121.500000, -120.000000, -120.000000
[220] :-114.000000, 117.000000, -118.500000, 121.500000, -118.500000, 118.500000, -114.000000, 121.500000
[221] :-112.500000, -114.000000, -114.000000, -115.500000, -114.000000, -115.500000, -114.000000, -118.500000
[222] :-115.500000, 115.500000, -114.000000, 117.000000, -115.500000, 120.000000, -117.000000, 115.500000
[223] :118.500000, 117.000000, 121.500000, 117.000000, 114.000000, 117.000000, 112.500000, 118.500000
[224] :112.500000, -117.000000, 118.500000, -115.500000, 120.000000, -115.500000, 121.500000, -120.000000
[225] :120.000000, 112.500000, 112.500000, 112.500000, 121.500000, 114.000000, 120.000000, 114.000000
[226] :115.500000, 120.000000, 115.500000, 117.000000, 121.500000, 121.500000, 121.500000, 114.000000
[227] :-114.000000, -115.500000, -117.000000, -117.000000, -120.000000, -117.000000, -112.500000, -114.000000
[228] :121.500000, 121.500000, 121.500000, 114.000000, 114.000000, 115.500000, 120.000000, 120.000000
[229] :120.000000, -117.000000, 115.500000, -115.500000, 118.500000, -114.000000, 120.000000, -120.000000
[230] :-114.000000, 114.000000, -121.500000, 120.000000, -112.500000, 112.500000, -118.500000, 120.000000
[231] :118.500000, 121.500000, 117.000000, 121.500000, 120.000000, 115.500000, 114.000000, 120.000000
[232] :-121.500000, 114.000000, -121.500000, 121.500000, -121.500000, 121.500000, -114.000000, 121.500000
[233] :-117.000000, 120.000000, -112.500000, 115.500000, -120.000000, 115.500000, -121.500000, 115.500000
[234] :112.500000, 114.000000, 115.500000, 120.000000, 121.500000, 121.500000, 120.000000, 115.500000
[235] :120.000000, -114.000000, 117.000000, -118.500000, 118.500000, -115.500000, 118.500000, -112.500000
[236] :120.000000, -121.500000, 118.500000, -121.500000, 121.500000, -115.500000, 115.500000, -120.000000
[237] :117.000000, -115.500000, 114.000000, -120.000000, 118.500000, -115.500000, 118.500000, -121.500000
[238] :121.500000, -120.000000, 114.000000, -114.000000, 120.000000, -112.500000, 120.000000, -114.000000
[239] :-120.000000, -120.000000, -121.500000, -114.000000, -114.000000, -120.000000, -118.500000, -120.000000
[240] :-115.500000, 120.000000, -121.500000, 118.500000, -115.500000, 117.000000, -121.500000, 120.000000
[241] :-121.500000, -118.500000, -117.000000, -121.500000, -115.500000, -117.000000, -121.500000, -120.000000
[242] :-118.500000, 118.500000, -118.500000, 117.000000, -114.000000, 112.500000, -114.000000, 112.500000
[243] :-120.000000, -117.000000, -114.000000, -118.500000, -118.500000, -114.000000, -114.000000, -120.000000
[244] :-114.000000, -115.500000, -112.500000, -112.500000, -118.500000, -120.000000, -117.000000, -117.000000
[245] :115.500000, -114.000000, 121.500000, -120.000000, 112.500000, -120.000000, 120.000000, -114.000000
[246] :-118.500000, 121.500000, -115.500000, 112.500000, -114.000000, 117.000000, -112.500000, 115.500000
[247] :120.000000, 114.000000, 121.500000, 115.500000, 118.500000, 114.000000, 115.500000, 121.500000
[248] :112.500000, 118.500000, 121.500000, 120.000000, 117.000000, 114.000000, 112.500000, 118.500000
[249] :-115.500000, 114.000000, -121.500000, 115.500000, -115.500000, 115.500000, -120.000000, 112.500000
[250] :120.000000, -121.500000, 114.000000, -114.000000, 115.500000, -118.500000, 115.500000, -112.500000
[251] :-115.500000, 118.500000, -118.500000, 114.000000, -117.000000, 117.000000, -115.500000, 118.500000
[252] :120.000000, -117.000000, 120.000000, -120.000000, 115.500000, -121.500000, 117.000000, -114.000000
[253] :121.500000, 117.000000, 117.000000, 118.500000, 121.500000, 120.000000, 112.500000, 117.000000
[254] :-117.000000, 117.000000, -117.000000, 118.500000, -120.000000, 120.000000, -117.000000, 115.500000
[255] :-115.500000, -121.500000, -112.500000, -114.000000, -117.000000, -118.500000, -117.000000, -120.000000
centroids:
[0] :117.000000, 118.111115, 117.055557, 117.277779, 115.833336, 117.555557, 116.722221, 120.000000
[1] :116.391891, 115.581085, 117.445946, 116.554054, 117.770271, 116.878380, 116.594597, 114.729729
[2] :-116.936981, 3.138656, -116.609253, 2.735294, -116.634460, 3.163866, -117.025215, 2.420168
[3] :117.390411, -117.082191, 116.547943, -117.472603, 117.061646, -117.143837, 117.513695, -116.691780