はじめに

Pythonで定番のツールを使ってデータ・マイニングを行う環境を整えます。

  • pandas
  • scikit-learn
  • Jupyter Notebook

pandasはデータを扱うためのライブラリーです。

scikit-learnは機械学習のライブラリーです。

Jupyter NotebookはPythonのコードや出力結果をHTML形式で出力するツールです。

この記事の内容は、以下のバージョンで確認しました。

  • macOS Sierra 10.12.3
  • Python 3.5.1

インストール

まず、Python3を最新版にアップデートします。 下記のサイトからMac OS X 64-bit/32-bit installerをダウンロードして、インストールします。

pipをインストールし、pipを最新版にします。

from sklearn import datasets
from sklearn.svm import SVC
iris = datasets.load_iris()
clf = SVC()
clf.fit(iris.data, iris.target)

scikit-learnに必要なWheel, NumPy, SciPyをインストールします。

list(clf.predict(iris.data[:3]))

次に、グラフを表示するためのmatprotlibをインストールします。

clf.fit(iris.data, iris.target_names[iris.target])

pandas

list(clf.predict(iris.data[:3]))

scikit-learn

iris.data

Jupyter Notebook

import pandas as pd
iris.df = pd.DataFrame(iris.data, 
                       columns=['sepal_length', 'sepal_width', 'petal_length', 'petal_width'])
iris.df

動作確認

Jupyter Notebook

まず、macOSのTerminalからJupyter Notebookを起動します。

iris.df['predict'] = clf.predict(iris.data)
iris.df

すると、ローカルでWebサーバーが起動し、Webブラウザが自動的に起動します。

jupyter_boot.png

New から Python 3 を選択します。

jupyter_new_python.png

すると、新しいノートブックが作成されます。

jupyter_notebook.png

scikit-learn

標準で入っているirisデータをSVM (SVC)で学習してみます。

入力ボックスにPython 3のプログラムを入力し、ボタンを押して実行します。

jupyter_iris.png
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 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')
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に表形式で出力されます。

jupyter_pandas.png

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_matplotlib.png
トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS