v-crn Code Log

主に備忘録

Google Colaboratory を使うときはパッケージのバージョンに注意

f:id:v-crn:20191230030002p:plain

Google Colaboratory とローカル環境で同じPythonコードを走らせているのに挙動が異なる場合がある。その原因はパッケージのバージョンの違いかもよ、というお話。

たとえば、 imblearn.under_sampling.RandomUnderSampler を使った次のコードをローカルのPython環境で実行した場合:

from imblearn.under_sampling import RandomUnderSampler
rus = RandomUnderSampler(
            sampling_strategy='auto', random_state=1)
X_r, y_r = rus.fit_sample(X_prp, y_prp)
type(X_r)
# pandas.core.frame.DataFrame

結果は pandas.core.frame.DataFrame が返ってくる。 一方、 Google Colaboratory で同じコードを実行した場合、 numpy.ndarray が返り値となる。

それぞれのパッケージのバージョンを調べてみる。

import imblearn
imblearn.__version__

バージョン:

  • Local: '0.6.1'
  • Google Colaboratory: '0.4.3'

Google Colaboratory の方で古いバージョンを使用していた。 古いパッケージのアップデートを行ってみよう。

# !pip install --upgrade imblearn # これでは駄目。imbalanced-learnを対象にすべき
!pip install -U imbalanced-learn

Collecting imbalanced-learn Downloading https://files.pythonhosted.org/packages/eb/aa/>eba717a14df36f0b6f000ebfaf24c3189cd7987130f66cc3513efead8c2a/imbalanced_learn-0.6.1-py3-none-any.whl (162kB) |████████████████████████████████| 163kB 7.8MB/s Requirement already satisfied, skipping upgrade: joblib>=0.11 in /usr/local/lib/python3.6/dist-packages (from >imbalanced-learn) (0.14.1) Requirement already satisfied, skipping upgrade: scipy>=0.17 in /usr/local/lib/python3.6/dist-packages (from >imbalanced-learn) (1.3.3) Requirement already satisfied, skipping upgrade: numpy>=1.11 in /usr/local/lib/python3.6/dist-packages (from >imbalanced-learn) (1.17.4) Collecting scikit-learn>=0.22 Downloading https://files.pythonhosted.org/packages/d1/48/>e9fa9e252abcd1447eff6f9257636af31758a6e46fd5ce5d3c879f6907cb/scikit_learn-0.22.1-cp36-cp36m-manylinux1_x86_64.whl >(7.0MB) |████████████████████████████████| 7.1MB 12.9MB/s Installing collected packages: scikit-learn, imbalanced-learn Found existing installation: scikit-learn 0.21.3 Uninstalling scikit-learn-0.21.3: Successfully uninstalled scikit-learn-0.21.3 Found existing installation: imbalanced-learn 0.4.3 Uninstalling imbalanced-learn-0.4.3: Successfully uninstalled imbalanced-learn-0.4.3 Successfully installed imbalanced-learn-0.6.1 scikit-learn-0.22.1

アップデート後に先程 ndarray を返してきたコードを実行すると、期待する結果である pandas.core.frame.DataFrame が返ってきた。

めでたしめでたし。

まあ、今回のエラーはGCに限った話じゃないんだけども、インストールされているパッケージのバージョンが違うことで発生するエラーって気付くのに時間がかかるきらいがある。

今後とも環境起因のエラーに注意しよう。