はじめに †
MacでPythonで定番のツールを使ってデータ分析を行う環境を整えます。
以前は、ツールを一つずつインストールしていましたが、今では、AnacondaというパッケージだけでOKです。
この記事の内容は、以下のバージョンで確認しました。
- macOS High Sierra 10.13.5
- Anaconda 5.3 Python 3.7 version
ダウンロード †
Anacondaの公式サイトからPython 3.7 versionをダウンロードします。
インストール †
ダウンロードしたインストーラーを起動します。
インストール先を聞かれます。自分だけで使う場合は「自分専用にインストール」、他のユーザーも使えるようにするには「特定のディスクにインストール」を選びます。
ここでは、ほかのユーザーも使えるように「特定のディスクにインストール」を選択し、ディスクをMacBookのSSD、ディレクトリーを共有ユーザーの /Users/Shared/tools にします(ユーザー → 共有 → tools、toolsがなければ新規作成)。
最後に、MicrosoftのVisual Studioのコードをインストールするかどうかを聞かれます。 ここでは、スキップします。
これでインストールは完了です。
動作確認 †
Jupyter Notebook †
アプリケーションに追加されたAnaconda-Navigator.appを起動します。
Jupiter NotebookのLaunchをクリックします。
すると、ターミナルが起動し、その上でWebサーバーが自動的に起動し、さらにWebブラウザが自動的に起動します。
New から Python 3 を選択します。
すると、新しいノートブックが作成されます。
scikit-learn †
標準で入っているirisデータをSVM (SVC)で学習してみます。
入力ボックスにPython 3のプログラムを入力し、ボタンを押して実行します。
from sklearn import datasets from sklearn.svm import SVC iris = datasets.load_iris() clf = SVC() clf.fit(iris.data, iris.target)
list(clf.predict(iris.data[:3]))
clf.fit(iris.data, iris.target_names[iris.target])
list(clf.predict(iris.data[:3]))
pandas †
pandasの動作を確認するため、irisデータをpandasに入れます。
まずは、irisのデータをそのまま表示してみます。
iris.data
次に、iris.dataをpandasのDataFrameに入れて表示してみます。
import pandas as pd iris.df = pd.DataFrame(iris.data, columns=['sepal_length', 'sepal_width', 'petal_length', 'petal_width']) iris.df
すると、Jupyter Notebookに表形式で出力されます。
matplotlib †
最後に、scikit-learnで学習した結果をmatplotlibを使って、可視化してみます。
まず、pandasのDataFrameに予測結果を追加します。
iris.df['predict'] = clf.predict(iris.data) iris.df
次に、予測結果がsetosaのもの、versicolorのもの、virginicaのものに分けます。
x1 = iris.df[iris.df.predict == 'setosa']['sepal_length'] y1 = iris.df[iris.df.predict == 'setosa']['sepal_width'] x2 = iris.df[iris.df.predict == 'versicolor']['sepal_length'] y2 = iris.df[iris.df.predict == 'versicolor']['sepal_width'] x3 = iris.df[iris.df.predict == 'virginica']['sepal_length'] y3 = iris.df[iris.df.predict == 'virginica']['sepal_width']
これをmatplotlibで表示します。
%matplotlib notebook import matplotlib.pyplot as plt fig = plt.figure() subplt = fig.add_subplot(1, 1, 1) subplt.scatter(x1, y1, c='red') subplt.scatter(x2, y2, c='green') subplt.scatter(x3, y3, c='blue')
すると、こんな感じになります。
終わり方 †
Jupyter Notebookが動いているターミナルをアクティブにして、control+C でサーバーのプロセスを終了します。
Anaconda Navigatorを終了します。