KSU Compression Algorithm Implementation
Algortihm 1 from Nearest-Neighbor Sample Compression: Efficiency, Consistency, Infinite Dimensions
Installation
- With pip:
pip install ksu - From source:
git clone --depth=1 https://github.com/nimroha/ksu_classifier.gitcd ksu_classifierpython setup.py install
Usage
Command Line
This package provides two command line tools: e-net and ksu:
e-netconstructs an epsilon net for a given epsilonksuruns the full algorithm
Both provide the -h flag to specify the arguments, and both can save the result to the disk in numpy's .npz format
Code
This package provides a class KSU(Xs, Ys, metric, [gram, prune, logLevel, n_jobs])
Xs and Ys are the data points and their respective labels as numpy arrays
metric is either a callable to compute the metric or a string that names one of our provided metrics (print KSU.METRICS.keys() for the full list)
gram (optional, default=None) a precomputed gramian matrix, will be calculated if not provided.
prune (optional, default=False) a boolean indicating whether to prune the compressed set or not (Algorithm 2 from Near-optimal sample compression for nearest neighbors)
logLevel (optional, default='CRITICAL') a string indicating the logging level (set to 'INFO' or 'DEBUG' to get more information)
n_jobs (optional, default=1) an integer defining how many cpus to use (scipy logic), pass -1 to use all. For n_jobs below -1, (n_cpus + 1 + n_jobs) are used. Thus for n_jobs = -2, all CPUs but one are used.
KSU provides a method compressData([delta, minCompress, maxCompress, greedy, stride, logLevel, numProcs])
Which selects the subset with the lowest estimated error with confidence 1 - delta. Can take arguments:
delta (optional, default=0.1) confidence for error upper bound
minCompress (optional, default=0.05) minimal compression ratio
maxCompress (optional, default=0.1) maximum compression ratio
greedy (optional, default=True) whether to use greedy or hierarichal strategy for net construction
stride (optional, default=200) how many gammas to skip between each iteration (since similar gammas will produce similar nets)
logLevel (optional, default='CRITICAL') a string indicating the logging level (set to 'INFO' or 'DEBUG' to get more information)
numProcs (optional, default=1) number of processes to use
You can then run getClassifier() which returns a 1-NN Classifer (based on sklearn's K-NN) fitted to the compressed data.
Or, run getCompressedSet() to get the compressed data as a tuple of numpy arrays (compressedXs, compressedYs).
See scripts/ for example usage
Built-in metrics
['chebyshev', 'yule', 'sokalmichener', 'canberra', 'EarthMover', 'rogerstanimoto', 'matching', 'dice', 'EditDistance', 'braycurtis', 'russellrao', 'cosine', 'cityblock', 'l1', 'manhattan', 'sqeuclidean', 'jaccard', 'seuclidean', 'sokalsneath', 'kulsinski', 'minkowski', 'mahalanobis', 'euclidean', 'l2', 'hamming', 'correlation', 'wminkowski']
Metadata
Release files for ksu 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ksu-0.5.0.tar.gz | 15.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ksu-0.5.0-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details |
Total release size: 33.8 kB
Release files / ksu-0.5.0.tar.gz
| Download URL | ksu-0.5.0.tar.gz |
|---|---|
| Size | 15.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
becb796d1c4444c0728a13bada3fffd50eb34cb1c18f765eb5988a4bdcfd8b87
|
|
BLAKE2b-256 checksum How to use checksums |
6c2c9a217ecb9689dc5a086416f23bb26964f79a19ca7d440bc0c8fcbf171f98
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.1 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.6.7
|
Release files / ksu-0.5.0-py2.py3-none-any.whl
| Download URL | ksu-0.5.0-py2.py3-none-any.whl |
|---|---|
| Size | 18.5 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
b3ddfd57bbd275766eb15a99786991163cdf37c698e0891af9bd40f5e63e8e07
|
|
BLAKE2b-256 checksum How to use checksums |
d26c18f519d3e97d39bf06c409d69587731771e06af9f78acb22f32e612b8506
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.1 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.6.7
|