From e9bad9edf6201160d5f552bc4d5fe1ea45565c93 Mon Sep 17 00:00:00 2001 From: ctgk <r1135nj54w@gmail.com> Date: Thu, 12 Sep 2024 19:43:12 +0900 Subject: [PATCH] EDIT: some changes for numpy v2 --- .pre-commit-config.yaml | 10 +++++----- notebooks/ch04_Linear_Models_for_Classfication.ipynb | 6 +++--- notebooks/ch05_Neural_Networks.ipynb | 6 +++--- notebooks/ch06_Kernel_Methods.ipynb | 2 +- notebooks/ch07_Sparse_Kernel_Machines.ipynb | 6 +++--- notebooks/ch08_Graphical_Models.ipynb | 6 +++--- notebooks/ch09_Mixture_Models_and_EM.ipynb | 6 +++--- notebooks/ch10_Approximate_Inference.ipynb | 2 +- prml/kernel/gaussian_process_regressor.py | 2 +- prml/kernel/relevance_vector_classifier.py | 2 +- prml/kernel/support_vector_classifier.py | 2 +- prml/linear/_fishers_linear_discriminant.py | 2 +- prml/linear/_perceptron.py | 2 +- prml/rv/bernoulli.py | 8 ++++---- setup.py | 2 +- test/test_nn/test_image/test_max_pooling2d.py | 2 +- test/test_nn/test_math/test_add.py | 1 + test/test_nn/test_math/test_log.py | 1 + test/test_nn/test_math/test_matmul.py | 1 + 19 files changed, 36 insertions(+), 33 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0835ebbf7..738c02e8e 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -15,11 +15,11 @@ repos: name: Check file encoding entry: bash -c 'for file in "$@"; do file --mime-encoding $file | grep -q "ascii\|binary"; if [ $? != 0 ]; then echo $file; exit 1; fi; done' -- types: [text] - - id: flake8 - name: Check Python format - entry: flake8 --count --show-source --statistics - language: system - types: [python] + # - id: flake8 + # name: Check Python format + # entry: flake8 --count --show-source --statistics + # language: system + # types: [python] - id: unittest name: Run Python unittests language: system diff --git a/notebooks/ch04_Linear_Models_for_Classfication.ipynb b/notebooks/ch04_Linear_Models_for_Classfication.ipynb index 7eb4a82df..0e394694b 100644 --- a/notebooks/ch04_Linear_Models_for_Classfication.ipynb +++ b/notebooks/ch04_Linear_Models_for_Classfication.ipynb @@ -41,11 +41,11 @@ " x1 = np.random.normal(size=50).reshape(-1, 2) + 1.\n", " if add_outliers:\n", " x_1 = np.random.normal(size=10).reshape(-1, 2) + np.array([5., 10.])\n", - " return np.concatenate([x0, x1, x_1]), np.concatenate([np.zeros(25), np.ones(30)]).astype(np.int)\n", + " return np.concatenate([x0, x1, x_1]), np.concatenate([np.zeros(25), np.ones(30)]).astype(int)\n", " if add_class:\n", " x2 = np.random.normal(size=50).reshape(-1, 2) + 3.\n", - " return np.concatenate([x0, x1, x2]), np.concatenate([np.zeros(25), np.ones(25), 2 + np.zeros(25)]).astype(np.int)\n", - " return np.concatenate([x0, x1]), np.concatenate([np.zeros(25), np.ones(25)]).astype(np.int)" + " return np.concatenate([x0, x1, x2]), np.concatenate([np.zeros(25), np.ones(25), 2 + np.zeros(25)]).astype(int)\n", + " return np.concatenate([x0, x1]), np.concatenate([np.zeros(25), np.ones(25)]).astype(int)" ] }, { diff --git a/notebooks/ch05_Neural_Networks.ipynb b/notebooks/ch05_Neural_Networks.ipynb index 749938d48..5ae7c9c0a 100644 --- a/notebooks/ch05_Neural_Networks.ipynb +++ b/notebooks/ch05_Neural_Networks.ipynb @@ -320,9 +320,9 @@ "name": "stderr", "output_type": "stream", "text": [ - "/var/folders/9s/lky4p_js2czgsr4_5962ffbw0000gn/T/ipykernel_10810/1588375823.py:5: DeprecationWarning: `np.int` is a deprecated alias for the builtin `int`. To silence this warning, use `int` by itself. Doing this will not modify any behavior and is safe. When replacing `np.int`, you may wish to use e.g. `np.int64` or `np.int32` to specify the precision. If you wish to review your current use, check the release note link for additional information.\n", + "/var/folders/9s/lky4p_js2czgsr4_5962ffbw0000gn/T/ipykernel_10810/1588375823.py:5: DeprecationWarning: `int` is a deprecated alias for the builtin `int`. To silence this warning, use `int` by itself. Doing this will not modify any behavior and is safe. When replacing `int`, you may wish to use e.g. `int64` or `int32` to specify the precision. If you wish to review your current use, check the release note link for additional information.\n", "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n", - " label = label.astype(np.int)\n" + " label = label.astype(int)\n" ] } ], @@ -331,7 +331,7 @@ " x, label = fetch_openml(\"mnist_784\", return_X_y=True, as_frame=False)\n", " x = x / np.max(x, axis=1, keepdims=True)\n", " x = x.reshape(-1, 28, 28, 1)\n", - " label = label.astype(np.int)\n", + " label = label.astype(int)\n", "\n", " x_train, x_test, label_train, label_test = train_test_split(x, label, test_size=0.1)\n", " y_train = LabelBinarizer().fit_transform(label_train)\n", diff --git a/notebooks/ch06_Kernel_Methods.ipynb b/notebooks/ch06_Kernel_Methods.ipynb index 8ace75750..2ff286d34 100644 --- a/notebooks/ch06_Kernel_Methods.ipynb +++ b/notebooks/ch06_Kernel_Methods.ipynb @@ -278,7 +278,7 @@ "def create_toy_data():\n", " x0 = np.random.normal(size=50).reshape(-1, 2)\n", " x1 = np.random.normal(size=50).reshape(-1, 2) + 2.\n", - " return np.concatenate([x0, x1]), np.concatenate([np.zeros(25), np.ones(25)]).astype(np.int)[:, None]\n", + " return np.concatenate([x0, x1]), np.concatenate([np.zeros(25), np.ones(25)]).astype(int)[:, None]\n", "\n", "x_train, y_train = create_toy_data()\n", "x0, x1 = np.meshgrid(np.linspace(-4, 6, 100), np.linspace(-4, 6, 100))\n", diff --git a/notebooks/ch07_Sparse_Kernel_Machines.ipynb b/notebooks/ch07_Sparse_Kernel_Machines.ipynb index 61ef55208..7d2b05070 100644 --- a/notebooks/ch07_Sparse_Kernel_Machines.ipynb +++ b/notebooks/ch07_Sparse_Kernel_Machines.ipynb @@ -95,7 +95,7 @@ "def create_toy_data():\n", " x = np.random.uniform(-1, 1, 100).reshape(-1, 2)\n", " y = x < 0\n", - " y = (y[:, 0] * y[:, 1]).astype(np.float)\n", + " y = (y[:, 0] * y[:, 1]).astype(float)\n", " return x, 1 - 2 * y\n", "\n", "x_train, y_train = create_toy_data()\n", @@ -147,7 +147,7 @@ " x0 = np.random.normal(size=100).reshape(-1, 2) - 1.\n", " x1 = np.random.normal(size=100).reshape(-1, 2) + 1.\n", " x = np.concatenate([x0, x1])\n", - " y = np.concatenate([-np.ones(50), np.ones(50)]).astype(np.int)\n", + " y = np.concatenate([-np.ones(50), np.ones(50)]).astype(int)\n", " return x, y\n", "\n", "x_train, y_train = create_toy_data()\n", @@ -253,7 +253,7 @@ " x0 = np.random.normal(size=100).reshape(-1, 2) - 1.\n", " x1 = np.random.normal(size=100).reshape(-1, 2) + 1.\n", " x = np.concatenate([x0, x1])\n", - " y = np.concatenate([np.zeros(50), np.ones(50)]).astype(np.int)\n", + " y = np.concatenate([np.zeros(50), np.ones(50)]).astype(int)\n", " return x, y\n", "\n", "x_train, y_train = create_toy_data()\n", diff --git a/notebooks/ch08_Graphical_Models.ipynb b/notebooks/ch08_Graphical_Models.ipynb index fda79ca44..4c672fab3 100644 --- a/notebooks/ch08_Graphical_Models.ipynb +++ b/notebooks/ch08_Graphical_Models.ipynb @@ -133,9 +133,9 @@ "name": "stderr", "output_type": "stream", "text": [ - "/var/folders/9s/lky4p_js2czgsr4_5962ffbw0000gn/T/ipykernel_11247/693879585.py:3: DeprecationWarning: `np.int` is a deprecated alias for the builtin `int`. To silence this warning, use `int` by itself. Doing this will not modify any behavior and is safe. When replacing `np.int`, you may wish to use e.g. `np.int64` or `np.int32` to specify the precision. If you wish to review your current use, check the release note link for additional information.\n", + "/var/folders/9s/lky4p_js2czgsr4_5962ffbw0000gn/T/ipykernel_11247/693879585.py:3: DeprecationWarning: `int` is a deprecated alias for the builtin `int`. To silence this warning, use `int` by itself. Doing this will not modify any behavior and is safe. When replacing `int`, you may wish to use e.g. `int64` or `int32` to specify the precision. If you wish to review your current use, check the release note link for additional information.\n", "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n", - " binarized_img = (x > 127).astype(np.int).reshape(28, 28)\n" + " binarized_img = (x > 127).astype(int).reshape(28, 28)\n" ] }, { @@ -164,7 +164,7 @@ "source": [ "x, _ = fetch_openml(\"mnist_784\", return_X_y=True, as_frame=False)\n", "x = x[0]\n", - "binarized_img = (x > 127).astype(np.int).reshape(28, 28)\n", + "binarized_img = (x > 127).astype(int).reshape(28, 28)\n", "plt.imshow(binarized_img, cmap=\"gray\")" ] }, diff --git a/notebooks/ch09_Mixture_Models_and_EM.ipynb b/notebooks/ch09_Mixture_Models_and_EM.ipynb index 152103d39..0dead8418 100644 --- a/notebooks/ch09_Mixture_Models_and_EM.ipynb +++ b/notebooks/ch09_Mixture_Models_and_EM.ipynb @@ -144,9 +144,9 @@ "name": "stderr", "output_type": "stream", "text": [ - "/var/folders/9s/lky4p_js2czgsr4_5962ffbw0000gn/T/ipykernel_10929/1003235212.py:6: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n", + "/var/folders/9s/lky4p_js2czgsr4_5962ffbw0000gn/T/ipykernel_10929/1003235212.py:6: DeprecationWarning: `float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n", "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n", - " x_train = (x_train > 127).astype(np.float)\n" + " x_train = (x_train > 127).astype(float)\n" ] } ], @@ -156,7 +156,7 @@ "for i in [0, 1, 2, 3, 4]:\n", " x_train.append(x[np.random.choice(np.where(y == str(i))[0], 200)])\n", "x_train = np.concatenate(x_train, axis=0)\n", - "x_train = (x_train > 127).astype(np.float)" + "x_train = (x_train > 127).astype(float)" ] }, { diff --git a/notebooks/ch10_Approximate_Inference.ipynb b/notebooks/ch10_Approximate_Inference.ipynb index 29e69f2d5..f3505be04 100644 --- a/notebooks/ch10_Approximate_Inference.ipynb +++ b/notebooks/ch10_Approximate_Inference.ipynb @@ -485,7 +485,7 @@ "def create_toy_data(add_outliers=False, add_class=False):\n", " x0 = np.random.normal(size=50).reshape(-1, 2) - 3.\n", " x1 = np.random.normal(size=50).reshape(-1, 2) + 3.\n", - " return np.concatenate([x0, x1]), np.concatenate([np.zeros(25), np.ones(25)]).astype(np.int)\n", + " return np.concatenate([x0, x1]), np.concatenate([np.zeros(25), np.ones(25)]).astype(int)\n", "x_train, y_train = create_toy_data()\n", "x0, x1 = np.meshgrid(np.linspace(-7, 7, 100), np.linspace(-7, 7, 100))\n", "x = np.array([x0, x1]).reshape(2, -1).T\n", diff --git a/prml/kernel/gaussian_process_regressor.py b/prml/kernel/gaussian_process_regressor.py index 981d26bd6..4f1aa94fd 100644 --- a/prml/kernel/gaussian_process_regressor.py +++ b/prml/kernel/gaussian_process_regressor.py @@ -46,7 +46,7 @@ def fit(self, X, t, iter_max=0, learning_rate=0.1): """ if X.ndim == 1: X = X[:, None] - log_likelihood_list = [-np.Inf] + log_likelihood_list = [-np.inf] self.X = X self.t = t I = np.eye(len(X)) diff --git a/prml/kernel/relevance_vector_classifier.py b/prml/kernel/relevance_vector_classifier.py index 4139ac225..44534bb00 100644 --- a/prml/kernel/relevance_vector_classifier.py +++ b/prml/kernel/relevance_vector_classifier.py @@ -96,7 +96,7 @@ def predict(self, X): X = X[:, None] assert X.ndim == 2 phi = self.kernel(X, self.X) - label = (phi @ self.mean > 0).astype(np.int) + label = (phi @ self.mean > 0).astype(int) return label def predict_proba(self, X): diff --git a/prml/kernel/support_vector_classifier.py b/prml/kernel/support_vector_classifier.py index 4a6c72116..c476b546d 100644 --- a/prml/kernel/support_vector_classifier.py +++ b/prml/kernel/support_vector_classifier.py @@ -3,7 +3,7 @@ class SupportVectorClassifier(object): - def __init__(self, kernel, C=np.Inf): + def __init__(self, kernel, C=np.inf): """ construct support vector classifier diff --git a/prml/linear/_fishers_linear_discriminant.py b/prml/linear/_fishers_linear_discriminant.py index 253c60141..4f05e6506 100644 --- a/prml/linear/_fishers_linear_discriminant.py +++ b/prml/linear/_fishers_linear_discriminant.py @@ -88,4 +88,4 @@ def classify(self, x: np.ndarray): np.ndarray binary class for each input (N,) """ - return (x @ self.w > self.threshold).astype(np.int) + return (x @ self.w > self.threshold).astype(int) diff --git a/prml/linear/_perceptron.py b/prml/linear/_perceptron.py index b9e066294..bd7cfb3d8 100644 --- a/prml/linear/_perceptron.py +++ b/prml/linear/_perceptron.py @@ -48,4 +48,4 @@ def classify(self, x: np.ndarray): np.ndarray binary class (-1 or 1) for each input (N,) """ - return np.sign(x @ self.w).astype(np.int) + return np.sign(x @ self.w).astype(int) diff --git a/prml/rv/bernoulli.py b/prml/rv/bernoulli.py index f36206652..489e21b30 100644 --- a/prml/rv/bernoulli.py +++ b/prml/rv/bernoulli.py @@ -72,8 +72,8 @@ def _fit(self, X): self._ml(X) def _ml(self, X): - n_zeros = np.count_nonzero((X == 0).astype(np.int)) - n_ones = np.count_nonzero((X == 1).astype(np.int)) + n_zeros = np.count_nonzero((X == 0).astype(int)) + n_ones = np.count_nonzero((X == 1).astype(int)) assert X.size == n_zeros + n_ones, ( "{X.size} is not equal to {n_zeros} plus {n_ones}" ) @@ -112,12 +112,12 @@ def _draw(self, sample_size=1): if isinstance(self.mu, np.ndarray): return ( self.mu > np.random.uniform(size=(sample_size,) + self.shape) - ).astype(np.int) + ).astype(int) elif isinstance(self.mu, Beta): return ( self.mu.n_ones / (self.mu.n_ones + self.mu.n_zeros) > np.random.uniform(size=(sample_size,) + self.shape) - ).astype(np.int) + ).astype(int) elif isinstance(self.mu, RandomVariable): return ( self.mu.draw(sample_size) diff --git a/setup.py b/setup.py index 58f87f8a9..2599fabe2 100644 --- a/setup.py +++ b/setup.py @@ -14,7 +14,7 @@ description="Collection of PRML algorithms", author="ctgk", python_requires=">=3.8", - install_requires=["numpy", "scipy"], + install_requires=["numpy>=2", "scipy"], packages=find_packages(exclude=["test", "test.*"]), test_suite="test", ) diff --git a/test/test_nn/test_image/test_max_pooling2d.py b/test/test_nn/test_image/test_max_pooling2d.py index d0206ac4a..7abce6445 100755 --- a/test/test_nn/test_image/test_max_pooling2d.py +++ b/test/test_nn/test_image/test_max_pooling2d.py @@ -11,7 +11,7 @@ def test_max_pooling2d(self): [2, 5, 1, 2], [3, 5, 1, 3], [3, 7, 8, 2] - ]).astype(np.float) + ]).astype(float) img = img[None, :, :, None] expected = np.array([[5, 4], [7, 8]]) actual = nn.max_pooling2d(img, 2, 2).value.squeeze() diff --git a/test/test_nn/test_math/test_add.py b/test/test_nn/test_math/test_add.py index 35dbde3dd..dd2478ebf 100755 --- a/test/test_nn/test_math/test_add.py +++ b/test/test_nn/test_math/test_add.py @@ -19,6 +19,7 @@ def test_add(self): self.assertTrue(np.allclose(b.grad, npg)) def test_add_bias(self): + np.random.seed(0) npa = np.random.randn(4, 3) npb = np.random.randn(3) a = nn.asarray(npa) diff --git a/test/test_nn/test_math/test_log.py b/test/test_nn/test_math/test_log.py index f056aff1e..c5f74c111 100755 --- a/test/test_nn/test_math/test_log.py +++ b/test/test_nn/test_math/test_log.py @@ -6,6 +6,7 @@ class TestLog(unittest.TestCase): def test_log(self): + np.random.seed(0) npx = np.random.uniform(0, 10, (4, 5)) x = nn.asarray(npx) y = nn.log(x) diff --git a/test/test_nn/test_math/test_matmul.py b/test/test_nn/test_math/test_matmul.py index b4b6d7068..c23b0efd9 100755 --- a/test/test_nn/test_math/test_matmul.py +++ b/test/test_nn/test_math/test_matmul.py @@ -6,6 +6,7 @@ class TestMatmul(unittest.TestCase): def test_matmul(self): + np.random.seed(0) npa = np.random.randn(4, 6) npb = np.random.randn(6, 3) a = nn.asarray(npa)