「ValueError: numpy.dtype size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject」の解消方法

Python

はじめに

競馬の順位予測システムを作成しています。
順位予測の精度を上げるために、XGBoostとLightGBM、CatBoostを用いてアンサンブル学習を行う予定です。アンサンブルの動作確認のために、カルフォルニアの住宅価格データセットで住宅価格を予測するモデルを作成するプログラムを作成しました。

作成したプログラムを実行したら、CatBoostの処理で下記のエラーが出ました。

C:\xxxxx\.venv_new\Scripts\python.exe C:\xxxxx\ensemble_california.py 
Traceback (most recent call last):
  File "C:\xxxxx\sample_ensemble.py", line 9, in 
    import catboost as cb
  File "C:\xxxxx\.venv_new\Lib\site-packages\catboost\init.py", line 1, in 
    from .core import (
  File "C:\xxxxx\.venv_new\Lib\site-packages\catboost\core.py", line 45, in 
    from .plot_helpers import save_plot_file, try_plot_offline, OfflineMetricVisualizer
  File "C:\xxxxx\.venv_new\Lib\site-packages\catboost\plot_helpers.py", line 5, in 
    from . import _catboost
  File "_catboost.pyx", line 1, in init _catboost
ValueError: numpy.dtype size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject

プロセスは終了コード 1 で終了しました

エラーが出た実行環境

項目 バージョン
OS Windows11
Python 3.12.5
CatBoost 1.2.5
Numpy 2.0.1

原因

CatBootのバージョン1.2.5はNumpyのバージョン2.0.1に対応していない、のが原因でした。
Numpyのバージョン2.系には、まだ対応できていないようです。

対処方法

Numpyのバージョンを1.26.4をインストール、することでエラーを解消することができます。

Numpyのバージョン1.26.0より古いバージョンは、Python3.12に対応していません。
バージョンは1.26.0以降をインストールする必要があります。

pipコマンドでNumpyをインストールする場合は、下記のコマンドを実行することで、バージョン1.26.0をインストールすることができます。

(.venv)> pip install numpy==1.26.0

 

以上です。

コメント

タイトルとURLをコピーしました