Skip to content

Commit 26e5871

Browse files
authored
Update dimensionality_reduction.py
1 parent a28b8a7 commit 26e5871

1 file changed

Lines changed: 9 additions & 23 deletions

File tree

machine_learning/dimensionality_reduction.py

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,4 @@
11
# Copyright (c) 2023 Diego Gasco (diego.gasco99@gmail.com), Diegomangasco on GitHub
2-
"""
3-
Implementation of dimensionality reduction algorithms.
4-
5-
Includes:
6-
- Principal Component Analysis (PCA)
7-
- Linear Discriminant Analysis (LDA)
8-
- Locally Linear Embedding (LLE)
9-
- Multidimensional Scaling (MDS)
10-
"""
112

123
"""
134
Requirements:
@@ -17,8 +8,8 @@
178
- Each column of the features matrix corresponds to a class item
189
"""
1910

11+
import doctest
2012
import logging
21-
2213
import numpy as np
2314
import pytest
2415
from scipy.linalg import eigh
@@ -419,20 +410,16 @@ def test_linear_discriminant_analysis() -> None:
419410

420411
# Assert that the function raises an AssertionError if dimensions > classes
421412
with pytest.raises(AssertionError):
422-
projected_data = linear_discriminant_analysis(
423-
features, labels, classes, dimensions
424-
)
425-
if isinstance(projected_data, np.ndarray):
426-
raise AssertionError(
427-
"Did not raise AssertionError for dimensions > classes"
428-
)
413+
linear_discriminant_analysis(features, labels, classes, dimensions)
429414

430415

431416
def test_principal_component_analysis() -> None:
432417
"""Test function for Principal Component Analysis."""
433418
features = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
434419
dimensions = 2
435-
expected_output = np.array([[6.92820323, 8.66025404, 10.39230485], [3.0, 3.0, 3.0]])
420+
expected_output = np.array(
421+
[[6.92820323, 8.66025404, 10.39230485], [3.0, 3.0, 3.0]]
422+
)
436423

437424
output = principal_component_analysis(features, dimensions)
438425
if not np.allclose(expected_output, output):
@@ -443,9 +430,10 @@ def test_dimensionality_reduction() -> None:
443430
"""Test all dimensionality reduction algorithms."""
444431
print("Testing all dimensionality reduction algorithms...")
445432

446-
# Create sample data
447-
features = np.random.rand(5, 50)
448-
labels = np.random.randint(0, 3, 50)
433+
# Create sample data using numpy Generator
434+
rng = np.random.default_rng(42)
435+
features = rng.random((5, 50))
436+
labels = rng.integers(0, 3, 50)
449437
dimensions = 2
450438

451439
try:
@@ -477,7 +465,5 @@ def test_dimensionality_reduction() -> None:
477465

478466

479467
if __name__ == "__main__":
480-
import doctest
481-
482468
doctest.testmod()
483469
test_dimensionality_reduction()

0 commit comments

Comments
 (0)