Metadata-Version: 2.1
Name: scalg
Version: 0.1.2
Summary: Analyse data file using a range based procentual proximity algorithm and calculate the linear maximum likelihood estimation.
Home-page: https://github.com/markmelnic/Scoring-Algorithm
Author: Mark Melnic
Author-email: commerce.markmelnic@gmail.com
License: MIT
Platform: UNKNOWN
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Description-Content-Type: text/markdown


# Scoring Algorithm (SCALG)

This algorithm works based on a percentual range proximity principle. Initially it was developed for a personal project, however later I found out it is a form of Newton's method used in statistics to solve maximum likelihood equations numerically.

## Usage

    pip install scalg

As of __14 september 2020__ it contains two methods (`score` and `score_columns`) which will be described and demonstrated in the examples below.

    import scalg

## Examples

This will be the sample dataset used as source_data withing the examples with the corresponding indexes and column weights.

    Columns ->  0     1      2      3
    Weights ->  1     0      0      1
            1[[2016 ,21999 ,62000  ,181],
    Sets -> 2 [2013 ,21540 ,89000  ,223],
            3 [2015 ,18900 ,100000 ,223],
            4 [2013 ,24200 ,115527 ,223],
            5 [2016 ,24990 ,47300  ,223]]

### scalg.score(source_data : list, weights : list, *args) -> list

The output if you pass in source_data and weights:

    [[2016, 21999, 62000,  181, 2.2756757812463335],
     [2013, 21540, 89000,  223, 1.9553074815952338],
     [2015, 18900, 100000, 223, 2.894245191297678],
     [2013, 24200, 115527, 223, 1.1297208538587848],
     [2016, 24990, 47300,  223, 3.0]]

The output if you pass in source_data, weights and "scores":

    [2.2756757812463335, 1.9553074815952338, 2. 894245191297678, 1.1297208538587848, 3.0]

The output if you pass in source_data, weights and "score_lists":

    [[1.0, 0.0, 0.6666666666666666, 0.0, 1.0]
     [0.49113300492610834, 0.5665024630541872, 1.0, 0.12972085385878485, 0.0]
     [0.7845427763202251, 0.38880501854104677, 0.22757852463101114, 0.0, 1.0]
     [0.0, 1.0, 1.0, 1.0, 1.0]]

### scalg.score_columns(source_data : list, columns : list, weights : list, *args) -> list

Here you may use the same weights which you would use in `scalg.score`, or you may specify the weights of each column in the corresponding order. In this example using `[1, 0, 0, 1]` or `[0, 1]` would make no difference.

The output if you pass in source_data, columns and weights:

    [[21999, 181, 0.49113300492610834],
     [21540, 223, 1.5665024630541873],
     [18900, 223, 2.0],
     [24200, 223, 1.1297208538587848],
     [24990, 223, 1.0]]

The output if you pass in source_data, columns, weights and "scores":

    [0.49113300492610834, 1.5665024630541873, 2.0, 1.1297208538587848, 1.0]

The output if you pass in source_data, columns, weights and "score_lists":

    [[0.49113300492610834, 0.5665024630541872, 1.0, 0.12972085385878485, 0.0],
     [0.0, 1.0, 1.0, 1.0, 1.0]]


