- Notifications
You must be signed in to change notification settings - Fork 44
Open
Description
My issue is about fixing test errors on MLKNNClassificationVoter.
Reproducing code example:
ProgLearn/proglearn/tests/test_voter.py
Lines 81 to 104 in ca15f3b
| def test_correct_vote(self): | |
| # set random seed | |
| np.random.seed(0) | |
| # generate training data and classes | |
| X = np.concatenate( | |
| ( | |
| np.random.normal(0, 0.5, (100, 100)), | |
| np.random.normal(1, 0.5, (100, 100)), | |
| ) | |
| ) | |
| Y = np.concatenate((np.zeros((100, 1)), np.ones((100, 1)))) | |
| # train model | |
| mlkcv = MLKNNClassificationVoter(5) | |
| mlkcv.fit(X, Y) | |
| # generate testing data and class probability | |
| X_test = np.zeros((6, 100)) | |
| Y_test = np.zeros((6, 1)) | |
| # check if model predicts as expected | |
| testing.assert_allclose(Y_test, mlkcv.predict(X_test), atol=1e-4) |
Error message
__ TestKNNClassificationVoter.TestMLKNNClassificationVoter.test_correct_vote ___ x = 0.0 def isintlike(x): """Is x appropriate as an index into a sparse matrix? Returns True if it can be cast safely to a machine int. """ # Fast-path check to eliminate non-scalar values. operator.index would # catch this case too, but the exception catching is slow. if np.ndim(x) != 0: return False try: > operator.index(x) E TypeError: 'numpy.float64' object cannot be interpreted as an integer venv/lib/python3.9/site-packages/scipy/sparse/_sputils.py:208: TypeError During handling of the above exception, another exception occurred: self = <proglearn.tests.test_voter.TestKNNClassificationVoter.TestMLKNNClassificationVoter object at 0x7fb8e1d44130> def test_correct_vote(self): # set random seed np.random.seed(0) # generate training data and classes X = np.concatenate( ( np.random.normal(0, 0.5, (100, 100)), np.random.normal(1, 0.5, (100, 100)), ) ) Y = np.concatenate((np.zeros((100, 1)), np.ones((100, 1)))) # train model mlkcv = MLKNNClassificationVoter(5) > mlkcv.fit(X, Y) proglearn/tests/test_voter.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ proglearn/voters.py:364: in fit self.mlknn_.fit(X_flattened, y_flattened) venv/lib/python3.9/site-packages/skmultilearn/adapt/mlknn.py:218: in fit self._cond_prob_true, self._cond_prob_false = self._compute_cond(X, self._label_cache) venv/lib/python3.9/site-packages/skmultilearn/adapt/mlknn.py:180: in _compute_cond cn[label, deltas[0, label]] += 1 venv/lib/python3.9/site-packages/scipy/sparse/_lil.py:211: in __getitem__ return IndexMixin.__getitem__(self, key) venv/lib/python3.9/site-packages/scipy/sparse/_index.py:47: in __getitem__ row, col = self._validate_indices(key) venv/lib/python3.9/site-packages/scipy/sparse/_index.py:161: in _validate_indices if isintlike(col): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ x = 0.0 def isintlike(x): """Is x appropriate as an index into a sparse matrix? Returns True if it can be cast safely to a machine int. """ # Fast-path check to eliminate non-scalar values. operator.index would # catch this case too, but the exception catching is slow. if np.ndim(x) != 0: return False try: operator.index(x) except (TypeError, ValueError): try: loose_int = bool(int(x) == x) except (TypeError, ValueError): return False if loose_int: msg = "Inexact indices into sparse matrices are not allowed" > raise ValueError(msg) E ValueError: Inexact indices into sparse matrices are not allowed venv/lib/python3.9/site-packages/scipy/sparse/_sputils.py:216: ValueError =============================== warnings summary =============================== venv/lib/python3.9/site-packages/sklearn/utils/multiclass.py:14 /home/circleci/project/venv/lib/python3.9/site-packages/sklearn/utils/multiclass.py:14: DeprecationWarning: Please use `spmatrix` from the `scipy.sparse` namespace, the `scipy.sparse.base` namespace is deprecated. from scipy.sparse.base import spmatrix venv/lib/python3.9/site-packages/sklearn/utils/optimize.py:18 /home/circleci/project/venv/lib/python3.9/site-packages/sklearn/utils/optimize.py:18: DeprecationWarning: Please use `line_search_wolfe2` from the `scipy.optimize` namespace, the `scipy.optimize.linesearch` namespace is deprecated. from scipy.optimize.linesearch import line_search_wolfe2, line_search_wolfe1 venv/lib/python3.9/site-packages/sklearn/utils/optimize.py:18 /home/circleci/project/venv/lib/python3.9/site-packages/sklearn/utils/optimize.py:18: DeprecationWarning: Please use `line_search_wolfe1` from the `scipy.optimize` namespace, the `scipy.optimize.linesearch` namespace is deprecated. from scipy.optimize.linesearch import line_search_wolfe2, line_search_wolfe1 proglearn/tests/test_voter.py::TestKNNClassificationVoter::TestMLKNNClassificationVoter::test_correct_vote /home/circleci/project/venv/lib/python3.9/site-packages/sklearn/utils/validation.py:70: FutureWarning: Pass n_neighbors=5 as keyword args. From version 1.0 (renaming of 0.25) passing these as positional arguments will result in an error warnings.warn(f"Pass {args_msg} as keyword args. From version " -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html ------ generated xml file: /home/circleci/project/test-reports/junit.xml ------- ---------- coverage: platform linux, python 3.9.13-final-0 ----------- Coverage XML written to file coverage.xml Version information
- CircleCI Pytest
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels