- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- 機械学習/Pythonでデータ分析するはじめの一歩(Mac編) へ行く。
はじめに †
Pythonで定番のツールを使ってデータ・マイニングを行う環境を整えます。
- pandas
- scikit-learn
- Jupyter Notebook
pandasはデータを扱うためのライブラリーです。
scikit-learnは機械学習のライブラリーです。
Jupyter NotebookはPythonのコードや出力結果をHTML形式で出力するツールです。
この記事の内容は、以下のバージョンで確認しました。
- macOS Sierra 10.12.3
- Python 3.5.1
インストール †
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ブラウザが自動的に起動します。
New から Python 3 を選択します。
すると、新しいノートブックが作成されます。
scikit-learn †
標準で入っているirisデータをSVM (SVC)で学習してみます。
入力ボックスにPython 3のプログラムを入力し、ボタンを押して実行します。
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に表形式で出力されます。
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')
すると、こんな感じになります。