【Python機械学習】初心者向けSpyder活用のすすめ（2020年8月時点）

私は最近になって機械学習に興味を持ちPythonの勉強を始めました。機械学習が前提なのでライブラリが揃った「[Anadonda](https://ja.wikipedia.org/wiki/Anaconda_(Python%E3%83%87%E3%82%A3%E3%82%B9%E3%83%88%E3%83%AA%E3%83%93%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3))」をインストールして学習環境を構築し、学習を進めていたのですが、途中で「[Spyder](https://ja.wikipedia.org/wiki/Spyder_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2))」を使いだしてから学習効率が大幅にアップしました。
なので、Pythonで機械学習をはじめたばかりの初心者の方向けにこの記事をアップします。

#■■　Anacondaとは　■■
>Anacondaは、科学計算（データサイエンス、機械学習アプリケーション、大規模データ処理、予測分析など）のためのPythonおよびR言語の無料のオープンソースディストリビューションであり、パッケージ管理とデプロイメントを簡略化することを狙ったものである。パッケージのバージョンは、パッケージ管理システム conda によって管理される。Anacondaディストリビューションは1500万人以上のユーザーによって使用されており、Windows、Linux、macOSに対応している1500を超える人気のあるデータサイエンスパッケージが含まれている。
（Wikipediaより引用）


機械学習に必要なライブラリ等が揃ったPython環境が提供されるので、機械学習を目的にPythonを使うなら、これ一択といってよい無料パッケージとなります。

#■■　Spyderとは（この記事の主役）　■■
>Spyder(以前はPydee)はオープンソースでクロスプラットフォームな統合開発環境であり、Pythonで科学用途のプログラミングをすることを意図して作られている。SpyderにはNumPy・SciPy・Matplotlib・IPythonなどが統合されている。
（Wikipediaより引用）

記載の通り統合開発環境です。この記事の主役です。「Spyder」は「Anaconda」をインストールした際に、一緒に勝手にインストールされます。


#■■　インストール方法　■■
「Anadonda」のインストール手順は以下に紹介されています。

「[Anaconda：Windows 版のインストール](https://www.python.jp/install/anaconda/windows/install.html)」

インストールが完了するとWindowsのスタートアップに「Spyder」が勝手にインストールされています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/8fdfebd4-e27b-785d-8fdb-713db7b26c83.png)

「Spyder」を起動すると以下の画面が表示されます。インストール当初に一度起動したのですが使い方が解らず、この子の凄さに気付いていませんでした。途中で行き詰って「Spyder」を使い始めてから、私の学習効率は飛躍的に向上しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/62ee5f97-5332-dedd-bb6a-1de8093851db.png)

#■■　Spyder操作方法　■■
①Spyderを起動すると以下の画面が開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/62ee5f97-5332-dedd-bb6a-1de8093851db.png)

②画面左側の「temp.py」の画面に構文を記載します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/f193ca1d-64dd-c756-6f39-0340e739759f.png)

③実行ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/3e9abc20-c221-0130-44e4-f89a24f4d896.png)

④画面右下のコンソールに結果が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/6193db4e-12fc-940e-9087-c3b0e567d8e9.png)

⑤もちろんプログラムファイルも簡単に保存できます。自分の作ったプログラムは保存していきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/7630344b-bd8a-4980-b0e5-56a051f3966d.png)


#■■　Spyderの良いところ（本題）　■■
ここからが本題です。
如何に「Spyder」が学習環境として優れているかを紹介します。

##構文を簡単に入力できる
私は当初「Anadonda Powershell Prompt」を起動してターミナルからプログラム入力する形で学習を始めました。教材に記載していた手順であり、最初は何の苦痛もありませんでした。しかし、def文やClass文、for文など長い構文になってくると、いちいち入力するのが非常に手間に感じてきました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/b1c45e71-5391-7307-cdfb-5519e54f10cc.png)

しかし「Spyder」なら構文を画面上でまとめて入力し編集も簡単です。変数を変更しての再実行なども簡単なので、色々と変更して動きを試すことができます。Pythonの勉強中の際は、非常に助かりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/f193ca1d-64dd-c756-6f39-0340e739759f.png)
また関数等が色分けされる為、一目瞭然となって解りやすいです。

##構文が間違っていたら教えてくれる
そして動かしてみてエラーが出た場合、調査するのに時間を要していました。例えば下の例は「x > 0」の後ろの「：」を抜いた場合に出力されるエラーです。なんだか複数行メッセージが出てきています。なかなか分かりにくいですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/3a597cba-bf9f-def9-48df-81e24f2e691c.png)

