1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
from umap import UMAP
import pytest
try:
# works for sklearn>=0.22
from sklearn.manifold import trustworthiness
except ImportError:
# this is to comply with requirements (scikit-learn>=0.20)
# More recent versions of sklearn have exposed trustworthiness
# in top level module API
# see: https://github.com/scikit-learn/scikit-learn/pull/15337
from sklearn.manifold.t_sne import trustworthiness
def test_densmap_trustworthiness(nn_data):
data = nn_data[:50]
embedding, rad_h, rad_l = UMAP(
n_neighbors=10,
min_dist=0.01,
random_state=42,
n_epochs=100,
densmap=True,
output_dens=True,
).fit_transform(data)
trust = trustworthiness(data, embedding, n_neighbors=10)
assert (
trust >= 0.72
), "Insufficiently trustworthy embedding for" "nn dataset: {}".format(trust)
@pytest.mark.skip()
def test_densmap_trustworthiness_random_init(nn_data): # pragma: no cover
data = nn_data[:50]
embedding = UMAP(
n_neighbors=10,
min_dist=0.01,
random_state=42,
init="random",
densmap=True,
).fit_transform(data)
trust = trustworthiness(data, embedding, n_neighbors=10)
assert (
trust >= 0.75
), "Insufficiently trustworthy embedding for" "nn dataset: {}".format(trust)
def test_densmap_trustworthiness_on_iris(iris):
densmap_iris_model = UMAP(
n_neighbors=10,
min_dist=0.01,
random_state=42,
densmap=True,
verbose=True,
).fit(iris.data)
embedding = densmap_iris_model.embedding_
trust = trustworthiness(iris.data, embedding, n_neighbors=10)
assert (
trust >= 0.97
), "Insufficiently trustworthy embedding for" "iris dataset: {}".format(trust)
with pytest.raises(NotImplementedError):
densmap_iris_model.transform(iris.data[:10])
with pytest.raises(ValueError):
densmap_iris_model.inverse_transform(embedding[:10])
def test_densmap_trustworthiness_on_iris_supervised(iris):
densmap_iris_model = UMAP(
n_neighbors=10,
min_dist=0.01,
random_state=42,
densmap=True,
verbose=True,
).fit(iris.data, y=iris.target)
embedding = densmap_iris_model.embedding_
trust = trustworthiness(iris.data, embedding, n_neighbors=10)
assert (
trust >= 0.95
), "Insufficiently trustworthy embedding for" "iris dataset: {}".format(trust)
|