Distances and divergences between distributions implemented in python.
Project description
Distances and divergences between dictionaries implemented in python 3.6.
In the complexity notations, n
is len(a)
and m
is len(b)
.
The samples are dictionaries generated by the test utilities here.
How do I get it?
Just type into your terminal:
pip install dictances
Basic example
For each metric, an example is present in the folder examples. Here’s a basic example for those too lazy to click links (like me).
import random
from dictances import cosine, euclidean, canberra
random.seed(42) # for reproducibility
# Simple function to generate the example dictionaries
def generate_example_dict(n=1000):
return {random.randint(0, 1000): random.uniform(0, 1000) for i in range(n)}
a, b = generate_example_dict(), generate_example_dict()
print(cosine(a, b))
# >>> 0.52336690346601
print(euclidean(a, b))
# >>> 15119.400349404095
print(canberra(a, b))
# >>> 624.9088876554047
Metrics table
Metric name |
Usage example |
Average time on sample |
Complexity |
---|---|---|---|
90.4 µs ± 2.5 µs |
|||
Squared variation |
90.8 µs ± 1.43 |
||
92.3 µs ± 1.28 µs |
|||
Nth variation |
91.1 µs ± 1.2 µs |
||
92.7 µs ± 1.43 µs |
|||
92.3 µs ± 1.28 µs |
|||
91.1 µs ± 1.2 µs |
|||
101 µs ± 2.14 µs |
|||
91.1 µs ± 2.05 µs |
|||
71.8 µs ± 1.95 µs |
|||
61.3 µs ± 835 ns |
|||
46.9 µs ± 1.23 µs |
|||
28.7 µs ± 784 ns |
|||
Normalized Total Variation |
34.6 µs ± 543 ns |
||
24 µs ± 587 ns |
|||
38.2 µs ± 1.18 µs |
|||
32.7 µs ± 655 ns |
|||
42 µs ± 467 ns |
Test computer specifications
The computer on which the metrics where timed had the following specifications:
Computer specifications |
|
---|---|
Model Name |
MacBook Pro |
Processor Name |
Intel Core i7 |
Processor Speed |
2.3 GHz |
Number of Processors |
1 |
Total Number of Cores |
4 |
L2 Cache (per Core) |
256 KB |
L3 Cache |
6 MB |
Memory |
16 GB |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.