ndscape 0.1.3__tar.gz → 0.1.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ndscape-0.1.3 → ndscape-0.1.4}/CITATION.cff +18 -2
- {ndscape-0.1.3 → ndscape-0.1.4}/PKG-INFO +4 -4
- {ndscape-0.1.3 → ndscape-0.1.4}/README.md +3 -1
- {ndscape-0.1.3 → ndscape-0.1.4}/ndscape/README.md +1 -1
- {ndscape-0.1.3 → ndscape-0.1.4}/ndscape.egg-info/PKG-INFO +4 -4
- ndscape-0.1.4/ndscape.egg-info/scm_version.json +8 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/pyproject.toml +2 -2
- ndscape-0.1.3/ndscape.egg-info/scm_version.json +0 -8
- {ndscape-0.1.3 → ndscape-0.1.4}/.gitattributes +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/.github/workflows/release.yml +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/.gitignore +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/LICENSE +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/MANIFEST.in +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/config.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/configs/artifacts.yml +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/core.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/nd/ACND.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/nd/BBoK.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/nd/BestOfK.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/nd/CBND.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/nd/NDC.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/nd/NestedDichotomy.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/nd/RPND.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/nd/RandomGeneration.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/nd/__init__.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/ndscape/__init__.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/ndscape/api.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/ndscape/plot.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/ndscape.egg-info/SOURCES.txt +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/ndscape.egg-info/dependency_links.txt +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/ndscape.egg-info/requires.txt +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/ndscape.egg-info/scm_file_list.json +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/ndscape.egg-info/top_level.txt +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/paper_artifact.md +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/pytest.ini +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/reproduce.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/requirements.txt +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/run_datasets.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/run_simulations.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/scripts/csv_to_configs.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/scripts/download_zenodo.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/scripts/make_ablation_summaries.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/scripts/make_ablation_tables.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/scripts/make_artifacts.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/scripts/make_dataset_plots.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/scripts/make_dataset_tables.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/scripts/make_paper_tables.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/scripts/make_simulation_plots.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/scripts/make_simulation_tables.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/scripts/moran_simulation_analysis.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/scripts/verify_artifacts.py +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/setup.cfg +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/zenodo/art_1_C10_N15000_s0_d2.joblib +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/zenodo/art_1_C19_N15000_s0_d2.joblib +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/zenodo/art_1_C6_N945_s0_d2.joblib +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/zenodo/art_1_C7_N10395_s0_d2.joblib +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/zenodo/art_1_C8_N15000_s0_d2.joblib +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/zenodo/art_1_C9_N15000_s0_d2.joblib +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/zenodo/bow_1_C6_N945_s0_d2.joblib +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/zenodo/bow_1_C7_N10395_s0_d2.joblib +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/zenodo/manifest.csv +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/zenodo/rf_1_C6_N945_s0_d2.joblib +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/zenodo/rf_1_C7_N10395_s0_d2.joblib +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/zenodo/simulation_configs.csv +0 -0
- {ndscape-0.1.3 → ndscape-0.1.4}/zenodo/simulation_configs_dt.csv +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
cff-version: 1.
|
|
1
|
+
cff-version: 1.2.0
|
|
2
2
|
message: "If you use this software, please cite it as below."
|
|
3
3
|
type: software
|
|
4
|
-
title: "
|
|
4
|
+
title: "ndscape: nested dichotomy tree-space embedding"
|
|
5
5
|
abstract: >
|
|
6
6
|
Code for scoring nested-dichotomy (ND) tree structures on
|
|
7
7
|
multiclass datasets, embedding the tree space via metric MDS, and running
|
|
@@ -18,14 +18,30 @@ authors:
|
|
|
18
18
|
orcid: "https://orcid.org/0000-0002-5959-1808"
|
|
19
19
|
|
|
20
20
|
repository-code: "https://github.com/res-lucid/ndscape"
|
|
21
|
+
url: "https://res-lucid.github.io/ndscape-plots/"
|
|
21
22
|
license: MIT
|
|
22
23
|
doi: "10.5281/zenodo.20456943"
|
|
23
24
|
version: "0.1.3"
|
|
24
25
|
date-released: "2026-06-17"
|
|
25
26
|
keywords:
|
|
27
|
+
- nested dichotomies
|
|
26
28
|
- nested-dichotomy
|
|
29
|
+
- multiclass classification
|
|
27
30
|
- tree-space
|
|
28
31
|
- bias-variance
|
|
29
32
|
- MDS
|
|
30
33
|
- spatial-autocorrelation
|
|
31
34
|
- machine-learning
|
|
35
|
+
preferred-citation:
|
|
36
|
+
type: article
|
|
37
|
+
title: "ndscape: a structural map of the nested dichotomy space"
|
|
38
|
+
authors:
|
|
39
|
+
- family-names: "Dix-Matthews"
|
|
40
|
+
given-names: "Maxwell"
|
|
41
|
+
- family-names: "Hodkiewicz"
|
|
42
|
+
given-names: "Melinda"
|
|
43
|
+
- family-names: "Polpo"
|
|
44
|
+
given-names: "Adriano"
|
|
45
|
+
year: 2026
|
|
46
|
+
doi: "10.48550/arXiv.2610.18050"
|
|
47
|
+
url: "https://arxiv.org/abs/2610.18050"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ndscape
|
|
3
|
-
Version: 0.1.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 0.1.4
|
|
4
|
+
Summary: Nested dichotomies in Python: fit, score and map nested dichotomy trees for multiclass classification.
|
|
5
5
|
Author: Maxwell Dix-Matthews
|
|
6
6
|
License-Expression: MIT
|
|
7
7
|
Project-URL: Homepage, https://github.com/res-lucid/ndscape
|
|
@@ -10,7 +10,7 @@ Project-URL: Paper, https://arxiv.org/abs/2610.18050
|
|
|
10
10
|
Project-URL: Issues, https://github.com/res-lucid/ndscape/issues
|
|
11
11
|
Project-URL: Interactive maps, https://res-lucid.github.io/ndscape-plots/
|
|
12
12
|
Project-URL: Data archive, https://doi.org/10.5281/zenodo.20456943
|
|
13
|
-
Keywords: nested-dichotomy,multiclass,classification,scikit-learn
|
|
13
|
+
Keywords: nested-dichotomy,nested dichotomies,multiclass,multiclass classification,hierarchical classification,tree embedding,classification,scikit-learn
|
|
14
14
|
Classifier: Programming Language :: Python :: 3
|
|
15
15
|
Classifier: Intended Audience :: Science/Research
|
|
16
16
|
Classifier: Topic :: Scientific/Engineering
|
|
@@ -30,7 +30,7 @@ Dynamic: license-file
|
|
|
30
30
|
|
|
31
31
|
# ndscape
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
Nested dichotomies in Python: fit, score and map nested dichotomy (ND) trees for multiclass classification.
|
|
34
34
|
|
|
35
35
|
A nested dichotomy reduces an M-class problem to a tree of binary splits
|
|
36
36
|
(e.g. {0,1,2} vs {3,4}, then {0} vs {1,2}, ...). ndscape lets you fit one,
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
# ndscape:
|
|
1
|
+
# ndscape: nested dichotomies in Python
|
|
2
2
|
|
|
3
3
|
[](https://pypi.org/project/ndscape/)
|
|
4
4
|
[](https://doi.org/10.5281/zenodo.20456943)
|
|
5
5
|
[](LICENSE)
|
|
6
6
|
|
|
7
|
+
`ndscape` is a Python package for nested dichotomies in multiclass classification: it fits and scores nested dichotomy trees and maps the space of possible trees, so that structurally similar trees sit close together.
|
|
8
|
+
|
|
7
9
|
A classification model assigns an observation to one of several classes, and when there are more than two, the task becomes a multiclass problem. A nested dichotomy (ND) gives that multiclass problem a visible structure: it arranges the classes in a binary tree and fits a classifier at each split, so the final prediction is built from a sequence of simpler binary decisions.
|
|
8
10
|
|
|
9
11
|
Any binary classifier can be used at the nodes. With probabilistic classifiers, the probability of each class is the product of the branch probabilities along its path from root to leaf. And because the tree records which classes are grouped together, where they separate, and in what order, you can inspect the fitted model and compare its structure with what you already know about the problem.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ndscape
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Nested dichotomies in Python: fit, score and map nested dichotomy (ND) trees for multiclass classification.
|
|
4
4
|
|
|
5
5
|
A nested dichotomy reduces an M-class problem to a tree of binary splits
|
|
6
6
|
(e.g. {0,1,2} vs {3,4}, then {0} vs {1,2}, ...). ndscape lets you fit one,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ndscape
|
|
3
|
-
Version: 0.1.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 0.1.4
|
|
4
|
+
Summary: Nested dichotomies in Python: fit, score and map nested dichotomy trees for multiclass classification.
|
|
5
5
|
Author: Maxwell Dix-Matthews
|
|
6
6
|
License-Expression: MIT
|
|
7
7
|
Project-URL: Homepage, https://github.com/res-lucid/ndscape
|
|
@@ -10,7 +10,7 @@ Project-URL: Paper, https://arxiv.org/abs/2610.18050
|
|
|
10
10
|
Project-URL: Issues, https://github.com/res-lucid/ndscape/issues
|
|
11
11
|
Project-URL: Interactive maps, https://res-lucid.github.io/ndscape-plots/
|
|
12
12
|
Project-URL: Data archive, https://doi.org/10.5281/zenodo.20456943
|
|
13
|
-
Keywords: nested-dichotomy,multiclass,classification,scikit-learn
|
|
13
|
+
Keywords: nested-dichotomy,nested dichotomies,multiclass,multiclass classification,hierarchical classification,tree embedding,classification,scikit-learn
|
|
14
14
|
Classifier: Programming Language :: Python :: 3
|
|
15
15
|
Classifier: Intended Audience :: Science/Research
|
|
16
16
|
Classifier: Topic :: Scientific/Engineering
|
|
@@ -30,7 +30,7 @@ Dynamic: license-file
|
|
|
30
30
|
|
|
31
31
|
# ndscape
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
Nested dichotomies in Python: fit, score and map nested dichotomy (ND) trees for multiclass classification.
|
|
34
34
|
|
|
35
35
|
A nested dichotomy reduces an M-class problem to a tree of binary splits
|
|
36
36
|
(e.g. {0,1,2} vs {3,4}, then {0} vs {1,2}, ...). ndscape lets you fit one,
|
|
@@ -5,14 +5,14 @@ build-backend = "setuptools.build_meta"
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ndscape"
|
|
7
7
|
dynamic = ["version"]
|
|
8
|
-
description = "
|
|
8
|
+
description = "Nested dichotomies in Python: fit, score and map nested dichotomy trees for multiclass classification."
|
|
9
9
|
readme = "ndscape/README.md"
|
|
10
10
|
license = "MIT"
|
|
11
11
|
requires-python = ">=3.9"
|
|
12
12
|
authors = [
|
|
13
13
|
{name = "Maxwell Dix-Matthews"},
|
|
14
14
|
]
|
|
15
|
-
keywords = ["nested-dichotomy", "multiclass", "classification", "scikit-learn"]
|
|
15
|
+
keywords = ["nested-dichotomy", "nested dichotomies", "multiclass", "multiclass classification", "hierarchical classification", "tree embedding", "classification", "scikit-learn"]
|
|
16
16
|
classifiers = [
|
|
17
17
|
"Programming Language :: Python :: 3",
|
|
18
18
|
"Intended Audience :: Science/Research",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|