Skip to content

Commit b25d779

Browse files
docs: refactor density module
1 parent d56b527 commit b25d779

3 files changed

Lines changed: 23 additions & 26 deletions

File tree

modAL/density.py

Lines changed: 17 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
"""
22
Measures for estimating the information density of a given sample.
33
"""
4+
from typing import Callable
45

56
import numpy as np
67
from scipy.spatial.distance import cosine, euclidean
78

9+
from modAL.utils.data import modALinput
810

9-
def similarize_distance(distance_measure):
11+
12+
def similarize_distance(distance_measure: Callable) -> Callable:
1013
"""
1114
Takes a distance measure and converts it into a information_density measure.
1215
13-
:param distance_measure:
14-
The distance measure to be converted into information_density measure.
15-
:type distance_measure:
16-
function
16+
Args:
17+
distance_measure: The distance measure to be converted into information_density measure.
1718
18-
:returns:
19-
- **sim** *(function)* --
20-
The information_density measure obtained from the given disance measure.
19+
Returns:
20+
The information_density measure obtained from the given distance measure.
2121
"""
2222
def sim(*args, **kwargs):
2323
return 1/(1 + distance_measure(*args, **kwargs))
@@ -29,25 +29,20 @@ def sim(*args, **kwargs):
2929
euclidean_similarity = similarize_distance(euclidean)
3030

3131

32-
def information_density(X, similarity_measure=cosine_similarity):
32+
def information_density(X: modALinput, similarity_measure: Callable = cosine_similarity) -> np.ndarray:
3333
"""
34-
Calculates the information density metric of the given data using the similarity
35-
measure given.
34+
Calculates the information density metric of the given data using the similarity measure given.
3635
37-
:param X:
38-
The data for which the information density is to be calculated.
39-
:type X:
40-
numpy.ndarray of shape (n_samples, n_features)
36+
Args:
37+
X: The data for which the information density is to be calculated.
38+
similarity_measure: The similarity measure to be used. Should take two 1d numpy.ndarrays for argument.
4139
42-
:param similarity_measure:
43-
The similarity measure to be used. Should take two 1d numpy.ndarrays for argument.
44-
:type similarity_measure:
45-
function
40+
Todo:
41+
Should work with all possible modALinput.
42+
Perhaps refactor the module to use some stuff from sklearn.metrics.pairwise
4643
47-
:returns:
48-
- **inf_density** *(numpy.ndarray of shape (n_samples, ))* --
44+
Returns:
4945
The information density for each sample.
50-
5146
"""
5247
inf_density = np.zeros(shape=(X.shape[0],))
5348
for X_idx, X_inst in enumerate(X):

modAL/models.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,16 @@
99
from typing import Union, Callable, Optional, Tuple, List, Iterator, Any
1010

1111
import numpy as np
12-
import scipy.sparse as sp
1312
from sklearn.base import BaseEstimator
1413
from sklearn.metrics import accuracy_score
1514
from sklearn.utils import check_X_y
1615

1716
from modAL.utils.validation import check_class_labels, check_class_proba
18-
from modAL.utils.data import data_vstack
17+
from modAL.utils.data import data_vstack, modALinput
1918
from modAL.uncertainty import uncertainty_sampling
2019
from modAL.disagreement import vote_entropy_sampling, max_std_sampling
2120

2221

23-
modALinput = Union[list, np.ndarray, sp.csr_matrix]
24-
2522
if sys.version_info >= (3, 4):
2623
ABC = abc.ABC
2724
else:

modAL/utils/data.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
1+
from typing import Union
2+
13
import numpy as np
24
import scipy.sparse as sp
35

46

7+
modALinput = Union[list, np.ndarray, sp.csr_matrix]
8+
9+
510
def data_vstack(blocks):
611
"""
712
Stack vertically both sparse and dense arrays.

0 commit comments

Comments
 (0)