DBSCAN parameters extension
- Dominant language
- Python
- Stars
- 5.7k
- Forks
- 1.1k
- Avg merge
- 12d 2h
- Merged PRs (30d)
- 1
Description
Problem:
The optimal DBSCAN Neighborhood distance could be beyond the 1000-item graph min value. Values external to the graph cannot be saved in the workflow.
Case:
We are working on a classification model that currently fits our needs well. We are using a DBSCAN like this:

In our case, we iterate the "Neighborhood distance" parameter (manually, at the moment) to find the value that produces the highest number of clusters. As you can see from the image, in this example we have determined the optimal value to be 0.09 (21 clusters, in this case), but the graph shows just up to 0.309. Higher and lower values for the distance return a lower number of clusters.
[Yes, I know this is not the canonical way to set it (usually, it has to be set after the cliff), but this way appears to be particularly effective at solving our classification case].
The number of items in the graph is fixed to 1000. When we change some parameters in the widget that feeds the DBSCAN, Orange resets the DBSCAN distance parameter to the 1000th-item value. Every time we open Orange and reload the workflow, the "Distance" value of DBSCAN is changed to the graph boundary, no way to save an "out-of-graph-range" value.
Proposed solutions:
- Extend the graph to a distance value of 0.01 (thus considering more items, if appropriate).
- Add a button to allow the auto-search for the optimal value for "Neighborhood distance" to maximize the number of clusters.
- Maybe, extend the max value for the "Core point neighbors" (currently is 100).
Thanks. (I'm sure you've already considered some of these points.)
Contributor guide
Research direction
The issue names no files or tests; start by locating the DBSCAN widget and the 1000-item graph's distance-parameter handling. Compare the proposed graph extension, automatic search, and core-neighbor limit changes, then establish which behavior should be implemented and how an out-of-range distance should persist after saving and reloading a workflow.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python, scikit-learn
- Domain
- data-visualization, machine-learning
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100