Skip to main content

Knee or elbow detection for curves

Project description

kneebow

Find the knee of a curve or the elbow of a curve.

Codacy Badge CircleCI codecov

How it works

kneebow builds upon a very simple idea: if we want to find the elbow of a curve, we can simply rotate the data so that curve looks down and then take the minimum value. If we want to find the knee of the curve, we take the maximum value instead. It's as simple as that.

For more info, see this answer on the Data Science StackExchange.

Installation

You can install the package via pip:

pip install kneebow

Alternatively, you can also install the latest version from GitHub:

pip install git+https://github.com/georg-un/kneebow.git

Usage

Let's assume, we try to find the elbow of the following data:

import numpy as np
data = np.array([[1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8],  # linear until (8,8)
                 [9, 16], [10, 32], [11, 64], [12, 128], [13, 256], [14, 512]])   # exponential afterwards

Let's have a peak how this data looks like:

data_plot

To find the elbow, we create an instance of the Rotor class and use its fit_rotate method:

from kneebow.rotor import Rotor
 
rotor = Rotor()
rotor.fit_rotate(data)

Now we can get the index of the elbow as follows:

elbow_idx = rotor.get_elbow_index()
print(elbow_idx)  # 11

The Rotor class also comes with plot methods to inspect the data visually together with the estimated elbow/knee:

rotor.plot_elbow()

rotor_plot

Citation

If you need to cite this package, you can do so as follows:

BibTeX

@misc{kneebow,
  title={ {kneebow}: Knee or elbow detection for curves},
  author={Georg Unterholzner},
  year={2019},
  howpublished={\url{https://github.com/georg-unterholzner/kneebow}},
}

Note: Make sure to import the url package with: \usepackage{url}.

APA/Harvard

Georg Unterholzner. (2019). kneebow: Knee or elbow detection for curves. https://github.com/georg-unterholzner/kneebow.

License

Distributed under the MIT License. See LICENSE for more information.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kneebow-1.0.4.tar.gz (4.7 kB view details)

Uploaded Source

File details

Details for the file kneebow-1.0.4.tar.gz.

File metadata

  • Download URL: kneebow-1.0.4.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for kneebow-1.0.4.tar.gz
Algorithm Hash digest
SHA256 146fe65caf5c666a6b73749240b934fedeee1b38859656ae829c12ad65d18fce
MD5 f743801a50c553a2d7dfc71749588f4a
BLAKE2b-256 d9cf3ee22b001e0bd89dc995498120ce17acfc657ee05773f753936fe06800ce

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page