Python機械学習プログラミング［PyTorch＆scikit-learn編］のサンプルコードを動かす準備

# はじめに
大学の授業において，Python機械学習プログラミング［PyTorch＆scikit-learn編］が教科書に指定されていました．サンプルコードがGithub[[1]]にて公開されているので，せっかくなら動かしながら勉強しようと思いました．
いざやろうとしたら，ちまちまとエラーを吐いたりしたので，備忘録として．

コードの実行環境として，google colab上について説明します．


# まとめ
- google colabにドライブをマウントする必要あり．
- `.ipynb`がファイルを参照できるよう，ディレクトリを移動する必要あり．




# google colab上で実行するとき
[Github][1]のサンプルコード群をダウンロードします．
<img width="600" alt="dl_zip.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953096/3ddc8650-c11c-51b8-938d-3000d8d5fa48.png">

落としたzipを解凍し，googleドライブに丸ごとアップロードします．
試しに`ch01/ch01.ipynb`を開きます．google colabがchromeに入っていない場合は，右の︙から`アプリを追加`->Colaboratryを探して`インストール`してください．
<img width="600" alt="add_app.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953096/25f1ff12-f4bd-0877-4fa7-732f1f9c9ce2.png">
<img width="250" alt="find_colab.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953096/a2f92302-4516-1c77-134d-afff7d7b4140.png">

これにて一応colabで`ch*.ipynb`を開き，編集・実行ができるようになります．
サンプルコードの`ch*.ipynb`は自身以深の階層のファイルを参照します．このままではcolabから参照できるのは`ch*.ipynb`それ自身(と，一部のサンプルデータ)だけなので，ドライブにあるファイル類をcolabにマウントする必要があります．


画面左のフォルダアイコンをクリックし，"Mount Drive"アイコンをクリックします．[[2]]

<img width="600" alt="mount_drive_icon.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953096/6eb4b3cb-c7b3-1f8f-3e7f-ff2cbec08013.png">

ドライブをマウントするためのコードが記述されたセルが生成されるので，言われたとおりに実行します．
<img width="600" alt="codechell_born.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953096/e580523d-d5e9-66d3-6ada-46668422e1fb.png">
(アイコンポチポチせずとも，自分でセルを作り以下を入力，実行しても同じことです．)
```python
from google.colab import drive
drive.mount('/content/drive')
```

新しく`drive`というフォルダが生成され，colabからドライブ上のファイルが参照できるようになっていることが確認できます．
<img width="600" alt="drive_mounted.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953096/68c699a8-8e79-a1af-5a46-1933b4d2eff2.png">


ちなみに`ch01.ipynb`を開いた状態でのカレントディレクトリは`/content`です．
<img width="600" alt="echo_pwd.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953096/0b0d6706-44a2-9818-0409-c75c89c67f79.png">
`ch01.ipynb`内のコードが正常に関連ファイルを参照できるように，ディレクトリを移動します(パスは環境によります)．
```shell
%cd /content/drive/MyDrive/machine-learning-book-main/ch01
```
ちなみに.ipynbでは，shellコマンドは頭に`!`もしくは`%`を付けることで実行できます[[3]]．`!cd hoge`だとcdできなかったので不思議でしたが，`!cd`ではセル内でのみcdする[[4]]からだそうです．なるほど．

また，`Package version checks`で参照している`python_environment_check.py`は`*/machine-learning-book-main/`に居ます．したがって，
```python
from python_environment_check import check_packages

d = {
    'numpy': '1.21.2',
    'scipy': '1.7.0',
    'matplotlib': '3.4.3',
    'sklearn': '1.0',
    'pandas': '1.3.2'
}
check_packages(d)
```
のセルを実行してパッケージの確認を行う場合，適宜ディレクトリを移動する必要があります．

ともかく，これでコードサンプルを実行できるようになりました．めでたし．
言わずもがなですが，ディレクトリの移動は違うチャプターの`.ipynb`を開いた際も都度行う必要があります．




## 参照文献
[1][ rasbt/machine-learning-book: Code Repository for Machine Learning with PyTorch and Scikit-Learn][1]
[2][【Google colab】GoogleドライブのファイルをPythonで操作する。][2]
[3][ Shell command等の使い方][3]
[4][ !cd と %cd の違い][4]

[1]:https://github.com/rasbt/machine-learning-book
[2]:https://www.teijitaisya.com/gcolab-gdrive/
[3]:https://colab.research.google.com/github/tom2rd/Googlecolabutils/blob/master/Shellcommand.ipynb
[4]:https://qiita.com/bear_montblanc/items/64d7efd9e4ea7caa98f9