# File Format Specification

The files in our benchmark dataset suite and the corresponding clustering results repository adhere to the following guidelines.

## Benchmark Datasets

For each `battery/dataset`

(e.g., `wut/labirynth`

),
we have the following corresponding files:

`battery/dataset.txt`

– gives the dataset description, comments, copyright information, license, how to cite, etc.`battery/dataset.data.gz`

– defines an*n*-by-*d*data matrix representing a dataset with*n*points in \(\mathbb{R}^d\):a gzipped text file storing data in tabular format (many environments can decompress

`.gz`

inputs on the fly; see Access from Python, R, MATLAB, etc.);columns are whitespace-delimited;

there are exactly

*n*file lines (no column names, no headers, no comments);values might be in either decimal or scientific notation (e.g., 1.0, 1.23e-8).

`battery/dataset.labels0.gz`

,`battery/dataset.labels1.gz`

,`battery/dataset.labels2.gz`

, … – ground truth partitions (as there can be many equally valid ways to cluster a dataset) identified by consecutive integers starting at 0.Each file stores a separate label vector:

a gzipped text file with exactly

*n*integers, one per line;the

*i*-th label (line) corresponds to the*i*-th data point;`0`

denotes the noise class (if present), and the first meaningful cluster is denoted with`1`

;class labels are consecutive integers:

`0`

,`1`

,`2`

, …,`K`

, where`K = max(labels)`

is the total number of clusters (noise not included in the counting);`labels0`

usually denotes the original label vector as defined by the dataset’s creator (if one was provided).

Additionally, `battery/README.txt`

gives some general information
about the benchmark battery.

## Clustering Results

As far as the storing of clustering results is concerned,
the files are named like `method_group/battery/dataset.resultK.gz`

,
where `K`

is the number of identified clusters, e.g.,
`Genie/wut/labirynth.result4.gz`

gives the 4-partitions
generated by the *Genie*
algorithm with different parameters.

In each case, the file `method_group/README.txt`

provides an overview
of the methods used.

Each results file is a gzipped CSV where columns are label vectors
with elements in `1`

, `2`

, …, `K`

.

Each column therein represents the output of a different run of some clustering method(s) (e.g., different algorithms or the same algorithm with different parameter settings). The first row of the CSV file gives the method (column) names.

For example:

```
"Genie_G0.1","Genie_G0.3","Genie_G0.5","Genie_G0.7","Genie_G1.0" # <--- names
1,1,1,1,1
2,2,2,2,2
3,3,3,3,3
4,1,1,1,1
2,2,2,2,2
3,3,3,3,3
4,1,1,1,1 # <--- Genie_G0.1 claims the 7th data point belongs to the 4th cluster
2,2,2,2,2
3,3,3,3,3
... # <--- As many rows as data points in total (plus names in the 1st row)
```