Open Mec-iS opened 4 years ago
@Mec-iS Take a look at this paper that describes a FastPair algorithm. This algorithm helps to speedup cluster merge operation.
Also I suggest to take a look at fastcluster
implementation of the HC described in this paper. Figures at the bottom of this page show very well the difference between fastcluster
and other implementations. Unfortunately it is written in C++.
d = abs(P1-P2)
)fastcluster
:rustcxx
Background questions:
unsafe
blocks?Background questions:
- are we going for a 100% Rust native implementation?
- are we supposed to allow or not usages of
unsafe
blocks?
Yes, calling C++ library from SmartCore is not an option for multiple reasons. We'll have to ship fastcluster
with SmartCore somehow and it diminishes usefulness of our library.
Do you know C++ by any chance? 😄 If not, feel free to go with any implementation, even if it is not the fastest out there. Another option would be to try to implement the algorithm (it is described here) yourself. It would be super awesome if you can implement fastcluster
in Rust, because in this case we will be the only library in Rust that has it.
what role you had in mind for FastPair?
what role you had in mind for FastPair?
As an alternative to fastcluster
FastPair is implemented #142
We can move on to implement clustering; starting with AgglomerativeClustering
Tasks:
_fit()
(we need only some of the required parameters)ward_tree
_labels
Basic linkage is Ward (that needs euclidean distance).
Motivation: why do we need hierarchical when we have already kmeans?
Vocabulary:
Sub-tasks:
Visualisations: (?)
Other implementations: