Skip to content

Commit

Permalink
Merge pull request #10 from INGEOTEC/develop
Browse files Browse the repository at this point in the history
Version - 0.1.0
  • Loading branch information
mgraffg authored Aug 21, 2024
2 parents 832052c + 0a69589 commit 4f4a19b
Show file tree
Hide file tree
Showing 10 changed files with 670 additions and 37 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/pip.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ jobs:
shell: bash -l {0}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
os: [ubuntu-latest, windows-latest]
python-version: ["3.9", "3.10", "3.11"]
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: conda-incubator/setup-miniconda@v2
uses: conda-incubator/setup-miniconda@v3
with:
activate-environment: test
auto-update-conda: true
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@ jobs:
shell: bash -l {0}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
os: [ubuntu-latest, windows-latest]
python-version: ["3.9", "3.10", "3.11"]
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: conda-incubator/setup-miniconda@v2
uses: conda-incubator/setup-miniconda@v3
with:
activate-environment: test
auto-update-conda: true
Expand Down
Binary file added CompStats/.DS_Store
Binary file not shown.
6 changes: 4 additions & 2 deletions CompStats/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
__version__ = '0.0.6'
__version__ = '0.1.0'
from CompStats.bootstrap import StatisticSamples
from CompStats.measurements import CI, difference_p_value
from CompStats.measurements import CI, SE, difference_p_value
from CompStats.performance import performance, difference, all_differences, plot_performance, plot_difference
from CompStats.performance import performance_multiple_metrics, difference_multiple, plot_performance_multiple, plot_difference_multiple
from CompStats.performance import all_differences_multiple, plot_performance2, plot_difference2, plot_scatter_matrix
7 changes: 5 additions & 2 deletions CompStats/bootstrap.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,12 @@ class StatisticSamples:
def __init__(self,
statistic: Callable[[np.ndarray], float]=np.mean,
num_samples: int=500,
n_jobs: int=1):
n_jobs: int=1,
BiB: bool=True):
self.statistic = statistic
self.num_samples = num_samples
self.n_jobs = n_jobs
self.BiB = BiB # Guardar el parámetro BiB
self._samples = None
self._calls = {}
self._info = {}
Expand All @@ -67,7 +69,8 @@ def get_params(self):
"""Parameters"""
return dict(statistic=self.statistic,
num_samples=self.num_samples,
n_jobs=self.n_jobs)
n_jobs=self.n_jobs,
BiB=self.BiB) # Añadir BiB a los parámetros

def __sklearn_clone__(self):
klass = self.__class__
Expand Down
33 changes: 29 additions & 4 deletions CompStats/measurements.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,38 @@ def CI(samples: np.ndarray, alpha=0.05):
(0.6, 1.0)
"""
if isinstance(samples, StatisticSamples):
return {k: CI(v) for k, v in samples.calls.items()}
return {k: CI(v, alpha=alpha) for k, v in samples.calls.items()}
alpha = alpha / 2
return (np.percentile(samples, alpha * 100, axis=0),
np.percentile(samples, (1 - alpha) * 100, axis=0))


def SE(samples: np.ndarray):
"""Compute the Standard Error of a statistic using bootstrap.
>>> from CompStats import StatisticSamples, SE
>>> from sklearn.metrics import accuracy_score
>>> import numpy as np
>>> labels = np.r_[[0, 0, 0, 0, 0, 1, 1, 1, 1, 1]]
>>> pred = np.r_[[0, 0, 1, 0, 0, 1, 1, 1, 0, 1]]
>>> bootstrap = StatisticSamples(statistic=accuracy_score)
>>> samples = bootstrap(labels, pred)
>>> SE(samples)
"""
if isinstance(samples, StatisticSamples):
return {k: SE(v) for k, v in samples.calls.items()}
return np.std(samples, axis=0)


def difference_p_value(statistic_samples: StatisticSamples):
def difference_p_value(samples: np.ndarray, BiB: bool = True):
"""Compute the difference p-value"""
return {k: (v > 2 * np.mean(v)).mean()
for k, v in statistic_samples.calls.items()}
if isinstance(samples, StatisticSamples):
if samples.BiB:
return {k: (v > 2 * np.mean(v)).mean() for k, v in samples.calls.items()}
else:
return {k: (v < 2 * np.mean(v)).mean() for k, v in samples.calls.items()}
else:
if BiB:
return np.mean(samples > 2 * np.mean(samples, axis=0), axis=0)
else:
return np.mean(samples < 2 * np.mean(samples, axis=0), axis=0)
Loading

0 comments on commit 4f4a19b

Please sign in to comment.