GithubHelp home page GithubHelp logo

codefrwd / onedclusterer Goto Github PK

View Code? Open in Web Editor NEW

This project forked from hamdiakoguz/onedclusterer

0.0 0.0 0.0 196 KB

a tiny ruby library for one-dimensional clustering methods.

License: GNU Lesser General Public License v3.0

Shell 0.60% Ruby 99.40%

onedclusterer's Introduction

Onedclusterer

a tiny ruby library for one-dimensional clustering methods.

Usage

Ckmeans.1d.dp

A dynamic programming algorithm for optimal one-dimensional k-means clustering. The algorithm minimizes the sum of squares of within-cluster distances. As an alternative to the standard heuristic k-means algorithm, this algorithm guarantees optimality and repeatability.
https://cran.r-project.org/web/packages/Ckmeans.1d.dp/index.html

require 'onedclusterer'
data = [1259.61,2024.82,1855.75,1559.04,1707.65,1107.1,2155.8]
ckmeans = OnedClusterer::Ckmeans.new(data, 1, 7) # chooses an optimal number clusters between 1 and 7
p ckmeans.bounds # => [0, 1259.61, 1855.75, 2155.8]
p ckmeans.clusters # => [[1107.1, 1259.61], [1559.04, 1707.65, 1855.75], [2024.82, 2155.8]]

# exact number of clusters can be requested instead of min and max
ckmeans = OnedClusterer::Ckmeans.new(data, 4)
p ckmeans.bounds # => [0, 1259.61, 1559.04, 1855.75, 2155.8]
p ckmeans.clusters # => [[1107.1, 1259.61], [1559.04], [1707.65, 1855.75], [2024.82, 2155.8]]  

Jenks natural breaks:

The Jenks natural breaks classification method seeks to reduce the variance within classes and maximize the variance between classes.
http://en.wikipedia.org/wiki/Jenks_natural_breaks_optimization
http://www.macwright.org/2013/02/18/literate-jenks.html

require 'onedclusterer'
data = [1259.61,2024.82,1855.75,1559.04,1707.65,1107.1,2155.8]
jenks = OnedClusterer::Jenks.new(data, 4)
p jenks.bounds # => [0, 1259.61, 1559.04, 1855.75, 2155.8]
p jenks.clusters # => [[1107.1, 1259.61], [1559.04], [1707.65, 1855.75], [2024.82, 2155.8]]

Installation

Add this line to your application's Gemfile:

gem 'onedclusterer'

And then execute:

$ bundle

Or install it yourself as:

$ gem install onedclusterer

Development

Build Status

After checking out the repo, run bin/setup to install dependencies. Then, run rake test to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/Hamdiakoguz/onedclusterer. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

onedclusterer's People

Contributors

hamdiakoguz avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.