kneeliverse

Kneeliverse: A Universal Knee/ElbowDetection Library for Performance Curves

Estimating the knee/elbow point in performance curves is a challenging task. However, most of the time these points represent ideal compromises between cost and performance.

This library implements several well-known knee detection algorithms:

  1. Discrete Curvature
  2. DFDT
  3. Kneedle
  4. L-method
  5. Menger curvature

Furthermore, the code in this library expands the ideas on these algorithms to detect multi-knee/elbow points in complex curves. We implemented a recursive method that allows each of the previously mentioned methods to detect multi-knee and elbow points. Some methods natively support multi-knee detection, such as:

  1. Kneedle
  2. Fusion
  3. Z-method

Finally, we also implemented additional methods that help with knee detection tasks. As a preprocessing step, we develop a custom RDP algorithm that reduced a discrete set of points while keeping the reconstruction error to a minimum. As a post-processing step we implemented several algorithms:

  1. 1D dimensional clustering, is used to merge close knee points
  2. Several filters out non-relevant knees
  3. Knee ranking algorithms that used several criteria to assess the quality of a knee point
 1"""
 2Kneeliverse: A Universal Knee/ElbowDetection Library for Performance Curves
 3
 4Estimating the knee/elbow point in performance curves is a challenging task.
 5However, most of the time these points represent ideal compromises between cost and performance.
 6
 7This library implements several well-known knee detection algorithms:
 81. Discrete Curvature 
 92. DFDT
103. Kneedle
114. L-method
125. Menger curvature
13
14Furthermore, the code in this library expands the ideas on these algorithms to 
15detect multi-knee/elbow points in complex curves.
16We implemented a recursive method that allows each of the previously mentioned methods
17to detect multi-knee and elbow points.
18Some methods natively support multi-knee detection, such as:
191. Kneedle
202. Fusion
213. Z-method
22
23Finally, we also implemented additional methods that help with knee detection tasks.
24As a preprocessing step, we develop a custom RDP algorithm that reduced a discrete 
25set of points while keeping the reconstruction error to a minimum.
26As a post-processing step we implemented several algorithms:
271. 1D dimensional clustering, is used to merge close knee points
282. Several filters out non-relevant knees
293. Knee ranking algorithms that used several criteria to assess the quality of a knee point
30"""
31
32import kneeliverse.clustering
33import kneeliverse.convex_hull
34import kneeliverse.curvature
35import kneeliverse.dfdt
36import kneeliverse.evaluation
37import kneeliverse.knee_ranking
38import kneeliverse.kneedle
39import kneeliverse.linear_fit
40import kneeliverse.lmethod
41import kneeliverse.menger
42import kneeliverse.metrics
43import kneeliverse.multi_knee
44import kneeliverse.postprocessing
45import kneeliverse.rdp
46import kneeliverse.zmethod