-
Notifications
You must be signed in to change notification settings - Fork 42
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
Metadata
Metadata
Assignees
Labels
No labels