しかし「Spyder」なら構文が間違っていると列欄に「×」が表示されて、その場で教えてくれます。「×」にカーソルを合わせるとエラーの内容を教えてくれます。些細な構文ミスで悩む必要がなくなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/f82bc8f9-a40e-d1e5-563d-9e059d7032db.png)

##変数エクスプローラが使える
例えば以下のような構文を実行します。

```python
a = 20
b = 30
c = (a+b)/3
d = (a+b)%3
e = "kamera"
f = "taiko"
g = e + f
h = ("neko","inu","saru")
i = [("aka","ao"),("kiiro","siro")]
j = {0 : "test",1 :"tst2",2 : "test3"}


```
変数に何が設定されているか、変数型が知りたい場合は、変数名やtypeコマンドを実行して確認していました。エラーが発生した時などは、これらの作業で非常に時間を取られることになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/e2afb3c0-76b0-86d6-24af-1ddb6ea800c8.png)

しかし「Spyder」なら画面右上に「変数エクスプローラ」が表示されます。そこに利用した変数が表示されます。変数型とかコマンドを打たなくても確認出来て手間が省けます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/00f0bd7f-f3e8-9ba4-f69e-63b58ec41a3f.png)



##デバックモードが使える
デバックモードと言う機能があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/d6c7f5e1-0451-aabe-ee96-8a7e13dea402.png)
これを利用すると、構文が1行ずつ処理されるので、どのように処理されるかが把握できます。
特にdefやif文、for文などを使用しているときには、目に見えて動きが追えて助かります。
特に「変数エクスプローラ」と組み合わせると、どのタイミングで書き換わったか一目瞭然となります。

例えば、以下の構文をデバックモードで実行してみます。

```python
test = []
for x in [0,1,2]:
    for y in [1,2]:
        if x != y:
            test.append((x, y))
```
途中までの処理になりますが、以下のようになります。構文画面では現状処理している行に矢印が付きます。変数エクスプローラには、その時点での処理が表示されます。1ステップずつ進めることができるので、処理の内容が手に取るように分かるようになります。どういう処理になるのか理解できなかった構文もこれで簡単に理解できます。

| 構文画面       |　変数エクスプローラ画面　　　 |
|:----------------------------------|:-----------------------------------|
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/b7c24a79-3146-a47c-34b1-1f8ce52b1237.png)|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/04b060c9-00a7-34c6-e16c-fee87b4cbc22.png)|
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/e03c868f-5021-9c95-c06a-71974cbbe1ea.png)|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/183c78f9-6e25-967a-4cda-b18f7dafb1a4.png)|
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/034fdecf-e6fb-6638-641e-5ed1ad2e095a.png)|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/ea56c2ee-b913-3f7f-c51e-4125b97136d6.png)|
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/158e044e-f6b9-0cf0-31e5-511f798f97d6.png)|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/4772bd1d-bd79-e968-1cee-dad7a8d249eb.png)|
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/21321d24-86e1-15e5-7bf2-33dddf3a3765.png)|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/be265d70-a2d2-bf84-6cb8-2c8298c2302f.png)|
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/06cb06b8-ff8b-d8ea-61ac-2dc84c4f54ac.png)|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/c9fcbe36-8480-4c93-b879-11c91c193df3.png)|
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/d7a88f8d-8fbf-a264-6908-b5faefebbf66.png)|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/818653c4-a4ac-71a5-4190-188a896be4d7.png)|
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/a98f5494-cc15-077b-c9c9-0403f68dc72c.png)|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/0cb88bc5-9261-2494-4d46-7b77a621a4e8.png)|
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/67f197dd-87a1-417f-6f19-c3d96f2f0a2e.png)|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/0ac4e69d-248e-851b-da20-06198b3d3a10.png)|

##過去に作成したスクリプトもすぐに利用可能
作成したプログラムはスクリプトとして簡単に保存できます。
そして、ファイル画面から何時でも引っ張りだせます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561572/a193655c-d068-ab52-390e-506f33043968.png)

#■■　まとめ　■■
上記のようにPythonを身に着けたいと思う初心者には至れり尽くせりの機能が揃っています。実際の業務等で使う際には評価が異なるのかもしれませんが、学習するためのツールとしては非常に優秀なのではないでしょうか。
Pythonの学習をはじめたばかりの初心者の方は、是非活用ください。

以　　上