Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FIX MLKNNClassificationVoter errors possibly due to scipy deprecations #548

Open
PSSF23 opened this issue Sep 7, 2022 · 0 comments
Open

Comments

@PSSF23
Copy link
Member

PSSF23 commented Sep 7, 2022

My issue is about fixing test errors on MLKNNClassificationVoter.

Reproducing code example:

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
@PSSF23 PSSF23 changed the title FIX MLKNNClassificationVoter errors likely due to scipy deprecations FIX MLKNNClassificationVoter errors possibly due to scipy deprecations Sep 7, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant