mirror of
https://github.com/Doctorado-ML/STree.git
synced 2025-08-17 16:36:01 +00:00
Change project builder to hatch
Update actions in Makefile
This commit is contained in:
42
Makefile
42
Makefile
@@ -1,46 +1,36 @@
|
|||||||
SHELL := /bin/bash
|
SHELL := /bin/bash
|
||||||
.DEFAULT_GOAL := help
|
.DEFAULT_GOAL := help
|
||||||
.PHONY: coverage deps help lint push test doc build
|
.PHONY: audit coverage help lint test doc doc-clean build
|
||||||
|
|
||||||
coverage: ## Run tests with coverage
|
coverage: ## Run tests with coverage
|
||||||
coverage erase
|
@coverage erase
|
||||||
coverage run -m unittest -v stree.tests
|
@coverage run -m unittest -v stree.tests
|
||||||
coverage report -m
|
@coverage report -m
|
||||||
|
|
||||||
deps: ## Install dependencies
|
|
||||||
pip install -r requirements.txt
|
|
||||||
|
|
||||||
devdeps: ## Install development dependencies
|
|
||||||
pip install black pip-audit flake8 mypy coverage
|
|
||||||
|
|
||||||
lint: ## Lint and static-check
|
lint: ## Lint and static-check
|
||||||
black stree
|
@black stree
|
||||||
flake8 stree
|
@flake8 stree
|
||||||
mypy stree
|
|
||||||
|
|
||||||
push: ## Push code with tags
|
|
||||||
git push && git push --tags
|
|
||||||
|
|
||||||
test: ## Run tests
|
test: ## Run tests
|
||||||
python -m unittest -v stree.tests
|
@python -m unittest -v stree.tests
|
||||||
|
|
||||||
doc: ## Update documentation
|
doc: ## Update documentation
|
||||||
make -C docs --makefile=Makefile html
|
@make -C docs --makefile=Makefile html
|
||||||
|
|
||||||
build: ## Build package
|
build: ## Build package
|
||||||
rm -fr dist/*
|
@rm -fr dist/*
|
||||||
rm -fr build/*
|
@rm -fr build/*
|
||||||
python setup.py sdist bdist_wheel
|
@hatch build
|
||||||
|
|
||||||
doc-clean: ## Update documentation
|
doc-clean: ## Clean documentation folders
|
||||||
make -C docs --makefile=Makefile clean
|
@make -C docs --makefile=Makefile clean
|
||||||
|
|
||||||
audit: ## Audit pip
|
audit: ## Audit pip
|
||||||
pip-audit
|
@pip-audit
|
||||||
|
|
||||||
help: ## Show help message
|
help: ## Show this help message
|
||||||
@IFS=$$'\n' ; \
|
@IFS=$$'\n' ; \
|
||||||
help_lines=(`fgrep -h "##" $(MAKEFILE_LIST) | fgrep -v fgrep | sed -e 's/\\$$//' | sed -e 's/##/:/'`); \
|
help_lines=(`grep -Fh "##" $(MAKEFILE_LIST) | grep -Fv fgrep | sed -e 's/\\$$//' | sed -e 's/##/:/'`); \
|
||||||
printf "%s\n\n" "Usage: make [task]"; \
|
printf "%s\n\n" "Usage: make [task]"; \
|
||||||
printf "%-20s %s\n" "task" "help" ; \
|
printf "%-20s %s\n" "task" "help" ; \
|
||||||
printf "%-20s %s\n" "------" "----" ; \
|
printf "%-20s %s\n" "------" "----" ; \
|
||||||
|
@@ -1,17 +1,10 @@
|
|||||||
[build-system]
|
[build-system]
|
||||||
requires = ["setuptools", "scikit-learn>1.0", "numpy", "mufs"]
|
requires = ["hatchling"]
|
||||||
build-backend = "setuptools.build_meta"
|
build-backend = "hatchling.build"
|
||||||
|
|
||||||
[tool.setuptools]
|
|
||||||
packages = ["stree"]
|
|
||||||
license-files = ["LICENSE"]
|
|
||||||
|
|
||||||
[tool.setuptools.dynamic]
|
|
||||||
version = { attr = "stree.__version__" }
|
|
||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "STree"
|
name = "STree"
|
||||||
dependencies = ["scikit-learn>1.0", "numpy", "mufs"]
|
dependencies = ["scikit-learn>1.0", "mufs"]
|
||||||
license = { file = "LICENSE" }
|
license = { file = "LICENSE" }
|
||||||
description = "Oblique decision tree with svm nodes."
|
description = "Oblique decision tree with svm nodes."
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
@@ -45,12 +38,19 @@ classifiers = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[project.optional-dependencies]
|
[project.optional-dependencies]
|
||||||
dev = ["black", "flake8", "mypy", "coverage"]
|
dev = ["black", "flake8", "coverage", "hatch", "pip-audit"]
|
||||||
|
doc = ["sphinx", "myst-parser", "sphinx_rtd_theme", "sphinx-autodoc-typehints"]
|
||||||
|
|
||||||
[project.urls]
|
[project.urls]
|
||||||
Code = "https://github.com/Doctorado-ML/STree"
|
Code = "https://github.com/Doctorado-ML/STree"
|
||||||
Documentation = "https://stree.readthedocs.io/en/latest/index.html"
|
Documentation = "https://stree.readthedocs.io/en/latest/index.html"
|
||||||
|
|
||||||
|
[tool.hatch.version]
|
||||||
|
path = "stree/_version.py"
|
||||||
|
|
||||||
|
[tool.hatch.build.targets.sdist]
|
||||||
|
include = ["/stree"]
|
||||||
|
|
||||||
[tool.coverage.run]
|
[tool.coverage.run]
|
||||||
branch = true
|
branch = true
|
||||||
source = ["stree"]
|
source = ["stree"]
|
||||||
@@ -62,7 +62,7 @@ fail_under = 100
|
|||||||
|
|
||||||
[tool.black]
|
[tool.black]
|
||||||
line-length = 79
|
line-length = 79
|
||||||
target_version = ['py311']
|
target-version = ["py311"]
|
||||||
include = '\.pyi?$'
|
include = '\.pyi?$'
|
||||||
exclude = '''
|
exclude = '''
|
||||||
/(
|
/(
|
||||||
|
@@ -414,7 +414,8 @@ class Splitter:
|
|||||||
)
|
)
|
||||||
return tuple(
|
return tuple(
|
||||||
sorted(
|
sorted(
|
||||||
range(len(feature_list)), key=lambda sub: feature_list[sub]
|
range(len(feature_list)),
|
||||||
|
key=lambda sub: feature_list[sub],
|
||||||
)[-max_features:]
|
)[-max_features:]
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -529,7 +530,10 @@ class Splitter:
|
|||||||
return entropy
|
return entropy
|
||||||
|
|
||||||
def information_gain(
|
def information_gain(
|
||||||
self, labels: np.array, labels_up: np.array, labels_dn: np.array
|
self,
|
||||||
|
labels: np.array,
|
||||||
|
labels_up: np.array,
|
||||||
|
labels_dn: np.array,
|
||||||
) -> float:
|
) -> float:
|
||||||
"""Compute information gain of a split candidate
|
"""Compute information gain of a split candidate
|
||||||
|
|
||||||
|
@@ -175,7 +175,8 @@ class Stree(BaseEstimator, ClassifierMixin):
|
|||||||
return __version__
|
return __version__
|
||||||
|
|
||||||
def __call__(self) -> str:
|
def __call__(self) -> str:
|
||||||
"""Only added to comply with scikit-learn base estimator for ensemble"""
|
"""Only added to comply with scikit-learn base sestimator for ensembles
|
||||||
|
"""
|
||||||
return self.version()
|
return self.version()
|
||||||
|
|
||||||
def _more_tags(self) -> dict:
|
def _more_tags(self) -> dict:
|
||||||
@@ -188,7 +189,10 @@ class Stree(BaseEstimator, ClassifierMixin):
|
|||||||
return {"requires_y": True}
|
return {"requires_y": True}
|
||||||
|
|
||||||
def fit(
|
def fit(
|
||||||
self, X: np.ndarray, y: np.ndarray, sample_weight: np.array = None
|
self,
|
||||||
|
X: np.ndarray,
|
||||||
|
y: np.ndarray,
|
||||||
|
sample_weight: np.array = None,
|
||||||
) -> "Stree":
|
) -> "Stree":
|
||||||
"""Build the tree based on the dataset of samples and its labels
|
"""Build the tree based on the dataset of samples and its labels
|
||||||
|
|
||||||
@@ -343,7 +347,11 @@ class Stree(BaseEstimator, ClassifierMixin):
|
|||||||
)
|
)
|
||||||
node.set_down(
|
node.set_down(
|
||||||
self._train(
|
self._train(
|
||||||
X_D, y_d, sw_d, depth + 1, title + f" - Down({depth+1})"
|
X_D,
|
||||||
|
y_d,
|
||||||
|
sw_d,
|
||||||
|
depth + 1,
|
||||||
|
title + f" - Down({depth+1})",
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
return node
|
return node
|
||||||
|
Reference in New Issue
Block a user