Comments (8)
@lucianolorenti's package is now archived, and from what I can tell there isn't really another actively maintained and easily useable spectral clustering functionality. In my view it would make sense to make some of that package part of Clustering.jl. Thoughts?
from clustering.jl.
I'd like to offer that functionality.
from clustering.jl.
Spectral clustering is used to describe many variants, do you have any specific variants in mind?
I suppose the easiest to implement, given the existing infrastructure, is computing the top q
eigenvectors of the kernel matrix with eigs
and then calling one of the spatial methods like k-means on the output. Would it be ok to expose both parameters q,k
?
Although for some data sets recursive partitioning with just the second eigenvector works better. We should support multiple types probably.
from clustering.jl.
All of those seem like reasonable options to me. I don't see the harm in exposing both q
and k
as parameters.
from clustering.jl.
What do you think about the return type for spectral clustering? It needs to have the result and convergence information from the eigensolver as well as the result and convergence method for the partitioning method.
If we are using a embed into q dimensions and then run k-means approach, then the return type could be something like
type SpectralClusteringResult{T<:Real, C<:ClusteringResult} <: ClusteringResult
eigensolution::EigsResult{T}
clusters::C
end
Then you have the spectral embedding information in the eigensolution field for making an visualization or diagnosing the results, and the final clustering information is all embedded in the clusters field. The alternative I thought of is to repeat most of the fields from the clustering into the SpectralClusteringResult type.
from clustering.jl.
In case anyone is still interested, I attach the link to my library of Spectral Clustering
from clustering.jl.
@zsteve If it is about adding 1-2 source files and little to none new deps (all from JuliaXXX organisations), and there are no licensing issues of reusing that code, I think we may add spectral clustering to Clustering.jl.
from clustering.jl.
@zsteve If it is about adding 1-2 source files and little to none new deps (all from JuliaXXX organisations), and there are no licensing issues of reusing that code, I think we may add spectral clustering to Clustering.jl.
Yes, I'd be happy to look into that when I have some spare time. Although the SpectralClustering.jl package seems to have quite a few advanced functionality that might not be necessary. For context, my use case is that I want to do vanilla spectral clustering using kNN or precomputed affinity matrices similar to that in the sklearn package in Python.
from clustering.jl.
Related Issues (20)
- DBSCAN docs - consistency between 2 APIs HOT 1
- both StatsBase and Distances export "pairwise"; uses of it in module Clustering must be qualified HOT 1
- Trying to use Dynamic Time Warping as metric in KMeans
- Adjusted Rand index inconsistency for large n
- Adjusted Rand Index inconsistency with Python's sklearn implementation HOT 1
- Adjacency-constrained hierarchical clustering? HOT 1
- AssertionError in kmedoids alg HOT 1
- TagBot trigger issue HOT 10
- conflict of "pairwise" in procedure `kmeans.jl` HOT 2
- Get WCSS (Within-Cluster Sum of Square) for optimal number of clusters in kmeans
- -1 silhouette score returned with empty classes HOT 1
- Docs not deployed for tags. HOT 3
- Unexpected behaviour of cutree - bug with :optimallayout? HOT 1
- Providing additional intrinsic evaluation metrices HOT 4
- Common clustering API (i.e., why aren't KShiftsClustering.jl, QuickShiftClustering.jl, QuickShiftClustering.jl SpectralClustering.jl here...?) HOT 7
- Fix warnings for latest Distances.jl HOT 1
- Hclust.order HOT 2
- Link to benchmarks from README?
- WARNING: both StatsBase and Distances export "pairwise!"; uses of it in module Clustering must be qualified HOT 10
- Is this package actively maintained? By who? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from clustering.jl.