はじめに
Pythonによる機械学習の環境構築は、かつてAnacondaを利用する方法が主流であった。Anacondaのせいでどれだけ苦渋をなめさせられたことか、思い出すだけでも吐き気がする。しかし、現在ではpipとvenvを用いることで、より軽量でシンプルな環境を手早く整えることができる。本記事では、Anacondaを使わず、pipとvenvのみでscikit-learnの機械学習環境を構築し、動作確認までを一通り解説する。
Pythonのインストール状況を確認する
本記事の手順を進めるには、あらかじめPythonがインストールされている必要がある。
まずは、Pythonが正しく導入されているかどうか、コマンドライン(ターミナルやコマンドプロンプト)で以下のコマンドを実行する。
1 2 3 |
$ python --version もしくは $ python3 --version |
「Python 3.7」以降のバージョンが表示されれば問題ない。もしPythonが見つからない、あるいは古いバージョンであった場合は、Python公式サイト、あるいはMacの方の場合Homebrewから最新版をダウンロードするなどして対応してほしい。
仮想環境(venv)の作成と有効化
venvの作成手順
作業したい場所(たとえば「デスクトップ」や「ドキュメント」など)で、コマンドラインを開いて以下を入力する。
1 2 3 |
$ python -m venv myenv もしくは $ python3 -m venv myenv |
【エラー対策】zsh: command not found: pythonと表示された場合の対処法
macOS環境、とくにHomebrewでPythonをインストールした場合、「python」コマンドを実行すると
zsh: command not found: python
というエラーが表示されることがある。
この現象は、標準のパスに「python(2系)」が存在しない、または「python」ではなく「python3」だけがインストールされている場合に発生する。
この場合は「python」ではなく「python3」コマンドを利用すればよい。
1 |
$ python3 -m venv myenv |
特にHomebrewを利用してPythonをインストールした場合は、「python」ではなく「python3」と入力する必要あり。これはmacOSに標準で含まれる古いPython(2系)と区別するためであり、Homebrew由来のPythonはほぼ必ず「python3」コマンドを使用。
このコマンドを実行すると、「myenv」という新しいフォルダができる。このフォルダの中には、仮想環境専用のPython実行ファイルやライブラリ管理用の仕組みがまとめて入っている。
たとえばデスクトップでこのコマンドを実行した場合、以下のような構成になる。
↓(実行の様子。ターミナル)
(例)
デスクトップ/
└─ myenv/
├─ Scripts/ (Windowsの場合)
├─ bin/ (MacやLinuxの場合)
├─ Include/
├─ Lib/
└─ pyvenv.cfg
仮想環境の有効化と無効化
仮想環境を作成したあとは、その環境を有効化(activate)する必要がある。これによって、以降の操作は仮想環境内だけに影響し、システム全体を汚さずに済む。
Windowsの場合:
1 |
$ myenv\Scripts\activate |
Mac/Linuxの場合:
1 |
$ source myenv/bin/activate |
仮想環境が有効になると、コマンドラインの先頭に(myenv)と表示される。この状態になっていれば、以降のpip操作は仮想環境内だけに影響する。
作業が終わったら、以下のコマンドで仮想環境を無効化(deactivate)できる。
※control-cで止めるのはプログラムの強制終了であり、仮想環境の終了とは別である。仮想環境を抜けたいときは、必ず「deactivate」と入力しよう。
1 |
$ deactivate |
pipでscikit-learnをインストールする
仮想環境が有効化できたら、次はscikit-learnをインストールする。pipコマンドを使うことで、必要なライブラリを簡単に追加できる。
1 |
$ pip install scikit-learn |
追加で、よく使うライブラリ(numpy, pandasなど)も同時にインストールしておくと便利である。
1 |
$ pip install numpy pandas matplotlib |
scikit-learnが動くか確認する
最小サンプル(fit/predict)の実行
scikit-learnのインストールが完了したら、正しく動作するかを確認する。ここでは、最小限の機械学習サンプルを動かすことで、環境構築が成功したかどうかを確かめる。
まずは任意のエディタで、以下の内容をsample.pyとして保存する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
from sklearn.neighbors import KNeighborsClassifier # 学習データ(特徴量)とラベル X = [[0, 0], [1, 0], [0, 1], [1, 1]] y = [0, 1, 1, 0] # モデルを用意して学習 clf = KNeighborsClassifier(n_neighbors=1) clf.fit(X, y) # テストデータで予測 test = [[1, 0], [0, 1], [1, 1]] pred = clf.predict(test) print("予測結果:", pred) |
1 |
$ python sample.py もしくは $ python3 sample.py |
実行結果として「予測結果:[1 1 0]」のように表示されれば、scikit-learnが正しく動作していることになる。
実行時のターミナルの様子が下記画像。
初回実行時の注意点
pipでscikit-learnや各種ライブラリをインストールした直後は、初回実行時に数十秒ほど処理が止まったように感じる場合がある。これは内部的にライブラリの初期化やキャッシュ作成が行われているからで、心配する必要はない。2回目以降は初回より早く処理が終わる。
まとめ
pipとvenvを用いることで、Anacondaを使わずに軽量でシンプルな機械学習環境を短時間で構築できる。手順どおりに進めれば、余計なトラブルに悩まされることなく、scikit-learnによる機械学習の実験がすぐに始められるはず。
仮想環境を活用することで、プロジェクトごとにライブラリのバージョンを分けて管理できるため、将来的な開発や検証も安全かつ柔軟に進めることができる。今後は、この環境を活かして他の機械学習ライブラリ(たとえばXGBoostやLightGBMなど)の導入や、データ分析プロジェクトへの応用も簡単になる。