{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 総合実験(4日目)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Jupyter Notebookを使った機械学習" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Jupyter Notebook (IPython Notebook) とは\n", "* Python という名のプログラミング言語が使えるプログラミング環境。計算コードと計算結果を同じ場所に時系列で保存できるので、実験系における実験ノートのように、いつどんな処理を行って何を得たのか記録して再現するのに便利。\n", "* [当学の演習室での使い方](https://raw.githubusercontent.com/maskot1977/-/master/%E6%BC%94%E7%BF%92%E5%AE%A4.txt)\n", "* [個人PCでのインストールと始め方](http://www.task-notes.com/entry/20151129/1448794509)\n", "* [小寺研究室](https://github.com/maskot1977/-/blob/master/L1%E3%82%BC%E3%83%9F2015%E5%B0%8F%E5%AF%BA%E7%A0%94%E7%A9%B6%E5%AE%A4.pptx.pdf) では、MacOSX上で右記のようにセットアップしています。> [環境構築](https://sites.google.com/site/masaakikotera/8-python/8-1-huan-jing-gou-zhu)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 前回の復習\n", "* 前回の内容を忘れてしまった人は[総合実験(3日目)](http://nbviewer.jupyter.org/github/maskot1977/ipython_notebook/blob/master/%E7%B7%8F%E5%90%88%E5%AE%9F%E9%A8%93%EF%BC%93%E6%97%A5%E7%9B%AE.ipynb) を見てください。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 本実習スタート\n", "* 本実習では、人工知能の一分野である「機械学習」のうち、サポートベクトルマシン(SVM: Support Vector Machine)を使います。\n", " * 機械学習とは→ [コンピューターに\"学習\"させる](http://image.slidesharecdn.com/deepvision-141031063609-conversion-gate01/95/deep-learning-4-638.jpg) \n", " * [サポートベクターマシン](http://image.slidesharecdn.com/shen2007-120927221259-phpapp01/95/proteinprotein-interaction-prediction-8-728.jpg) ・ [サポートベクターマシンとは](http://qiita.com/pesuchin/items/c55f40b69aa1aec2bd19)\n", "* 各自の画面中の IPython Notebook のセルに順次入力して(コピペ可)、「Shift + Enter」してください。\n", "* 最後に、課題を解いてもらいます。課題の結果を、指定する方法で指定するメールアドレスまで送信してください。" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import matplotlib.pyplot as plt # 図やグラフを図示するためのライブラリ\n", "import pylab as pl # これも図やグラフを図示するためのライブラリ\n", "\n", "# Jupiter Notebook 上で表示させるための呪文\n", "%matplotlib inline \n", "\n", "import urllib # URL によるリソースへのアクセスを提供するライブラリ\n", "\n", "import random #乱数を発生させるライブラリ\n", "import numpy as np # 数値計算ライブラリ\n", "\n", "import pandas as pd # データフレームワーク処理のライブラリ\n", "from pandas.tools import plotting # 高度なプロットを行うツールのインポート\n", "\n", "#機械学習のためのいろんなライブラリ\n", "import sklearn.svm as svm\n", "from sklearn.svm import SVC\n", "from sklearn.cross_validation import train_test_split\n", "from sklearn.metrics import roc_curve, precision_recall_curve, auc, classification_report, confusion_matrix\n", "from sklearn import cross_validation as cv\n", "from sklearn import svm, grid_search, datasets" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "総合実験1日目でも用いたデータをまた使います。" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "('iris.txt', )" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# ウェブ上のリソースを指定する\n", "url = 'https://raw.githubusercontent.com/maskot1977/ipython_notebook/master/toydata/iris.txt'\n", "# 指定したURLからリソースをダウンロードし、名前をつける。\n", "urllib.urlretrieve(url, 'iris.txt')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "とりあえずデータを確認するには、こんな方法もあります" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 0Sepal.LengthSepal.WidthPetal.LengthPetal.WidthSpecies
015.13.51.40.2setosa
124.93.01.40.2setosa
234.73.21.30.2setosa
344.63.11.50.2setosa
455.03.61.40.2setosa
\n", "
" ], "text/plain": [ " Unnamed: 0 Sepal.Length Sepal.Width Petal.Length Petal.Width Species\n", "0 1 5.1 3.5 1.4 0.2 setosa\n", "1 2 4.9 3.0 1.4 0.2 setosa\n", "2 3 4.7 3.2 1.3 0.2 setosa\n", "3 4 4.6 3.1 1.5 0.2 setosa\n", "4 5 5.0 3.6 1.4 0.2 setosa" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 先頭N行を表示する。カラムのタイトルも確認する。\n", "pd.DataFrame(pd.read_csv('iris.txt', sep='\\t', na_values=\".\")).head() " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 色分けした Scatter Matrix を描く\n", "* 今回は、\"Species\" 毎に色を変えてプロットしたいと思います。\n", "* カラーコードが分からない人は右記リンク参照→ [カラーコード表](http://www5.plala.or.jp/vaio0630/hp/c_code.htm)・[カラーコード](http://www.finitojapan.com/cltable.html)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['setosa', 'versicolor', 'virginica']\n" ] } ], "source": [ "# \"Species\" 列の値を重複を除いて全てリストアップする。\n", "print list(set(pd.read_csv('iris.txt', sep='\\t', na_values=\".\")[\"Species\"]))" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# それぞれに与える色を決める。\n", "color_codes = {'setosa':'#00FF00', 'versicolor':'#FF0000', 'virginica':'#0000FF'}" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# サンプル毎に色を与える。\n", "colors = [color_codes[x] for x in list(pd.read_csv('iris.txt', sep='\\t', na_values=\".\")[\"Species\"])]" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false, "scrolled": false }, "outputs": [ { "data": { "image/png": "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\nl5mZmVkLXgM6uLSBsL4e2AAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# 色分けした Scatter Matrix を描く。\n", "df = pd.read_csv('iris.txt', sep='\\t', na_values=\".\") # データの読み込み\n", "plotting.scatter_matrix(df[['Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width']], figsize=(10, 10), color=colors) #データのプロット\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### データの整形\n", "Nをサンプル数、Mを特徴量の数とする。__data__から__target__を予測する問題を解く。\n", "* __feature_names__ : 特徴量の名前(M次元のベクトル)\n", "* __sample_names__ : サンプルの名前(N次元のベクトル)\n", "* __target_names__ : 目的変数の名前(N次元のベクトル)\n", "* __data__ : 説明変数(N行M列の行列)\n", "* __target__ : 目的変数(N次元のベクトル)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# 説明変数と目的変数に分ける。\n", "data = []\n", "target = []\n", "feature_names = []\n", "sample_names = []\n", "target_names = []\n", "for i, line in enumerate(open(\"iris.txt\")):\n", " a = line.replace(\"\\n\", \"\").split(\"\\t\")\n", " if i == 0:\n", " for j, word in enumerate(a):\n", " if j == 0:\n", " continue\n", " elif j == len(a) - 1:\n", " continue\n", " else:\n", " feature_names.append(word)\n", " else:\n", " vec = []\n", " for j, word in enumerate(a):\n", " if j == 0:\n", " sample_names.append(word)\n", " elif j == len(a) - 1:\n", " word = word.strip()\n", " if word not in target_names:\n", " target_names.append(word)\n", " target.append(target_names.index(word))\n", " else:\n", " vec.append(float(word))\n", " data.append(vec)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width']\n", "['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '100', '101', '102', '103', '104', '105', '106', '107', '108', '109', '110', '111', '112', '113', '114', '115', '116', '117', '118', '119', '120', '121', '122', '123', '124', '125', '126', '127', '128', '129', '130', '131', '132', '133', '134', '135', '136', '137', '138', '139', '140', '141', '142', '143', '144', '145', '146', '147', '148', '149', '150']\n", "['setosa', 'versicolor', 'virginica']\n" ] } ], "source": [ "# 名前の確認\n", "print feature_names\n", "print sample_names\n", "print target_names" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[5.1, 3.5, 1.4, 0.2], [4.9, 3.0, 1.4, 0.2], [4.7, 3.2, 1.3, 0.2], [4.6, 3.1, 1.5, 0.2], [5.0, 3.6, 1.4, 0.2], [5.4, 3.9, 1.7, 0.4], [4.6, 3.4, 1.4, 0.3], [5.0, 3.4, 1.5, 0.2], [4.4, 2.9, 1.4, 0.2], [4.9, 3.1, 1.5, 0.1], [5.4, 3.7, 1.5, 0.2], [4.8, 3.4, 1.6, 0.2], [4.8, 3.0, 1.4, 0.1], [4.3, 3.0, 1.1, 0.1], [5.8, 4.0, 1.2, 0.2], [5.7, 4.4, 1.5, 0.4], [5.4, 3.9, 1.3, 0.4], [5.1, 3.5, 1.4, 0.3], [5.7, 3.8, 1.7, 0.3], [5.1, 3.8, 1.5, 0.3], [5.4, 3.4, 1.7, 0.2], [5.1, 3.7, 1.5, 0.4], [4.6, 3.6, 1.0, 0.2], [5.1, 3.3, 1.7, 0.5], [4.8, 3.4, 1.9, 0.2], [5.0, 3.0, 1.6, 0.2], [5.0, 3.4, 1.6, 0.4], [5.2, 3.5, 1.5, 0.2], [5.2, 3.4, 1.4, 0.2], [4.7, 3.2, 1.6, 0.2], [4.8, 3.1, 1.6, 0.2], [5.4, 3.4, 1.5, 0.4], [5.2, 4.1, 1.5, 0.1], [5.5, 4.2, 1.4, 0.2], [4.9, 3.1, 1.5, 0.2], [5.0, 3.2, 1.2, 0.2], [5.5, 3.5, 1.3, 0.2], [4.9, 3.6, 1.4, 0.1], [4.4, 3.0, 1.3, 0.2], [5.1, 3.4, 1.5, 0.2], [5.0, 3.5, 1.3, 0.3], [4.5, 2.3, 1.3, 0.3], [4.4, 3.2, 1.3, 0.2], [5.0, 3.5, 1.6, 0.6], [5.1, 3.8, 1.9, 0.4], [4.8, 3.0, 1.4, 0.3], [5.1, 3.8, 1.6, 0.2], [4.6, 3.2, 1.4, 0.2], [5.3, 3.7, 1.5, 0.2], [5.0, 3.3, 1.4, 0.2], [7.0, 3.2, 4.7, 1.4], [6.4, 3.2, 4.5, 1.5], [6.9, 3.1, 4.9, 1.5], [5.5, 2.3, 4.0, 1.3], [6.5, 2.8, 4.6, 1.5], [5.7, 2.8, 4.5, 1.3], [6.3, 3.3, 4.7, 1.6], [4.9, 2.4, 3.3, 1.0], [6.6, 2.9, 4.6, 1.3], [5.2, 2.7, 3.9, 1.4], [5.0, 2.0, 3.5, 1.0], [5.9, 3.0, 4.2, 1.5], [6.0, 2.2, 4.0, 1.0], [6.1, 2.9, 4.7, 1.4], [5.6, 2.9, 3.6, 1.3], [6.7, 3.1, 4.4, 1.4], [5.6, 3.0, 4.5, 1.5], [5.8, 2.7, 4.1, 1.0], [6.2, 2.2, 4.5, 1.5], [5.6, 2.5, 3.9, 1.1], [5.9, 3.2, 4.8, 1.8], [6.1, 2.8, 4.0, 1.3], [6.3, 2.5, 4.9, 1.5], [6.1, 2.8, 4.7, 1.2], [6.4, 2.9, 4.3, 1.3], [6.6, 3.0, 4.4, 1.4], [6.8, 2.8, 4.8, 1.4], [6.7, 3.0, 5.0, 1.7], [6.0, 2.9, 4.5, 1.5], [5.7, 2.6, 3.5, 1.0], [5.5, 2.4, 3.8, 1.1], [5.5, 2.4, 3.7, 1.0], [5.8, 2.7, 3.9, 1.2], [6.0, 2.7, 5.1, 1.6], [5.4, 3.0, 4.5, 1.5], [6.0, 3.4, 4.5, 1.6], [6.7, 3.1, 4.7, 1.5], [6.3, 2.3, 4.4, 1.3], [5.6, 3.0, 4.1, 1.3], [5.5, 2.5, 4.0, 1.3], [5.5, 2.6, 4.4, 1.2], [6.1, 3.0, 4.6, 1.4], [5.8, 2.6, 4.0, 1.2], [5.0, 2.3, 3.3, 1.0], [5.6, 2.7, 4.2, 1.3], [5.7, 3.0, 4.2, 1.2], [5.7, 2.9, 4.2, 1.3], [6.2, 2.9, 4.3, 1.3], [5.1, 2.5, 3.0, 1.1], [5.7, 2.8, 4.1, 1.3], [6.3, 3.3, 6.0, 2.5], [5.8, 2.7, 5.1, 1.9], [7.1, 3.0, 5.9, 2.1], [6.3, 2.9, 5.6, 1.8], [6.5, 3.0, 5.8, 2.2], [7.6, 3.0, 6.6, 2.1], [4.9, 2.5, 4.5, 1.7], [7.3, 2.9, 6.3, 1.8], [6.7, 2.5, 5.8, 1.8], [7.2, 3.6, 6.1, 2.5], [6.5, 3.2, 5.1, 2.0], [6.4, 2.7, 5.3, 1.9], [6.8, 3.0, 5.5, 2.1], [5.7, 2.5, 5.0, 2.0], [5.8, 2.8, 5.1, 2.4], [6.4, 3.2, 5.3, 2.3], [6.5, 3.0, 5.5, 1.8], [7.7, 3.8, 6.7, 2.2], [7.7, 2.6, 6.9, 2.3], [6.0, 2.2, 5.0, 1.5], [6.9, 3.2, 5.7, 2.3], [5.6, 2.8, 4.9, 2.0], [7.7, 2.8, 6.7, 2.0], [6.3, 2.7, 4.9, 1.8], [6.7, 3.3, 5.7, 2.1], [7.2, 3.2, 6.0, 1.8], [6.2, 2.8, 4.8, 1.8], [6.1, 3.0, 4.9, 1.8], [6.4, 2.8, 5.6, 2.1], [7.2, 3.0, 5.8, 1.6], [7.4, 2.8, 6.1, 1.9], [7.9, 3.8, 6.4, 2.0], [6.4, 2.8, 5.6, 2.2], [6.3, 2.8, 5.1, 1.5], [6.1, 2.6, 5.6, 1.4], [7.7, 3.0, 6.1, 2.3], [6.3, 3.4, 5.6, 2.4], [6.4, 3.1, 5.5, 1.8], [6.0, 3.0, 4.8, 1.8], [6.9, 3.1, 5.4, 2.1], [6.7, 3.1, 5.6, 2.4], [6.9, 3.1, 5.1, 2.3], [5.8, 2.7, 5.1, 1.9], [6.8, 3.2, 5.9, 2.3], [6.7, 3.3, 5.7, 2.5], [6.7, 3.0, 5.2, 2.3], [6.3, 2.5, 5.0, 1.9], [6.5, 3.0, 5.2, 2.0], [6.2, 3.4, 5.4, 2.3], [5.9, 3.0, 5.1, 1.8]]\n" ] } ], "source": [ "# 説明変数の確認\n", "print data" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]\n" ] } ], "source": [ "# 目的変数の確認\n", "print target" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### データのシャッフル\n", "* 今のままだと、同じ目的変数同士でサンプルが固まっているので、サンプルの順番をランダムに入れ替えます。" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# データをシャッフルする\n", "p = range(len(sample_names)) # Python 2 の場合\n", "# p = list(range(len(sample_names))) # Python 3 の場合\n", "random.seed(0)\n", "random.shuffle(p)\n", "sample_names = list(np.array(sample_names)[p])\n", "data = np.array(data)[p]\n", "target = list(np.array(target)[p])" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['137', '29', '14', '142', '99', '138', '111', '125', '118', '40', '80', '91', '9', '70', '4', '139', '101', '55', '30', '17', '23', '3', '130', '135', '26', '61', '120', '108', '78', '73', '121', '21', '110', '100', '19', '33', '22', '115', '28', '144', '150', '143', '79', '105', '10', '6', '133', '12', '42', '69', '102', '114', '5', '43', '77', '62', '88', '72', '106', '90', '36', '56', '109', '134', '18', '47', '132', '123', '140', '148', '126', '67', '65', '57', '7', '37', '84', '82', '15', '16', '24', '48', '97', '86', '38', '51', '53', '136', '96', '74', '50', '66', '52', '11', '89', '49', '32', '8', '45', '81', '98', '25', '145', '20', '92', '35', '27', '94', '124', '1', '146', '93', '46', '141', '2', '64', '129', '31', '103', '58', '117', '112', '76', '54', '13', '60', '87', '116', '95', '41', '119', '107', '131', '122', '34', '85', '104', '147', '71', '128', '83', '68', '44', '149', '59', '75', '39', '63', '113', '127']\n" ] } ], "source": [ "# シャッフル後のデータを確認\n", "print sample_names" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 6.3 3.4 5.6 2.4]\n", " [ 5.2 3.4 1.4 0.2]\n", " [ 4.3 3. 1.1 0.1]\n", " [ 6.9 3.1 5.1 2.3]\n", " [ 5.1 2.5 3. 1.1]\n", " [ 6.4 3.1 5.5 1.8]\n", " [ 6.5 3.2 5.1 2. ]\n", " [ 6.7 3.3 5.7 2.1]\n", " [ 7.7 3.8 6.7 2.2]\n", " [ 5.1 3.4 1.5 0.2]\n", " [ 5.7 2.6 3.5 1. ]\n", " [ 5.5 2.6 4.4 1.2]\n", " [ 4.4 2.9 1.4 0.2]\n", " [ 5.6 2.5 3.9 1.1]\n", " [ 4.6 3.1 1.5 0.2]\n", " [ 6. 3. 4.8 1.8]\n", " [ 6.3 3.3 6. 2.5]\n", " [ 6.5 2.8 4.6 1.5]\n", " [ 4.7 3.2 1.6 0.2]\n", " [ 5.4 3.9 1.3 0.4]\n", " [ 4.6 3.6 1. 0.2]\n", " [ 4.7 3.2 1.3 0.2]\n", " [ 7.2 3. 5.8 1.6]\n", " [ 6.1 2.6 5.6 1.4]\n", " [ 5. 3. 1.6 0.2]\n", " [ 5. 2. 3.5 1. ]\n", " [ 6. 2.2 5. 1.5]\n", " [ 7.3 2.9 6.3 1.8]\n", " [ 6.7 3. 5. 1.7]\n", " [ 6.3 2.5 4.9 1.5]\n", " [ 6.9 3.2 5.7 2.3]\n", " [ 5.4 3.4 1.7 0.2]\n", " [ 7.2 3.6 6.1 2.5]\n", " [ 5.7 2.8 4.1 1.3]\n", " [ 5.7 3.8 1.7 0.3]\n", " [ 5.2 4.1 1.5 0.1]\n", " [ 5.1 3.7 1.5 0.4]\n", " [ 5.8 2.8 5.1 2.4]\n", " [ 5.2 3.5 1.5 0.2]\n", " [ 6.8 3.2 5.9 2.3]\n", " [ 5.9 3. 5.1 1.8]\n", " [ 5.8 2.7 5.1 1.9]\n", " [ 6. 2.9 4.5 1.5]\n", " [ 6.5 3. 5.8 2.2]\n", " [ 4.9 3.1 1.5 0.1]\n", " [ 5.4 3.9 1.7 0.4]\n", " [ 6.4 2.8 5.6 2.2]\n", " [ 4.8 3.4 1.6 0.2]\n", " [ 4.5 2.3 1.3 0.3]\n", " [ 6.2 2.2 4.5 1.5]\n", " [ 5.8 2.7 5.1 1.9]\n", " [ 5.7 2.5 5. 2. ]\n", " [ 5. 3.6 1.4 0.2]\n", " [ 4.4 3.2 1.3 0.2]\n", " [ 6.8 2.8 4.8 1.4]\n", " [ 5.9 3. 4.2 1.5]\n", " [ 6.3 2.3 4.4 1.3]\n", " [ 6.1 2.8 4. 1.3]\n", " [ 7.6 3. 6.6 2.1]\n", " [ 5.5 2.5 4. 1.3]\n", " [ 5. 3.2 1.2 0.2]\n", " [ 5.7 2.8 4.5 1.3]\n", " [ 6.7 2.5 5.8 1.8]\n", " [ 6.3 2.8 5.1 1.5]\n", " [ 5.1 3.5 1.4 0.3]\n", " [ 5.1 3.8 1.6 0.2]\n", " [ 7.9 3.8 6.4 2. ]\n", " [ 7.7 2.8 6.7 2. ]\n", " [ 6.9 3.1 5.4 2.1]\n", " [ 6.5 3. 5.2 2. ]\n", " [ 7.2 3.2 6. 1.8]\n", " [ 5.6 3. 4.5 1.5]\n", " [ 5.6 2.9 3.6 1.3]\n", " [ 6.3 3.3 4.7 1.6]\n", " [ 4.6 3.4 1.4 0.3]\n", " [ 5.5 3.5 1.3 0.2]\n", " [ 6. 2.7 5.1 1.6]\n", " [ 5.5 2.4 3.7 1. ]\n", " [ 5.8 4. 1.2 0.2]\n", " [ 5.7 4.4 1.5 0.4]\n", " [ 5.1 3.3 1.7 0.5]\n", " [ 4.6 3.2 1.4 0.2]\n", " [ 5.7 2.9 4.2 1.3]\n", " [ 6. 3.4 4.5 1.6]\n", " [ 4.9 3.6 1.4 0.1]\n", " [ 7. 3.2 4.7 1.4]\n", " [ 6.9 3.1 4.9 1.5]\n", " [ 7.7 3. 6.1 2.3]\n", " [ 5.7 3. 4.2 1.2]\n", " [ 6.1 2.8 4.7 1.2]\n", " [ 5. 3.3 1.4 0.2]\n", " [ 6.7 3.1 4.4 1.4]\n", " [ 6.4 3.2 4.5 1.5]\n", " [ 5.4 3.7 1.5 0.2]\n", " [ 5.6 3. 4.1 1.3]\n", " [ 5.3 3.7 1.5 0.2]\n", " [ 5.4 3.4 1.5 0.4]\n", " [ 5. 3.4 1.5 0.2]\n", " [ 5.1 3.8 1.9 0.4]\n", " [ 5.5 2.4 3.8 1.1]\n", " [ 6.2 2.9 4.3 1.3]\n", " [ 4.8 3.4 1.9 0.2]\n", " [ 6.7 3.3 5.7 2.5]\n", " [ 5.1 3.8 1.5 0.3]\n", " [ 6.1 3. 4.6 1.4]\n", " [ 4.9 3.1 1.5 0.2]\n", " [ 5. 3.4 1.6 0.4]\n", " [ 5. 2.3 3.3 1. ]\n", " [ 6.3 2.7 4.9 1.8]\n", " [ 5.1 3.5 1.4 0.2]\n", " [ 6.7 3. 5.2 2.3]\n", " [ 5.8 2.6 4. 1.2]\n", " [ 4.8 3. 1.4 0.3]\n", " [ 6.7 3.1 5.6 2.4]\n", " [ 4.9 3. 1.4 0.2]\n", " [ 6.1 2.9 4.7 1.4]\n", " [ 6.4 2.8 5.6 2.1]\n", " [ 4.8 3.1 1.6 0.2]\n", " [ 7.1 3. 5.9 2.1]\n", " [ 4.9 2.4 3.3 1. ]\n", " [ 6.5 3. 5.5 1.8]\n", " [ 6.4 2.7 5.3 1.9]\n", " [ 6.6 3. 4.4 1.4]\n", " [ 5.5 2.3 4. 1.3]\n", " [ 4.8 3. 1.4 0.1]\n", " [ 5.2 2.7 3.9 1.4]\n", " [ 6.7 3.1 4.7 1.5]\n", " [ 6.4 3.2 5.3 2.3]\n", " [ 5.6 2.7 4.2 1.3]\n", " [ 5. 3.5 1.3 0.3]\n", " [ 7.7 2.6 6.9 2.3]\n", " [ 4.9 2.5 4.5 1.7]\n", " [ 7.4 2.8 6.1 1.9]\n", " [ 5.6 2.8 4.9 2. ]\n", " [ 5.5 4.2 1.4 0.2]\n", " [ 5.4 3. 4.5 1.5]\n", " [ 6.3 2.9 5.6 1.8]\n", " [ 6.3 2.5 5. 1.9]\n", " [ 5.9 3.2 4.8 1.8]\n", " [ 6.1 3. 4.9 1.8]\n", " [ 5.8 2.7 3.9 1.2]\n", " [ 5.8 2.7 4.1 1. ]\n", " [ 5. 3.5 1.6 0.6]\n", " [ 6.2 3.4 5.4 2.3]\n", " [ 6.6 2.9 4.6 1.3]\n", " [ 6.4 2.9 4.3 1.3]\n", " [ 4.4 3. 1.3 0.2]\n", " [ 6. 2.2 4. 1. ]\n", " [ 6.8 3. 5.5 2.1]\n", " [ 6.2 2.8 4.8 1.8]]\n" ] } ], "source": [ "# シャッフル後のデータを確認\n", "print data" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[2, 0, 0, 2, 1, 2, 2, 2, 2, 0, 1, 1, 0, 1, 0, 2, 2, 1, 0, 0, 0, 0, 2, 2, 0, 1, 2, 2, 1, 1, 2, 0, 2, 1, 0, 0, 0, 2, 0, 2, 2, 2, 1, 2, 0, 0, 2, 0, 0, 1, 2, 2, 0, 0, 1, 1, 1, 1, 2, 1, 0, 1, 2, 2, 0, 0, 2, 2, 2, 2, 2, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 2, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 2, 0, 1, 0, 0, 1, 2, 0, 2, 1, 0, 2, 0, 1, 2, 0, 2, 1, 2, 2, 1, 1, 0, 1, 1, 2, 1, 0, 2, 2, 2, 2, 0, 1, 2, 2, 1, 2, 1, 1, 0, 2, 1, 1, 0, 1, 2, 2]\n" ] } ], "source": [ "# シャッフル後のデータを確認\n", "print target" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### データの分割\n", "交差検定をするため、データを学習用とテスト用に分割します。\n", "* __data_train__ : 説明変数(学習用)\n", "* __data_test__ : 説明変数(テスト用)\n", "* __target_train__ : 目的変数(学習用)\n", "* __target_test__ : 目的変数(テスト用)\n", "\n", "交差検定 (cross-validation) とは → [交差検定](http://image.slidesharecdn.com/scikit-learn-141201042924-conversion-gate01/95/scikit-learn-15-638.jpg)\n", "* 現在取得できているデータを「学習用」と「テスト用」に分け、「学習用」だけを使って予測モデルを構築し、「評価用」を使ってモデルの性能を評価する。" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# データを分割。test_size=0.8 は、学習:テスト のデータ量比が 2:8 であることを指す。\n", "data_train, data_test, target_train, target_test, sample_names_train, sample_names_test = train_test_split(\n", " data, target, sample_names, test_size=0.8, random_state=0)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['4', '76', '17', '73', '119', '69', '104', '81', '97', '16', '64', '75', '65', '82', '61', '48', '83', '44', '144', '106', '96', '126', '136', '22', '3', '40', '20', '123', '31', '12']\n", "[0, 1, 0, 1, 2, 1, 2, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 2, 2, 1, 2, 2, 0, 0, 0, 0, 2, 0, 0]\n", "[[ 4.6 3.1 1.5 0.2]\n", " [ 6.6 3. 4.4 1.4]\n", " [ 5.4 3.9 1.3 0.4]\n", " [ 6.3 2.5 4.9 1.5]\n", " [ 7.7 2.6 6.9 2.3]\n", " [ 6.2 2.2 4.5 1.5]\n", " [ 6.3 2.9 5.6 1.8]\n", " [ 5.5 2.4 3.8 1.1]\n", " [ 5.7 2.9 4.2 1.3]\n", " [ 5.7 4.4 1.5 0.4]\n", " [ 6.1 2.9 4.7 1.4]\n", " [ 6.4 2.9 4.3 1.3]\n", " [ 5.6 2.9 3.6 1.3]\n", " [ 5.5 2.4 3.7 1. ]\n", " [ 5. 2. 3.5 1. ]\n", " [ 4.6 3.2 1.4 0.2]\n", " [ 5.8 2.7 3.9 1.2]\n", " [ 5. 3.5 1.6 0.6]\n", " [ 6.8 3.2 5.9 2.3]\n", " [ 7.6 3. 6.6 2.1]\n", " [ 5.7 3. 4.2 1.2]\n", " [ 7.2 3.2 6. 1.8]\n", " [ 7.7 3. 6.1 2.3]\n", " [ 5.1 3.7 1.5 0.4]\n", " [ 4.7 3.2 1.3 0.2]\n", " [ 5.1 3.4 1.5 0.2]\n", " [ 5.1 3.8 1.5 0.3]\n", " [ 7.7 2.8 6.7 2. ]\n", " [ 4.8 3.1 1.6 0.2]\n", " [ 4.8 3.4 1.6 0.2]]\n" ] } ], "source": [ "# 分割後のデータの確認(学習用)\n", "print sample_names_train\n", "print target_train\n", "print data_train" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['2', '109', '100', '94', '125', '98', '150', '53', '84', '67', '34', '114', '57', '77', '134', '115', '15', '50', '6', '101', '112', '132', '26', '118', '87', '130', '10', '8', '11', '120', '147', '38', '108', '116', '131', '90', '30', '86', '56', '52', '46', '14', '68', '105', '80', '36', '129', '59', '58', '124', '148', '85', '88', '24', '54', '122', '27', '39', '102', '63', '51', '121', '25', '89', '18', '74', '66', '60', '42', '70', '93', '49', '23', '139', '5', '142', '127', '45', '111', '140', '1', '32', '9', '145', '117', '92', '95', '133', '91', '146', '13', '143', '113', '29', '141', '128', '79', '99', '41', '55', '28', '138', '43', '149', '35', '137', '19', '78', '62', '37', '33', '135', '7', '21', '103', '72', '107', '47', '110', '71']\n", "[0, 2, 1, 1, 2, 1, 2, 1, 1, 1, 0, 2, 1, 1, 2, 2, 0, 0, 0, 2, 2, 2, 0, 2, 1, 2, 0, 0, 0, 2, 2, 0, 2, 2, 2, 1, 0, 1, 1, 1, 0, 0, 1, 2, 1, 0, 2, 1, 1, 2, 2, 1, 1, 0, 1, 2, 0, 0, 2, 1, 1, 2, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 2, 0, 2, 2, 0, 2, 2, 0, 0, 0, 2, 2, 1, 1, 2, 1, 2, 0, 2, 2, 0, 2, 2, 1, 1, 0, 1, 0, 2, 0, 2, 0, 2, 0, 1, 1, 0, 0, 2, 0, 0, 2, 1, 2, 0, 2, 1]\n", "[[ 4.9 3. 1.4 0.2]\n", " [ 6.7 2.5 5.8 1.8]\n", " [ 5.7 2.8 4.1 1.3]\n", " [ 5. 2.3 3.3 1. ]\n", " [ 6.7 3.3 5.7 2.1]\n", " [ 6.2 2.9 4.3 1.3]\n", " [ 5.9 3. 5.1 1.8]\n", " [ 6.9 3.1 4.9 1.5]\n", " [ 6. 2.7 5.1 1.6]\n", " [ 5.6 3. 4.5 1.5]\n", " [ 5.5 4.2 1.4 0.2]\n", " [ 5.7 2.5 5. 2. ]\n", " [ 6.3 3.3 4.7 1.6]\n", " [ 6.8 2.8 4.8 1.4]\n", " [ 6.3 2.8 5.1 1.5]\n", " [ 5.8 2.8 5.1 2.4]\n", " [ 5.8 4. 1.2 0.2]\n", " [ 5. 3.3 1.4 0.2]\n", " [ 5.4 3.9 1.7 0.4]\n", " [ 6.3 3.3 6. 2.5]\n", " [ 6.4 2.7 5.3 1.9]\n", " [ 7.9 3.8 6.4 2. ]\n", " [ 5. 3. 1.6 0.2]\n", " [ 7.7 3.8 6.7 2.2]\n", " [ 6.7 3.1 4.7 1.5]\n", " [ 7.2 3. 5.8 1.6]\n", " [ 4.9 3.1 1.5 0.1]\n", " [ 5. 3.4 1.5 0.2]\n", " [ 5.4 3.7 1.5 0.2]\n", " [ 6. 2.2 5. 1.5]\n", " [ 6.3 2.5 5. 1.9]\n", " [ 4.9 3.6 1.4 0.1]\n", " [ 7.3 2.9 6.3 1.8]\n", " [ 6.4 3.2 5.3 2.3]\n", " [ 7.4 2.8 6.1 1.9]\n", " [ 5.5 2.5 4. 1.3]\n", " [ 4.7 3.2 1.6 0.2]\n", " [ 6. 3.4 4.5 1.6]\n", " [ 5.7 2.8 4.5 1.3]\n", " [ 6.4 3.2 4.5 1.5]\n", " [ 4.8 3. 1.4 0.3]\n", " [ 4.3 3. 1.1 0.1]\n", " [ 5.8 2.7 4.1 1. ]\n", " [ 6.5 3. 5.8 2.2]\n", " [ 5.7 2.6 3.5 1. ]\n", " [ 5. 3.2 1.2 0.2]\n", " [ 6.4 2.8 5.6 2.1]\n", " [ 6.6 2.9 4.6 1.3]\n", " [ 4.9 2.4 3.3 1. ]\n", " [ 6.3 2.7 4.9 1.8]\n", " [ 6.5 3. 5.2 2. ]\n", " [ 5.4 3. 4.5 1.5]\n", " [ 6.3 2.3 4.4 1.3]\n", " [ 5.1 3.3 1.7 0.5]\n", " [ 5.5 2.3 4. 1.3]\n", " [ 5.6 2.8 4.9 2. ]\n", " [ 5. 3.4 1.6 0.4]\n", " [ 4.4 3. 1.3 0.2]\n", " [ 5.8 2.7 5.1 1.9]\n", " [ 6. 2.2 4. 1. ]\n", " [ 7. 3.2 4.7 1.4]\n", " [ 6.9 3.2 5.7 2.3]\n", " [ 4.8 3.4 1.9 0.2]\n", " [ 5.6 3. 4.1 1.3]\n", " [ 5.1 3.5 1.4 0.3]\n", " [ 6.1 2.8 4.7 1.2]\n", " [ 6.7 3.1 4.4 1.4]\n", " [ 5.2 2.7 3.9 1.4]\n", " [ 4.5 2.3 1.3 0.3]\n", " [ 5.6 2.5 3.9 1.1]\n", " [ 5.8 2.6 4. 1.2]\n", " [ 5.3 3.7 1.5 0.2]\n", " [ 4.6 3.6 1. 0.2]\n", " [ 6. 3. 4.8 1.8]\n", " [ 5. 3.6 1.4 0.2]\n", " [ 6.9 3.1 5.1 2.3]\n", " [ 6.2 2.8 4.8 1.8]\n", " [ 5.1 3.8 1.9 0.4]\n", " [ 6.5 3.2 5.1 2. ]\n", " [ 6.9 3.1 5.4 2.1]\n", " [ 5.1 3.5 1.4 0.2]\n", " [ 5.4 3.4 1.5 0.4]\n", " [ 4.4 2.9 1.4 0.2]\n", " [ 6.7 3.3 5.7 2.5]\n", " [ 6.5 3. 5.5 1.8]\n", " [ 6.1 3. 4.6 1.4]\n", " [ 5.6 2.7 4.2 1.3]\n", " [ 6.4 2.8 5.6 2.2]\n", " [ 5.5 2.6 4.4 1.2]\n", " [ 6.7 3. 5.2 2.3]\n", " [ 4.8 3. 1.4 0.1]\n", " [ 5.8 2.7 5.1 1.9]\n", " [ 6.8 3. 5.5 2.1]\n", " [ 5.2 3.4 1.4 0.2]\n", " [ 6.7 3.1 5.6 2.4]\n", " [ 6.1 3. 4.9 1.8]\n", " [ 6. 2.9 4.5 1.5]\n", " [ 5.1 2.5 3. 1.1]\n", " [ 5. 3.5 1.3 0.3]\n", " [ 6.5 2.8 4.6 1.5]\n", " [ 5.2 3.5 1.5 0.2]\n", " [ 6.4 3.1 5.5 1.8]\n", " [ 4.4 3.2 1.3 0.2]\n", " [ 6.2 3.4 5.4 2.3]\n", " [ 4.9 3.1 1.5 0.2]\n", " [ 6.3 3.4 5.6 2.4]\n", " [ 5.7 3.8 1.7 0.3]\n", " [ 6.7 3. 5. 1.7]\n", " [ 5.9 3. 4.2 1.5]\n", " [ 5.5 3.5 1.3 0.2]\n", " [ 5.2 4.1 1.5 0.1]\n", " [ 6.1 2.6 5.6 1.4]\n", " [ 4.6 3.4 1.4 0.3]\n", " [ 5.4 3.4 1.7 0.2]\n", " [ 7.1 3. 5.9 2.1]\n", " [ 6.1 2.8 4. 1.3]\n", " [ 4.9 2.5 4.5 1.7]\n", " [ 5.1 3.8 1.6 0.2]\n", " [ 7.2 3.6 6.1 2.5]\n", " [ 5.9 3.2 4.8 1.8]]\n" ] } ], "source": [ "# 分割後のデータの確認(テスト用)\n", "print sample_names_test\n", "print target_test\n", "print data_test" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### SVMで学習・予測\n", "学習用データ( __data_train__ と __target_train__ ) の関係を学習して、テスト用データ( __data_test__ )から正解( __target_test__ ) を予測する、という流れになります。" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Linear SVM で学習・予測\n", "classifier = svm.SVC(kernel='linear', probability=True)\n", "#probas = classifier.fit(data_train, target_train).predict_proba(data_test)\n", "pred = classifier.fit(data_train, target_train).predict(data_test)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123456789...110111112113114115116117118119
00211211111...0100211021
\n", "

1 rows × 120 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 5 6 7 8 9 ... 110 111 112 113 \\\n", "0 0 2 1 1 2 1 1 1 1 1 ... 0 1 0 0 \n", "\n", " 114 115 116 117 118 119 \n", "0 2 1 1 0 2 1 \n", "\n", "[1 rows x 120 columns]" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 予測結果\n", "pd.DataFrame(pred).T" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123456789...110111112113114115116117118119
00211212111...0200212021
\n", "

1 rows × 120 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 5 6 7 8 9 ... 110 111 112 113 \\\n", "0 0 2 1 1 2 1 2 1 1 1 ... 0 2 0 0 \n", "\n", " 114 115 116 117 118 119 \n", "0 2 1 2 0 2 1 \n", "\n", "[1 rows x 120 columns]" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#正解\n", "pd.DataFrame(target_test).T" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 予測モデルの評価\n", "性能評価の指標はたくさんありますが、とりあえず以下の5つは覚えておいてください。\n", "* 正解率 (Accuracy) = (TP + TN) / (TP + FP + FN + TN)\n", "* 適合率 (Precision) = TP / (TP + FP)\n", "* 再現率 (Recall) = TP / (TP + FN)\n", "* 特異度 (Specificity) = TN / (TN + FP)\n", "* F値 (F-measure) = 2 x Precision x Recall / (Precision + Recall)\n", "\n", "参考資料は右記→ [モデルの評価](http://image.slidesharecdn.com/random-140419010313-phpapp02/95/-23-638.jpg)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 混同行列 (confusion matrix)\n", "データの分類で、うまくできた・できなかった回数を数えた表" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
012
03900
103818
20025
\n", "
" ], "text/plain": [ " 0 1 2\n", "0 39 0 0\n", "1 0 38 18\n", "2 0 0 25" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 予測と正解の比較。第一引数が行、第二引数が列を表す。\n", "pd.DataFrame(confusion_matrix(pred, target_test))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 正解率 (Accuracy) の計算" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy: 0.9667 (+/- 0.0365)\n" ] } ], "source": [ "# cv=5 で5分割クロスバリデーションし精度を計算\n", "score=cv.cross_val_score(classifier,data,target,cv=5,n_jobs=-1)\n", "print(\"Accuracy: {0:04.4f} (+/- {1:04.4f})\".format(score.mean(),score.std()))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### AUPRスコア と AUCスコア\n", "性能評価によく使われるのがAUPRスコアとAUCスコア\n", "* __AUPRスコア__ : Precision-Recallカーブ下の面積。 → [Precision-Recallカーブの例](http://image.slidesharecdn.com/prmu201512slideshare-151222104106/95/201512prmu-80-638.jpg)\n", "* __AUCスコア__ : ROCカーブ下の面積。→ [ROC曲線](http://image.slidesharecdn.com/collaborativefilteringwithr-130416090214-phpapp02/95/collaborativefilteringwith-r-29-638.jpg)・[ROC曲線](http://image.slidesharecdn.com/iir08ver-1-0-090405123213-phpapp02/95/iir-08-ver10-28-728.jpg)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# AUPR や AUC スコアを出そうと思ったらターゲットをバイナリ(二値)にしないといけないっぽい。\n", "# そこで、ラベルが2のものを無視して、ラベル0のものとラベル1のものを区別する。\n", "data2 = []\n", "target2 = []\n", "for da, ta in zip(data, target):\n", " if ta == 2:\n", " continue\n", " data2.append(da)\n", " target2.append(ta)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1]\n" ] } ], "source": [ "# 二値になっていることを確認\n", "print target2" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# データをシャッフル\n", "p = range(len(data2))\n", "random.seed(0)\n", "random.shuffle(p)\n", "sample_names = list(np.array(sample_names)[p])\n", "data2 = np.array(data2)[p]\n", "target2 = list(np.array(target2)[p])" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# データを分割。test_size=0.8 は、学習:テスト のデータ量比が 2:8 であることを指す。\n", "data_train, data_test, target_train, target_test, sample_names_train, sample_names_test = train_test_split(\n", " data2, target2, sample_names, test_size=0.8, random_state=0)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Linear SVM で学習・予測\n", "classifier = svm.SVC(kernel='linear', probability=True)\n", "probas = classifier.fit(data_train, target_train).predict_proba(data_test)\n", "pred = classifier.fit(data_train, target_train).predict(data_test)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "AUPR score: 1.00\n" ] } ], "source": [ "# AUPR score を出す。ラベル0とラベル1の区別は簡単\n", "precision, recall, thresholds = precision_recall_curve(target_test, probas[:, 1])\n", "area = auc(recall, precision)\n", "print \"AUPR score: %0.2f\" % area" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "AUC score: 1.000000\n" ] } ], "source": [ "# AUC scoreを出す。ラベル0とラベル1の区別は簡単\n", "fpr, tpr, thresholds = roc_curve(target_test, probas[:, 1])\n", "roc_auc = auc(fpr, tpr)\n", "print \"AUC score: %f\" % roc_auc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 予測が簡単すぎてツマラナイので、もう少し難しくします。" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# ラベルが0のものを無視して、ラベル1のものとラベル2のものを区別する。\n", "# ラベルはバイナリ(0か1)でないといけないので、ここでは1のものを0と呼び、2のものを1と呼ぶように変換する。\n", "data2 = []\n", "target2 = []\n", "for da, ta in zip(data, target):\n", " if ta == 0:\n", " continue\n", " data2.append(da)\n", " target2.append(ta - 1)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# データをシャッフル\n", "p = range(len(data2))\n", "random.seed(0)\n", "random.shuffle(p)\n", "shuffled_sample_names = list(np.array(sample_names)[p])\n", "shuffled_data = np.array(data2)[p]\n", "shuffled_target = list(np.array(target2)[p])" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# データを分割。test_size=0.8 は、学習:テスト のデータ量比が 2:8 であることを指す。\n", "data_train, data_test, target_train, target_test, sample_names_train, sample_names_test = train_test_split(\n", " data2, target2, sample_names, test_size=0.8, random_state=0)" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Linear SVM で学習・予測\n", "classifier = svm.SVC(kernel='linear', probability=True)\n", "probas = classifier.fit(data_train, target_train).predict_proba(data_test)\n", "pred = classifier.fit(data_train, target_train).predict(data_test)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "AUPR score: 0.99\n" ] } ], "source": [ "# AUPRスコアを出す\n", "precision, recall, thresholds = precision_recall_curve(target_test, probas[:, 1])\n", "area = auc(recall, precision)\n", "print \"AUPR score: %0.2f\" % area" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ROC score : 0.988743\n" ] } ], "source": [ "# AUCスコアを出す。\n", "fpr, tpr, thresholds = roc_curve(target_test, probas[:, 1])\n", "roc_auc = auc(fpr, tpr)\n", "print \"ROC score : %f\" % roc_auc" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEZCAYAAACNebLAAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmYFfWd7/H3p0FQlkYaXFgaMERj3KK4xHGItnqjYFwS\njWERQxySIRM1aq43cUlCoya5TuIzjmaMEZGYMYhBZ1yiiXiNHSZPJIpLXAFFZEdEEiAg+/f+UdXN\n4VDdfbrp06cbP6/nOU/Xqd/vVH2r+pz6Vv1+tSgiMDMzy1dW6gDMzKxtcoIwM7NMThBmZpbJCcLM\nzDI5QZiZWSYnCDMzy+QE8REi6TVJJzdSp1LSWklqrbiKTdICSaelwxMk/WepY9oductjVkxOEG2A\npHclbUg3zMslTZHUpaXnExFHRMTMRuosjojyKMIFMunGeXO6nKsl/VHSiS09nwL44p8ckgZJ2ibp\nP/LGD5S0XVJZ3vgpkm5Ih8dK2pr+T/8m6UVJn0vLTkmnu1bSGklvSvpKM2McKOn3ktZLekPS6Q3U\n7SHpF5Lek7RC0oS88pMk/TmN62VJ/9icmD4KnCDahgA+FxHlwBDgOOC7WRX3gD37aely9gZqgOml\nDceALwOrgRGS9sorKySZ/indqdgXuAf4taQeadnStKwH8C1gkqSDmxHj/cALQAXJb+NBSb3qqXsr\nsA8wAPg0cLGksQCSegKPAjcDPYAfA4/lxGs5nCDaDgFExHLgt8ARAJKekXRTure9HjhIUrmkyZKW\nSVos6cbcxCHpa+le1tq0WenodHxuU8vxkp5P9+yWS/pJOn6nvUZJfSQ9IukDSfMkfTVnPhMkPSDp\n3nRer0oaUsjCRsR24FdA39wfuqSzJb0k6a/pMh+ZU9Zf0kOSVkp6X9Jt6fiPSXpa0qq07D5J5c36\nJ9Qz/3QeH+Ssy77pvE5O338lZ52/Lemfc6Z5Svp/+j/pXu1SSedJGi5pbhr3tXnrdbqkaen0Zks6\nqp54JemadJ7vp5/Zt4mL/WWSje4W4JwmfjbfPSQb58H5BRHxW5JElLks9UkTyjFAdURsioj/Al4B\nLqjnI2cD/5rWXQhMBv4pLTsJWBER/xWJXwHvA+c3JaaPCieINkZSJXAW8GLO6DHAV4HuwCLgXmAT\n8DGSH85n03IkXQh8HxiT7qmfC3yQMat/B25N9+wGA7/OKcvda3wgneeBwIXADyVV5ZSfA0wl2Rt7\nDNipmaKB5ewEjE1j+2s67hiSH/PXSPYUfw48KmmvNGH9BlhAsmfYD5hWOzngh2mMnwT6A9WFxJEX\nU73zj4h3gG8D90naB5gCTMlpsnsPOCtd55cA/1abTFIHAp2AvsAEYBJwEcn/72Tge5IG5tQ/l2Td\n9yTZe35YUoeMsL+Z1v1MOu2/AnfkLNNfJI1sYJk/w451OZ3kf9IskjqSrLt1wFt5ZZJ0LtALeDsv\nvtXp6695f3+aVjsceCci1udM8i/p+HrDyRkuI93haqBuQ+UfXRHhV4lfJBu9tSR7VwuA24HOadkz\nJHtOtXX3BzbWlqfjRgJPp8O/Ay5vYD6npcM1JBuqXnl1BgLbSH5UlSR7lV1yyn8I3JMOTwBm5JR9\nEljfwHJOIElsq4GtJHtuJ+eU3wFMzPvMHJKN34kkG+GyAtbnecAL9Sz3BOCX9Xyu3vnnvH+YZO/1\nZWCvBmL479r/A3AKsB5Q+r4bsB04Lqf+bODcnBj/lFMmYBnwjxnL8wZwak7dPsDmQtZTWn8S8FA6\nfGL6/+md/13I+8wU4IZ0eGz6HVkNrAT+VBtPutzb0rKNab1vNuP3MSZ3faTjbqr9HmbU/0+SZNcN\n+DhJQvowLasg2Sn5EtAxjX8b8LNi/b7b88tHEG3HeRFREREHRcTlEbEpp2xxzvBAYC9gee3eFnAn\nsF9aXgnML2B+44BPAHOUdNh9LqNOH2B1RGzIGbeQZI+z1oqc4Q3A3pLKJI2WtC5tInk8p84DEVFB\nkuheI+lvyV22/527R0lyNNA3Xa6FkTRN7UTS/pLul7RE0t+A+0j6OJqqofnXuptkz/X2iNiSE8Nw\nSc+mzVB/BYbnxfBBpFso4MP078qc8g9JNmi16v7n6eeW5MWRG/N/18ZMkjC2AAc0trCS9iY5Kpya\nzmdWOt/RaZWt6d/8fom90nnUejb97u4fESdFxDM5ZUvT/3d34DagOWdf/R3IbzLsQXKkkuVykkT3\nFkminkqy/oiI1cDngatJvrtnAE/VltvOnCDajoY6n3ObfBaT7I31Sn+UPSNi34g4Kqd8l/bfXSYY\nMT8iRkfEfsC/knT67ZNXbRlQIalrzrgBwNICpj81IrpH0kG5S/JJf6jjgWpJtRuzxcAP0uWqXbZu\nEfFAWjZAeWfUpH5Iskd+eCQdpWNoeH3Wp6H5k66HW0maoapr2/rT5rIHSdbjfhHRk6QfaXdOKKis\nHZAkkkSVtd4XAcPzYu4aSV9WY75AsuG9Q0k/1HKSJFTbzLScJBEMyvvcQSQ7CgVLk+k1wFFpUxNQ\nd+r12rxX7Y5FbVPZ68DH8r6Hn0rHZ83rbxExJiL6RMSRQAfguZzy/4mIEyKiN0n/yydzy20HJ4h2\nJiJWADNI2ri7p227H9OO6xvuBq5W2lksaXDar7ETSRdJqt3DXUOShGr3zms7zJeQNBn8SFLntKN0\nHMkhfH0K3ihGxDySJrHvpKMmAV+XdEIaY1dJZ6UbhudINlj/V1KXNJ6T0s91J9nLXCepH/B/Co0h\nT0Pzh2QP+LmI+GfgCZI+Ckj6FjoBqyJiu6ThJHumu+NYSZ9P+x2uItkp+HNGvZ+T9AsNSGPeL3cD\n3IixJMnuSJIN7qeAocDRkg5Pj9YeAn4gqUJSR0mjSDaov23qAqVJ4haSJrTacUekOxG5r9odi2+k\ndd4iadKbkP7fzyfpM3goaz7p76EiPZIdTtIvcmNO+dHpspSn8SyKiKeaujwfBU4QbUNDpxJmlX2Z\nZIP0Bkn77nSSTlAi4kHgB8BUSWtJDrErMqY1DHg9rfNvwIicZq3ceqNI9hiXkfwgv5fXhNCUZcny\nE+BrknpHxAskP+afps0l80j3ZtON1TnAwSR7zYtJ2pEBJgLHAn8j6SjP33AUFFND8083umcA30ir\nfws4RtKoiPg7SWfx9PRzI4FHGptdI+8fAUaQdDpfBJwfEdsy6v57WneGpDUkCf2E2sJ0D31U/swl\n9SVp7vm3iFiZ83qRZONfexRxKcl37BWSPqBvkHTGv9/I8tXnHqCynibNhowEjidZHz8ALoiID9Jl\nGZp+j2sdC7xK0q/3A2B0RMzJKf82sIrkKOgAkiMpy1DbaWZmbYSSC7sGR8SXSx2LfbT5CMLMzDI5\nQZiZWSY3MZmZWSYfQZiZWaaOpQ6gUJJ8qGNm1gwR0axrctrVEUSpLztvK68JEyaUPIa28vK68Lrw\numj4tTvaVYIwM7PW4wRhZmaZnCDaoaqqqlKH0GZ4XezgdbGD10XLaDenuUqK9hKrmVlbIYloi53U\nSp569p6kVxqoc5ukt5Q8G/bo+uqZmVnrKnYT0xTgzPoK0zstDo6Ig0lu/XxnkeMxM7MCFTVBRMQf\nSR8nWY/zgF+mdf8M9Mh5NoCZmZVQqS+U68fOT0tbmo57L6vyU75ju5kV2b77wvHHlzqKtqHUCaJJ\nxo+vrhvu2bOKioqqksViZnueCKipga1bG63aZtXU1FBTU9Mi0yr6WUySBgKPxY5HYuaW3Qk8Ezse\n6TgHOCUidjmC8FlMZlZs27dDx47J3z1Fmz2LKSXqfwzloyRPR0PSicDfspKDmZm1vqI2MUmaClQB\nvSQtInkWbScgIuKuiHgifebv28B64JJixmNmZoXzhXJmZik3Me3Mt9owM7NMThBmZpbJCcLMzDI5\nQZiZWSYnCDMzy9SurqQ2M2vPImDLFvjwwx2vjRt3Hc79W/vKf79xI/TtCzfdVLx4fZqrmVlq+3bo\n0AFeew02bGj49eGHuw5n/c1PBmVlsM8+O157793w8N57Z782b4Yf/QhWrmx4mXbnNFcnCDOzVAQc\nd1yyMe/SJfvVtWuy4e7SpeG/9b06tlC7zcqVcMQRxU0QbmIyM0tJ8MILpY6i7XAntZmZZXKCMDOz\nTE4QZmaWyQnCzMwyOUGYmVkmJwgzM8vkBGFmZpmcIMzMLJMThJmZZXKCMDOzTE4QZmaWyQnCzMwy\nOUGYmVkmJwgzM8vkBGFmZpmcIMzMLJMThJmZZXKCMDOzTE4QZmaWyQnCzMwyOUGYmVkmJwgzsz3U\n3/++e5/v2DJhmJlZa9u4EX72M3jvveS1YsXOwxG7N33F7k6hlUiK9hKrmVmxbdoE48ZB165wwAHJ\n68ADd/7brRuUlYmIUHPmUfQEIWkYcCtJc9bkiLg5r7wcuA8YAHQAbomIX2RMxwnCzKyJpDaaICSV\nAfOA04FlwPPAyIiYk1PnWqA8Iq6V1BuYCxwQEVvzpuUEYWbWRLuTIIrdSX0C8FZELIyILcA04Ly8\nOgF0T4e7Ax/kJwczM2t9xU4Q/YDFOe+XpONy/RQ4TNIy4C/AFUWOyczMCtAWTnM9E3gpIvoCxwD/\nIalbiWMyM/vIK/ZprktJOp9r9U/H5boE+BFARMyXtAA4FJidP7Hq6uq64aqqKqqqqlo2WjOzdq6m\npoaampoWmVaxO6k7kHQ6nw4sB54DRkXEmzl1/gNYGRETJR1Akhg+FRGr86blTmozsybanU7qoh5B\nRMQ2SZcBM9hxmuubksYnxXEXcBPwC0mvpB/7dn5yMDOz1ucL5czM9mBt+TRXMzNrp5wgzMwskxOE\nmZllcoIwM7NMThBmZpbJCcLMzDI5QZiZWSYnCDMzy+QEYWZmmZwgzMwskxOEmZllcoIwM7NMThBm\nZpbJCcLMzDI5QZiZWSYnCDMzy+QEYWZmmZwgzMwskxOEmZllcoIwM7NMThBmZpbJCcLMzDI5QZiZ\nWSYnCDMzy+QEYWZmmZwgzMwskxOEmZllcoIwM7NMThBmZpbJCcLMzDI5QZiZWSYnCDMzy+QEYWZm\nmZwgzMwsU8EJQlI/SSdJOrn2VeDnhkmaI2mepO/UU6dK0kuSXpP0TKExmZlZ8SgiGq8k3QyMAN4A\ntqWjIyLObeRzZcA84HRgGfA8MDIi5uTU6QH8CTgjIpZK6h0RqzKmFYXEamZmO0giItScz3YssN7n\ngU9ExKYmTv8E4K2IWAggaRpwHjAnp85o4KGIWAqQlRzMzKz1FdrE9A6wVzOm3w9YnPN+STou1yFA\nhaRnJD0v6eJmzMfMzFpYoUcQG4CXJT0N1B1FRMQ3WyiGIcBpQFfgWUnPRsTb+RWrq6vrhquqqqiq\nqmqB2ZuZ7TlqamqoqalpkWkV2gcxNmt8RNzbyOdOBKojYlj6/prkY3FzTp3vAHtHxMT0/d3AbyPi\nobxpuQ/CzKyJdqcPoqAEkc6kE0lzEMDciNhSwGc6AHNJOqmXA88BoyLizZw6hwK3A8OAzsCfgRER\n8UbetJwgzMyaqOid1JKqgHuBdwEBlZLGRsTMhj4XEdskXQbMIOnvmBwRb0oanxTHXRExR9KTwCsk\nZ0jdlZ8czMys9RXaxPQCMDoi5qbvDwHuj4hjixxfbgw+gjAza6LdOYIo9CymvWqTA0BEzKN5ZzWZ\nmVk7UehZTLPTzuP70vcXAbOLE5KZmbUFhTYxdQYuBYamo/4HuKMZF841m5uYzMyarlXOYio1Jwgz\ns6Yr2llMkn4dEV+S9Cqwy9Y5Io5qzkzNzKzta/AIQlKfiFguaWBWee09llqDjyDMzJquaGcxRcTy\ndHAVsDhNCJ2BT5HcndXMzPZQhZ7mOhPYW1I/koveLgZ+UaygzMys9ApNEIqIDcD5JGcvXQgcXryw\nzMys1ApOEJL+geT6h8fTcR2KE5KZmbUFhSaIK4Frgf+OiNclfQzwo0HNzPZgvg7CzGwPVszrIG6N\niCslPUb2dRANPpPazMzar8buxfSf6d+fFDsQMzNrWwq9F1NX4MOI2J6+7wB0Ts9sahVuYjIza7rW\nuN3300CXnPf7AP+vOTM0M7P2odAEsXdE/L32TTrcpYH6ZmbWzhWaINZLGlL7RtKxwIfFCcnMzNqC\nQh8YdCUwXdIykmdSHwiMKFpUZmZWcgVfByFpL+AT6du5EbGlaFFlz9+d1GZmTVT0TmpJXYDvAFdE\nxGvAIElnN2eGZmbWPhTaBzEF2Az8Q/p+KXBTUSIyM7M2odAEMTgi/hXYApBe/9CsQxYzM2sfCk0Q\nmyXtQ3q7DUmDgU1Fi8rMzEqu0LOYJgC/Ayol/Qr4R+ArxQrKzMxKr9GzmCQJ6A9sAE4kaVqaFRGr\nih/eTnH4LCYzsybanbOYCr0X06sRcWRzZtBSnCDMzJquNe7F9KKk45szAzMza58KPYKYAxwMvAus\nJ2lmiog4qqjR7RyDjyDMzJqoaA8MynFmcyZuZmbtV2NPlNsb+DrwceBVYHJEbG2NwMzMrLQa64O4\nFziOJDkMB24pekRmZtYmNNgHkXv2kqSOwHMRMaTeDxSR+yDMzJqumGcx1d2xtblNS5KGSZojaZ6k\n7zRQ73hJWySd35z5mJlZy2rsCGIbyVlLkJy5tA/JBXO1ZzGVNzhxqQyYB5wOLAOeB0ZGxJyMek+R\nPITonoj4r4xp+QjCzKyJinYWU0R0aF5IdU4A3oqIhQCSpgHnAXPy6l0OPAj4Wgszszai0Avlmqsf\nsDjn/ZJ0XB1JfYHPR8TP8B1izczajGIniELcSvIwolpOEmZmbUChF8o111JgQM77/um4XMcB09Kb\nAvYGhkvaEhGP5k+surq6briqqoqqqqqWjtfMrF2rqamhpqamRaZV8DOpmzVxqQMwl6STejnwHDAq\nIt6sp/4U4DF3UpuZtYzWuNVGs0TENkmXATNImrMmR8SbksYnxXFX/keKGY+ZmRWuqEcQLclHEGZm\nTdcat/s2M7OPGCcIMzPL5ARhZmaZnCDMzCyTE4SZmWVygjAzs0xOEGZmlskJwszMMjlBmJlZJicI\nMzPL5ARhZmaZnCDMzCyTE4SZmWVygjAzs0xOEGZmlskJwszMMjlBmJlZJicIMzPL5ARhZmaZnCDM\nzCyTE4SZmWVygjAzs0xOEGZmlskJwszMMjlBmJlZJicIMzPL5ARhZmaZnCDMzCyTE4SZmWVygjAz\ns0xOEGZmlskJwszMMjlBmJlZJicIMzPLVPQEIWmYpDmS5kn6Tkb5aEl/SV9/lHRksWMyM7PGKSKK\nN3GpDJgHnA4sA54HRkbEnJw6JwJvRsQaScOA6og4MWNaUcxYzcz2RJKICDXns8U+gjgBeCsiFkbE\nFmAacF5uhYiYFRFr0rezgH5FjsnMzApQ7ATRD1ic834JDSeArwK/LWpEZmZWkI6lDqCWpFOBS4Ch\n9dWprq6uG66qqqKqqqrocZmZtSc1NTXU1NS0yLSK3QdxIkmfwrD0/TVARMTNefWOAh4ChkXE/Hqm\n5T4IM7Mmast9EM8DH5c0UFInYCTwaG4FSQNIksPF9SUHMzNrfUVtYoqIbZIuA2aQJKPJEfGmpPFJ\ncdwFfA+oAO6QJGBLRJxQzLjMzKxxRW1iakluYjIza7q23MRkZmbtlBOEmZllcoIwM7NMThBmZpbJ\nCcLMzDI5QZiZWSYnCDMzy+QEYWZmmZwgzMwsU5u5m2tzDRo0iIULF5Y6DLNmGThwIO+++26pwzDL\n1O5vtZFeRl6CiMx2n7+/Vmy+1YaZmbU4JwgzM8vkBGFmZpmcIMzMLJMTxB7iiCOOYObMmQ3WWbx4\nMeXl5XtUp+hBBx3E73//ewAmTpzIxRdfXOKIzPYcThBFNmjQILp06UJ5eTl9+vThkksuYcOGDS0+\nn9dee42TTz65wTqVlZWsXbuW5MF9LWvixIl06tSJ8vJyKioqGDp0KLNmzWrx+TSmGMtm9lHlBFFk\nknj88cdZu3YtL774IrNnz+amm27KrNve9+xHjhzJ2rVrWbVqFVVVVVx44YWlDqnFbdu2rdQhmLUa\nJ4hWULvh79OnD8OHD+e1114D4NRTT+W73/0uQ4cOpWvXrixYsIC1a9cybtw4+vbtS2VlJd/73vd2\nShyTJk3isMMOo7y8nCOOOIKXX34Z2Lmp5fnnn+f444+nR48e9OnTh6uvvhqAhQsXUlZWxvbt2wFY\nvnw55513Hr169eKQQw7h7rvvrpvPxIkTGTFiBGPHjqW8vJwjjzySF198saDlLSsr46KLLmLZsmV8\n8MEHdeN/85vfcMwxx9CzZ0+GDh3Kq6++Wle2ZMkSLrjgAvbff3/2228/vvnNbwLwzjvvcPrpp9O7\nd2/2339/xowZw9q1a5v2D0g98sgjHHPMMfTo0YODDz6YGTNm7LLuape9tqmqdp3dc889DBw4kNNP\nP52zzjqLO+64Y6dpH3300Tz88MMAzJkzhzPOOINevXrxyU9+kunTpzcrXrNSc4JoRYsXL+aJJ55g\nyJAhdePuu+8+7r77btatW8eAAQMYO3YsnTt35p133uGll17iqaeeqttwT58+nRtuuIH77ruPtWvX\n8uijj9KrV69d5nPFFVdw5ZVXsmbNGubPn8+XvvSlurLcJpgRI0YwYMAAVqxYwfTp07nuuuuoqamp\nK3/ssccYPXo0a9as4ZxzzuHSSy8taDk3b97MvffeS69evejZsycAL730EuPGjWPSpEmsXr2a8ePH\nc+6557Jlyxa2b9/O2WefzUEHHcSiRYtYunQpI0eOBJLket1117FixQrefPNNlixZQnV1dcHrvNZz\nzz3H2LFjueWWW1izZg0zZ85k0KBB9dbPb6qaOXMmc+fO5cknn2TUqFFMnTq1ruyNN95g0aJFnH32\n2WzYsIEzzjiDMWPGsGrVKqZNm8all17KnDlzmhyzWclFRLt4JaHuqr7xO9fZ/VdzDRo0KLp37x49\ne/aMQYMGxWWXXRYbN26MiIiqqqqYMGFCXd333nsvOnfuXFceEXH//ffHaaedFhERZ555Ztx22231\nzufpp5+OiIhTTjklqqurY9WqVTvVeffdd6OsrCy2bdsWixYtio4dO8b69evryq+99tq45JJLIiKi\nuro6PvvZz9aVvfHGG9GlS5d6l7O6ujo6deoUPXv2jA4dOkTv3r3jD3/4Q135v/zLv8T3v//9nT7z\niU98ImbOnBnPPvts7L///rFt27Z6p1/r4YcfjiFDhmQud3V1dVx88cWZnxs/fnx861vfyizLnUb+\ndGrX2bvvvltXvm7duujWrVssWrQoIiKuv/76GDduXEREPPDAA3HyySfvMu8bbrghc96FfH/Ndkf6\nHWvWdvcjcQTREilidzzyyCOsXr2aBQsWcPvtt9O5c+e6ssrKyrrhhQsXsmXLFvr06UNFRQU9e/bk\n61//Ou+//z6QHIEMHjy40flNnjyZuXPncuihh/LpT3+axx9/fJc6y5cvp6Kigi5dutSNGzhwIEuX\nLq17f+CBB9YNd+nShY0bN7J9+3amTp1K9+7dKS8v53Of+1xdnREjRrB69WpWrlzJEUccwezZs3da\ntltuuYWKioq6ZVuyZAnLli1j8eLFDBw4kLKyXb+OK1euZNSoUfTv35999923bs+8qQpdd/Xp379/\n3XC3bt0466yzmDZtGgD3338/Y8aMAZLlnDVr1k7LOXXqVFasWNHseZuVSru/WV97EA1kmNymjMrK\nSvbee28++OCDzLNxKisrmT9/fqPzGzx4cF0TyEMPPcQXv/hFVq9evVOdvn37snr1atavX0/Xrl0B\n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\nSma7uyLGAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# PR curve を描く\n", "pl.clf()\n", "pl.plot(recall, precision, label='Precision-Recall curve')\n", "pl.xlabel('Recall')\n", "pl.ylabel('Precision')\n", "pl.ylim([0.0, 1.05])\n", "pl.xlim([0.0, 1.0])\n", "pl.title('Precision-Recall example: AUPR=%0.2f' % area)\n", "pl.legend(loc=\"lower left\")\n", "pl.show()" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "image/png": "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\nrJIeyiCkMUtFBqE2CBERiUsZRC0UFxczatQoioqK0h2KiEjKKYNIQLSHUl5eHj179kx3SCJZr6io\niFNPPTUAFyMpAAATR0lEQVTdYWSF4uJi+vTpw759++p1v8ogalBcXMyIESO45557mDZtGj/96U/V\nEC1J6d69O61btyYnJ4cuXbpw2WWXsXPnzkpp5syZw9lnn01OTg4dOnRg+PDhLF68uFKa7du3c9NN\nN5GXl0dOTg7HHHMMN998MyUlJfV5OAftrrvu4tZbb013GAdl7969XH755bRr144uXbrwi1/8otr0\n9913H3l5ebRv357Ro0ezY8eOimWffvop5513Hh07duToo4/md7/7XcWyww8/nLPOOqvSvHrh7lnx\nCkKtX3v37vX8/Hy/7bbbfNeuXfW+f6mddHxGaqN79+7+t7/9zd3dN2zY4AMGDPA777yzYvmcOXO8\nTZs2/sgjj/iOHTt88+bNfuedd3qHDh185cqV7h58Jk855RT/6le/6kuWLHF3988++8zvu+8+f+WV\nV1IW+/79++t0e+vWrfOOHTv6nj17MiKeZI0bN86//OUv+9atW33x4sXeuXNnnzFjRty0EyZM8OOP\nP97Xrl3rn3/+uQ8fPtzHjBlTsfzMM8/0m2++2UtLS33+/Pmem5vrhYWFFcvffPNN79evX5WxVPX5\nD+cn97ub7Ir1/UrXl7+kpCQt+5Xay4YMYtasWRXTt956q3/jG9+omB48eLDfcMMNB6w3bNiwih+S\nxx9/3Dt37uw7d+5MeL8LFy70IUOGeG5urnfu3Nnvv/9+d3e/9NJL/Uc/+lFFusLCQj/qqKMqxfvA\nAw94//79vWXLlv7AAw/4+eefX2nbN954o48dO9bd3bdu3epXXHGFH3nkkX7UUUf5nXfe6WVlZXFj\nmjhxog8ZMqTSvJ/+9Kfeq1cvb9u2rfft29enTp1asWzChAl++umn+/e//33v2LFjRdxPPvmkH3/8\n8Z6bm+tDhw71VatWVawzduxY79atm+fk5Pgpp5zi//jHPxI+Z4nq0qWL//Wvf62Yvuuuu3zUqFFx\n055//vn+4IMPVkzPmTPHW7Zs6bt27fIdO3a4mfnGjRsrll911VV+ySWXVEzv37/fW7du7atXr467\n/VRkEKpiqkGHDh3SHYI0QJ988gmvvPIKxxxzDAC7du1izpw5nH/++QekveCCC3jttdcAmDVrFkOH\nDqVVq1YJ7WfHjh0MGTKEr33ta6xbt45ly5Zx9tlnV5nerHJvyMmTJ/PKK6+wZcsWRo4cySuvvFIx\nxlhZWRnPP/88F110EQBjxoyhefPmrFixgnnz5vHaa6/xxBNPxN3Phx9+yHHHHVdpXn5+Pm+++Sbb\ntm3j7rvv5jvf+Q4bNmyoWD537lzy8/MpLi7mjjvuqKjyfemll/jss88YPHgwo0aNqkg/cOBAFixY\nwObNmxk9ejQjRoxg7969ceN54IEH6NChA7m5uXTo0KHS+9zc3LjrbNmyhXXr1tG/f/+KeQMGDGDR\nokVVnd5KysrK2Lt3Lx999BHufkA3VXev9LTJpk2bkp+fz/z58xPafp1INmep7xcpvjrctGlTlVc7\nkh0S+YxA3byS0b17d2/btq23bdvWzczPOecc37p1q7u7f/LJJ25m/q9//euA9V599VVv3ry5u7sP\nGTLEb7/99oT3+eyzz/rJJ58cd1m8EkS3bt0qxTthwoRK6wwePNiffvppd3efOXOm5+fnu7v7+vXr\nvUWLFr579+5K+z7zzDPj7vvKK6+s8ThOPPFEnz59ursHJYi8vLxKy4cNG+a///3vK6ZLS0urvcLu\n0KGDL1iwoNp91saaNWu8SZMmlarJXnvtNe/Ro0fc9E888YQfd9xx/vHHH/uWLVv8m9/8pjdp0sTf\nfvttdw/O7Y033ui7d+/2f/7zn56bm+u9e/eutI3TTz+94vzHqurzj0oQyXMPeij16dOH9957L93h\nSIrVVRaRrGnTprFt2zbeeOMNlixZwsaNG4GgpNqkSRPWrVt3wDrr1q2jU6dOAHTs2DFumqqsWbOG\nXr16JR3vUUcdVWl61KhRPPvss0AwesDo0aMBWL16Nfv27ePII4+suPK+5pprKo4vVocOHdi+fXul\neRMnTuSkk06quIJftGhRpfW7detWKf2qVasYO3Ysubm55Obm0rFjR8yMtWvXAvCzn/2MPn36VGxv\n27ZtVcaTjDZt2gCwbdu2inlbt26lbdu2cdNffvnljBo1ioKCAk444QTOOuss4ItzPGnSJFasWMHR\nRx/N9ddfz8UXX3zA+d++fTvt27evs2OoSaPOIGJ7KKnLnaSah7nL4MGDGTNmDLfccgsArVu35ktf\n+hLPP//8AetMmTKFc845B4BzzjmHGTNmsGvXroT2161bN5YvXx532aGHHlqpF1W8jCe2ymnEiBEU\nFhaydu1apk6dWpFBdOvWjZYtW7Jp0yZKSkrYvHkzW7ZsYcGCBXH33b9/f5YuXVoxvXr1aq666ioe\nffRRNm/ezObNm+nbt2+lKpfYWMp7+pSUlFTsc8eOHQwaNIjZs2fz4IMP8sILL1RsLycnp9L2ou6/\n/37atm1LTk5OpVf5vHjat2/PkUceWanKZ/78+fTt2zduejPj7rvvZuXKlaxevZrjjz+erl270rVr\n14pz+Kc//YkNGzbw1ltv8dlnnzFw4MCK9UtLS1m2bBkDBgyIu/2USLboUd8v6rCKqayszCdPnuxH\nHHGEeig1IHX5GUmF2Ebqzz77zA899NCKao/Zs2dX9GLavn27l5SU+B133OEdOnTwZcuWubv7nj17\nfODAgT5s2DBfsmSJl5WV+caNG/0nP/lJ3F5M27dv9y5duvivfvUr37Nnj2/fvt3nzp3r7kGD9/HH\nH+8lJSW+bt06HzRo0AFVTNF4yw0bNsyHDBlyQNXVeeed52PHjvVt27Z5WVmZL1++3N94442452LD\nhg3eqVOniuqZoqIib9WqlS9dutRLS0v997//vTdr1syffPJJdw+qmAYPHlxpG1OnTvV+/fr5okWL\n3N19y5Yt/vzzz7u7+8svv+xdu3b19evX+549e/yee+7xZs2axT2egzFu3DgvKCjwzZs3e1FRkXfu\n3NlnzpwZN21JSYkvX77c3d0XLVrk/fr18yeeeKJi+eLFi3379u2+d+9ef/rpp/2www6r1Gg9Z84c\n79u3b5WxVPX5R1VMtVNaWspLL72k+xqkXsVeAXfq1IkxY8Zw7733AnD66aczY8YMXnzxRY488kh6\n9OjB/PnzefPNNyuqiZo3b85f//pXevfuzZAhQ2jXrh2DBg1i06ZNcUcRbtOmDa+99hrTp0+nc+fO\nHHvssRQWFgJw8cUX079/f7p3787QoUMZOXJktfGWGz16NLNmzaponC43ceJE9u7dS58+fcjNzWXE\niBGsX78+7jbK+/W/9NJLABx//PHccsstDBo0iM6dO7No0SLOOOOMas/neeedx7hx4xg5ciTt27en\nf//+vPrqqwCce+65nHvuuRx77LH06NGD1q1bH1BFVRfuueceevbsSV5eHmeddRbjxo1jyJAhFcvb\ntm3Lm2++CcDGjRv52te+Rps2bfj617/Od7/7Xa644oqKtDNmzKBnz57k5uby2GOPMWPGDDp27Fix\n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\nAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# ROC curve を描く\n", "pl.clf()\n", "pl.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % roc_auc)\n", "pl.plot([0, 1], [0, 1], 'k--')\n", "pl.xlim([0.0, 1.0])\n", "pl.ylim([0.0, 1.0])\n", "pl.xlabel('False Positive Rate')\n", "pl.ylabel('True Positive Rate')\n", "pl.title('Receiver operating characteristic example')\n", "pl.legend(loc=\"lower right\")\n", "pl.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### まだ予測が簡単すぎてツマラナイので、さらに難しくします。" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# 予測を難しくするため、不要な特徴量(ノイズ)を加える\n", "np.random.seed(0)\n", "data2 = np.c_[data2, np.random.randn(len(target2), 96)]" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123456789...90919293949596979899
06.33.45.62.41.7640520.4001570.9787382.2408931.867558-0.977278...1.178780-0.179925-1.0707531.054452-0.4031771.2224450.2082750.9766390.3563660.706573
16.93.15.12.30.0105001.7858700.1269120.4019891.883151-1.347759...-0.643618-2.2234030.625231-1.602058-1.1043830.052165-0.7395631.543015-1.2928570.267051
25.12.53.01.1-0.039283-1.1680930.523277-0.1715460.7717910.823504...-2.0306842.064493-0.1105411.020173-0.6920501.5363770.2863440.608844-1.0452531.211145
36.43.15.51.80.6898181.301846-0.628088-0.4810272.303917-1.060016...0.0494950.4938370.643314-1.570623-0.2069040.880179-1.6981060.387280-2.255564-1.022507
46.53.25.12.00.038631-1.656715-0.985511-1.4718351.6481350.164228...-2.016407-0.539455-0.275671-0.7097281.7388730.9943941.319137-0.8824191.1285940.496001
56.73.35.72.10.7714061.029439-0.908763-0.4243180.862596-2.655619...0.3547580.6168870.0086280.5270040.453782-1.8297400.0370060.7679020.589880-0.363859
67.73.86.72.2-0.805627-1.118312-0.1310541.133080-1.951804-0.659892...0.4524890.097896-0.448165-0.649338-0.0234231.079195-2.0042160.376877-0.545712-1.884586
75.72.63.51.0-1.945703-0.9127830.2195100.393063-0.9389821.017021...0.039767-1.566995-0.4513030.2656880.7231000.0246120.719984-1.102906-0.1016970.019279
85.52.64.41.21.849591-0.214167-0.4990170.021351-0.9191130.192754...-1.032643-0.436748-1.642965-0.406072-0.5352700.0254051.1541840.1725040.0210620.099454
95.62.53.91.10.227393-1.016739-0.1147750.308751-1.3707600.865653...-0.9474890.2444431.401345-0.4103820.5289440.2461480.863520-0.8047542.346647-1.279161
106.03.04.81.8-0.3655510.9380930.2967330.829986-0.496102-0.074805...0.435546-0.5992240.033090-0.854161-0.719941-0.893574-0.1560241.0490933.1709750.189500
116.33.36.02.5-1.3484131.264983-0.300784-0.6606090.209849-1.240625...1.518759-1.1711600.764497-0.268373-0.169758-0.1341331.221385-0.192842-0.033319-1.530803
126.52.84.61.50.2066910.5310430.2391461.3978960.0551710.298977...-0.549499-1.0985712.3208000.1170910.5342010.3178850.4348080.5400940.732424-0.375222
137.23.05.81.6-0.291642-1.741023-0.7803040.2711131.0450230.599040...-0.612626-0.822828-1.4902651.496140-0.9724031.346221-0.467493-0.8624930.622519-0.631192
146.12.65.61.40.568459-0.3328120.480424-0.9681860.8313510.487973...0.665967-2.534554-1.3751840.500992-0.4802490.9361080.809180-1.1980930.4066571.201698
155.02.03.51.00.147434-0.9774650.8793900.6354250.5426110.715939...-0.1049801.367415-1.6553440.153644-1.5844740.844454-1.2128680.283770-0.282196-1.158203
166.02.25.01.5-1.619360-0.5110401.740629-0.2934850.917222-0.057043...-0.7967751.548067-0.061743-0.446836-0.1837560.824618-1.3128501.4148740.156476-0.216344
177.32.96.31.80.4428460.218397-0.344196-0.252711-0.8688630.656391...0.2466490.607993-0.839632-1.3682451.561280-0.940270-0.6599430.2130170.599369-0.256317
186.73.05.01.70.460794-0.400986-0.9711711.4263172.4884421.695970...-0.762362-1.4469402.620574-0.747473-1.300347-0.803850-0.774295-0.2693900.825372-0.298323
196.32.54.91.5-0.922823-1.4513380.0218570.0425391.5309320.092448...1.257744-2.0866350.040071-0.3277551.4558080.0554921.484926-2.1238900.4595850.280058
206.93.25.72.31.390534-1.641349-0.1550360.066060-0.4957951.216578...-0.770784-0.4808450.7035860.9291450.371173-0.9898230.6436310.6888970.274647-0.603620
217.23.66.12.50.7088600.422819-3.1168570.644452-1.9137430.663562...0.409552-0.7995931.5116391.7064680.7017830.073285-0.461894-0.6264901.7108371.414415
225.72.84.11.3-0.063661-1.579931-2.832012-1.083427-0.1306201.400689...-1.0982890.572613-0.861216-0.5095951.098582-0.1270670.8134520.4732910.753866-0.888188
235.82.85.12.4-0.2215740.424253-0.8490731.629500-0.777228-0.300004...2.4643220.1938321.132005-0.560981-1.362941-0.791757-0.268010-0.4966081.336386-0.120041
246.83.25.92.30.461469-0.046481-0.4335540.0379961.714051-0.767949...-0.110591-0.4324321.077037-0.224827-0.5762420.574609-0.4898280.658802-0.596917-0.222959
255.93.05.11.80.152177-0.374126-0.0134510.8154720.4106020.480970...0.7046430.1555910.9367950.7703310.1408110.4734881.8552461.415656-0.3027460.989679
265.82.75.11.90.5858511.1363880.671617-0.974167-1.6196850.572627...0.2957790.8425890.245616-0.032996-1.5620141.006107-0.0440451.9595620.942314-2.005125
276.02.94.51.50.755050-1.396535-0.759495-0.250757-0.0940620.397565...-0.875155-0.5935200.662005-0.340874-1.519974-0.216533-0.7842210.731294-0.3432350.070774
286.53.05.82.2-0.4054720.433939-0.1835910.325199-2.5933890.097251...0.100564-0.954943-1.4704021.0104280.4961790.576956-1.1076470.2349770.6290000.314034
296.42.85.62.2-0.7450231.012261-1.5276320.9287421.0810561.572330...0.826126-0.057757-0.726712-0.2171630.136031-0.8383110.561450-1.259596-0.332759-0.204008
..................................................................
706.73.15.62.4-0.881016-0.6766890.071754-0.094366-0.8810151.513925...-0.3065630.3679111.2681540.0654530.834569-1.1156510.8476580.238571-0.463588-1.145754
716.12.94.71.4-0.0187510.5387160.254868-0.0915771.0684791.085213...-0.194306-1.368116-1.1639930.4308240.133907-0.811671-0.5282790.4628011.3132370.833175
726.42.85.62.1-0.2018920.093311-1.0099720.4170530.433208-0.200063...-1.032532-0.901072-0.5148780.417854-2.048833-0.989744-0.3382941.503827-0.258209-0.154596
737.13.05.92.1-1.655827-0.093555-1.0900810.7780082.1689540.587482...-0.1782790.9238130.714544-1.0212540.232299-0.154917-0.399993-2.658387-1.0034291.389284
744.92.43.31.0-0.0713520.138888-0.0967620.4031150.6281490.567997...-0.426025-0.8693340.332105-0.2232300.1859180.0755600.4812560.080554-0.188178-1.311192
756.53.05.51.8-0.0887241.5127700.573708-0.5410040.1011770.994552...-1.214615-0.363353-1.0163750.816155-2.642065-0.999590-0.684297-1.378620-0.116662-0.500927
766.42.75.31.91.304927-1.1700610.427337-0.486877-0.9399680.193671...-0.243211-0.1372610.523465-1.2656040.4806743.003123-0.151272-0.7243950.038790-0.119819
776.63.04.41.40.820849-1.007497-0.6677930.0483030.1750380.208316...-1.2666211.5865520.061099-0.177095-0.585432-0.4385350.0175961.3314621.584075-0.323664
785.52.34.01.32.341122-0.6135570.924924-0.2237810.8911210.145156...0.1425880.8878031.384392-2.0635310.418131-1.6780022.865602-0.675515-1.213975-1.723544
795.22.73.91.4-0.011559-1.2834460.660915-0.1157040.300711-0.961867...1.438354-1.400189-1.954720-0.7588570.1194260.736410-0.665872-0.0521110.142015-1.200824
806.73.14.71.5-0.0141290.1722821.0185020.362555-0.2192810.685341...1.654254-1.763229-1.941552-1.190738-0.0048490.4222420.0341981.521315-0.1766050.224400
816.43.25.32.30.7282630.115932-1.4154870.3165680.878322-1.156103...-0.142926-0.014118-0.5412920.9153400.7681110.1016350.8094420.000456-0.2267171.281717
825.62.74.21.3-0.0734991.0696350.7920150.3397080.633513-0.312690...1.1936710.1420210.9903041.0248550.781983-1.515585-0.120473-0.264603-0.478156-1.257802
837.72.66.92.3-0.8879620.8834040.368100-0.345552-0.1083530.836264...-0.7742741.2149650.7606170.317108-0.1672190.123047-0.534006-0.0623280.499380-0.611262
844.92.54.51.70.227978-1.263296-1.0773020.360745-0.2576620.781847...-2.1246911.672370-0.716988-0.5348270.357596-0.2395391.9923260.198205-1.463027-0.505329
857.42.86.11.90.865052-1.306580-0.6528151.7014000.220198-1.617604...0.6536220.117515-1.2265950.284589-0.334194-0.9034730.381607-0.0520801.3590300.240198
865.62.84.92.0-0.5103401.4039891.009901-0.468205-0.1903150.227571...-0.3794710.595397-0.8911391.2549011.0709411.3681180.754042-1.3617900.2148900.766670
875.43.04.51.5-0.572147-0.932604-1.346319-1.0583540.3082200.126306...-0.318538-1.8720910.0721270.291206-0.2783480.6049550.6706090.7283981.335929-0.872750
886.32.95.61.8-0.182048-0.2766490.538549-1.242191-0.648934-0.894170...0.017709-1.0553750.0537260.892005-0.1436830.5428862.6151810.908922-0.6701070.146299
896.32.55.01.9-0.417750-0.3071750.2703180.006145-0.0414131.252048...0.8536890.6619520.1940431.2519851.454035-1.487691-0.528628-0.5613620.4594190.461485
905.93.24.81.8-0.841556-2.404757-1.494455-2.204729-0.710470-0.686504...-0.0177751.5376011.584035-1.5073340.0665760.3779610.9021580.017875-0.1060610.949775
916.13.04.91.81.1455741.176222-0.837864-0.506493-0.5005350.074223...-1.3914251.1874110.1367410.446020-1.2611470.038625-0.9642370.414514-0.175222-2.575418
925.82.73.91.2-1.654025-0.0349280.044896-0.401898-0.718010-0.079427...-0.647734-0.5638370.104988-0.084172-0.506115-1.237672-1.230211-0.241843-0.0475620.347055
935.82.74.11.0-0.7907450.082979-0.965247-0.8953530.7561290.493720...0.7263561.206265-1.037853-0.245858-1.389653-0.0786310.979513-0.207132-0.494727-1.672523
946.23.45.42.30.215002-0.672310-0.216854-0.900317-1.247777-0.177184...-1.1470520.719630-0.939569-1.2485230.977258-0.974969-0.9194550.155265-1.3407961.057030
956.62.94.61.3-0.0778691.703830-0.273921-0.310248-1.7548900.419147...-0.356165-2.2441610.572133-0.0420630.833380-0.1294800.2182020.362546-0.340090-1.353757
966.42.94.31.3-1.2952090.772378-0.064841-1.2400771.6827951.140158...0.4718841.167628-1.280400-1.5776510.437270-1.1033480.6475730.447371-0.1467710.779457
976.02.24.01.0-0.6803260.962252-0.8587231.2175000.289700-2.598197...0.135432-0.4342210.835055-1.5380432.201508-1.2920141.6503760.437087-0.692241-1.832737
986.83.05.52.1-0.1175620.018905-0.107093-1.7652980.571350-0.833247...0.646027-0.4569581.7222470.248672-0.594782-0.572446-1.2928010.351857-0.2768440.174488
996.22.84.81.80.771581-0.315522-0.601200-0.0778920.654753-1.526880...-0.776623-0.248674-1.735269-0.0490260.3822930.7362160.776332-0.1527951.2485650.223998
\n", "

100 rows × 100 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 5 6 7 8 \\\n", "0 6.3 3.4 5.6 2.4 1.764052 0.400157 0.978738 2.240893 1.867558 \n", "1 6.9 3.1 5.1 2.3 0.010500 1.785870 0.126912 0.401989 1.883151 \n", "2 5.1 2.5 3.0 1.1 -0.039283 -1.168093 0.523277 -0.171546 0.771791 \n", "3 6.4 3.1 5.5 1.8 0.689818 1.301846 -0.628088 -0.481027 2.303917 \n", "4 6.5 3.2 5.1 2.0 0.038631 -1.656715 -0.985511 -1.471835 1.648135 \n", "5 6.7 3.3 5.7 2.1 0.771406 1.029439 -0.908763 -0.424318 0.862596 \n", "6 7.7 3.8 6.7 2.2 -0.805627 -1.118312 -0.131054 1.133080 -1.951804 \n", "7 5.7 2.6 3.5 1.0 -1.945703 -0.912783 0.219510 0.393063 -0.938982 \n", "8 5.5 2.6 4.4 1.2 1.849591 -0.214167 -0.499017 0.021351 -0.919113 \n", "9 5.6 2.5 3.9 1.1 0.227393 -1.016739 -0.114775 0.308751 -1.370760 \n", "10 6.0 3.0 4.8 1.8 -0.365551 0.938093 0.296733 0.829986 -0.496102 \n", "11 6.3 3.3 6.0 2.5 -1.348413 1.264983 -0.300784 -0.660609 0.209849 \n", "12 6.5 2.8 4.6 1.5 0.206691 0.531043 0.239146 1.397896 0.055171 \n", "13 7.2 3.0 5.8 1.6 -0.291642 -1.741023 -0.780304 0.271113 1.045023 \n", "14 6.1 2.6 5.6 1.4 0.568459 -0.332812 0.480424 -0.968186 0.831351 \n", "15 5.0 2.0 3.5 1.0 0.147434 -0.977465 0.879390 0.635425 0.542611 \n", "16 6.0 2.2 5.0 1.5 -1.619360 -0.511040 1.740629 -0.293485 0.917222 \n", "17 7.3 2.9 6.3 1.8 0.442846 0.218397 -0.344196 -0.252711 -0.868863 \n", "18 6.7 3.0 5.0 1.7 0.460794 -0.400986 -0.971171 1.426317 2.488442 \n", "19 6.3 2.5 4.9 1.5 -0.922823 -1.451338 0.021857 0.042539 1.530932 \n", "20 6.9 3.2 5.7 2.3 1.390534 -1.641349 -0.155036 0.066060 -0.495795 \n", "21 7.2 3.6 6.1 2.5 0.708860 0.422819 -3.116857 0.644452 -1.913743 \n", "22 5.7 2.8 4.1 1.3 -0.063661 -1.579931 -2.832012 -1.083427 -0.130620 \n", "23 5.8 2.8 5.1 2.4 -0.221574 0.424253 -0.849073 1.629500 -0.777228 \n", "24 6.8 3.2 5.9 2.3 0.461469 -0.046481 -0.433554 0.037996 1.714051 \n", "25 5.9 3.0 5.1 1.8 0.152177 -0.374126 -0.013451 0.815472 0.410602 \n", "26 5.8 2.7 5.1 1.9 0.585851 1.136388 0.671617 -0.974167 -1.619685 \n", "27 6.0 2.9 4.5 1.5 0.755050 -1.396535 -0.759495 -0.250757 -0.094062 \n", "28 6.5 3.0 5.8 2.2 -0.405472 0.433939 -0.183591 0.325199 -2.593389 \n", "29 6.4 2.8 5.6 2.2 -0.745023 1.012261 -1.527632 0.928742 1.081056 \n", ".. ... ... ... ... ... ... ... ... ... \n", "70 6.7 3.1 5.6 2.4 -0.881016 -0.676689 0.071754 -0.094366 -0.881015 \n", "71 6.1 2.9 4.7 1.4 -0.018751 0.538716 0.254868 -0.091577 1.068479 \n", "72 6.4 2.8 5.6 2.1 -0.201892 0.093311 -1.009972 0.417053 0.433208 \n", "73 7.1 3.0 5.9 2.1 -1.655827 -0.093555 -1.090081 0.778008 2.168954 \n", "74 4.9 2.4 3.3 1.0 -0.071352 0.138888 -0.096762 0.403115 0.628149 \n", "75 6.5 3.0 5.5 1.8 -0.088724 1.512770 0.573708 -0.541004 0.101177 \n", "76 6.4 2.7 5.3 1.9 1.304927 -1.170061 0.427337 -0.486877 -0.939968 \n", "77 6.6 3.0 4.4 1.4 0.820849 -1.007497 -0.667793 0.048303 0.175038 \n", "78 5.5 2.3 4.0 1.3 2.341122 -0.613557 0.924924 -0.223781 0.891121 \n", "79 5.2 2.7 3.9 1.4 -0.011559 -1.283446 0.660915 -0.115704 0.300711 \n", "80 6.7 3.1 4.7 1.5 -0.014129 0.172282 1.018502 0.362555 -0.219281 \n", "81 6.4 3.2 5.3 2.3 0.728263 0.115932 -1.415487 0.316568 0.878322 \n", "82 5.6 2.7 4.2 1.3 -0.073499 1.069635 0.792015 0.339708 0.633513 \n", "83 7.7 2.6 6.9 2.3 -0.887962 0.883404 0.368100 -0.345552 -0.108353 \n", "84 4.9 2.5 4.5 1.7 0.227978 -1.263296 -1.077302 0.360745 -0.257662 \n", "85 7.4 2.8 6.1 1.9 0.865052 -1.306580 -0.652815 1.701400 0.220198 \n", "86 5.6 2.8 4.9 2.0 -0.510340 1.403989 1.009901 -0.468205 -0.190315 \n", "87 5.4 3.0 4.5 1.5 -0.572147 -0.932604 -1.346319 -1.058354 0.308220 \n", "88 6.3 2.9 5.6 1.8 -0.182048 -0.276649 0.538549 -1.242191 -0.648934 \n", "89 6.3 2.5 5.0 1.9 -0.417750 -0.307175 0.270318 0.006145 -0.041413 \n", "90 5.9 3.2 4.8 1.8 -0.841556 -2.404757 -1.494455 -2.204729 -0.710470 \n", "91 6.1 3.0 4.9 1.8 1.145574 1.176222 -0.837864 -0.506493 -0.500535 \n", "92 5.8 2.7 3.9 1.2 -1.654025 -0.034928 0.044896 -0.401898 -0.718010 \n", "93 5.8 2.7 4.1 1.0 -0.790745 0.082979 -0.965247 -0.895353 0.756129 \n", "94 6.2 3.4 5.4 2.3 0.215002 -0.672310 -0.216854 -0.900317 -1.247777 \n", "95 6.6 2.9 4.6 1.3 -0.077869 1.703830 -0.273921 -0.310248 -1.754890 \n", "96 6.4 2.9 4.3 1.3 -1.295209 0.772378 -0.064841 -1.240077 1.682795 \n", "97 6.0 2.2 4.0 1.0 -0.680326 0.962252 -0.858723 1.217500 0.289700 \n", "98 6.8 3.0 5.5 2.1 -0.117562 0.018905 -0.107093 -1.765298 0.571350 \n", "99 6.2 2.8 4.8 1.8 0.771581 -0.315522 -0.601200 -0.077892 0.654753 \n", "\n", " 9 ... 90 91 92 93 94 \\\n", "0 -0.977278 ... 1.178780 -0.179925 -1.070753 1.054452 -0.403177 \n", "1 -1.347759 ... -0.643618 -2.223403 0.625231 -1.602058 -1.104383 \n", "2 0.823504 ... -2.030684 2.064493 -0.110541 1.020173 -0.692050 \n", "3 -1.060016 ... 0.049495 0.493837 0.643314 -1.570623 -0.206904 \n", "4 0.164228 ... -2.016407 -0.539455 -0.275671 -0.709728 1.738873 \n", "5 -2.655619 ... 0.354758 0.616887 0.008628 0.527004 0.453782 \n", "6 -0.659892 ... 0.452489 0.097896 -0.448165 -0.649338 -0.023423 \n", "7 1.017021 ... 0.039767 -1.566995 -0.451303 0.265688 0.723100 \n", "8 0.192754 ... -1.032643 -0.436748 -1.642965 -0.406072 -0.535270 \n", "9 0.865653 ... -0.947489 0.244443 1.401345 -0.410382 0.528944 \n", "10 -0.074805 ... 0.435546 -0.599224 0.033090 -0.854161 -0.719941 \n", "11 -1.240625 ... 1.518759 -1.171160 0.764497 -0.268373 -0.169758 \n", "12 0.298977 ... -0.549499 -1.098571 2.320800 0.117091 0.534201 \n", "13 0.599040 ... -0.612626 -0.822828 -1.490265 1.496140 -0.972403 \n", "14 0.487973 ... 0.665967 -2.534554 -1.375184 0.500992 -0.480249 \n", "15 0.715939 ... -0.104980 1.367415 -1.655344 0.153644 -1.584474 \n", "16 -0.057043 ... -0.796775 1.548067 -0.061743 -0.446836 -0.183756 \n", "17 0.656391 ... 0.246649 0.607993 -0.839632 -1.368245 1.561280 \n", "18 1.695970 ... -0.762362 -1.446940 2.620574 -0.747473 -1.300347 \n", "19 0.092448 ... 1.257744 -2.086635 0.040071 -0.327755 1.455808 \n", "20 1.216578 ... -0.770784 -0.480845 0.703586 0.929145 0.371173 \n", "21 0.663562 ... 0.409552 -0.799593 1.511639 1.706468 0.701783 \n", "22 1.400689 ... -1.098289 0.572613 -0.861216 -0.509595 1.098582 \n", "23 -0.300004 ... 2.464322 0.193832 1.132005 -0.560981 -1.362941 \n", "24 -0.767949 ... -0.110591 -0.432432 1.077037 -0.224827 -0.576242 \n", "25 0.480970 ... 0.704643 0.155591 0.936795 0.770331 0.140811 \n", "26 0.572627 ... 0.295779 0.842589 0.245616 -0.032996 -1.562014 \n", "27 0.397565 ... -0.875155 -0.593520 0.662005 -0.340874 -1.519974 \n", "28 0.097251 ... 0.100564 -0.954943 -1.470402 1.010428 0.496179 \n", "29 1.572330 ... 0.826126 -0.057757 -0.726712 -0.217163 0.136031 \n", ".. ... ... ... ... ... ... ... \n", "70 1.513925 ... -0.306563 0.367911 1.268154 0.065453 0.834569 \n", "71 1.085213 ... -0.194306 -1.368116 -1.163993 0.430824 0.133907 \n", "72 -0.200063 ... -1.032532 -0.901072 -0.514878 0.417854 -2.048833 \n", "73 0.587482 ... -0.178279 0.923813 0.714544 -1.021254 0.232299 \n", "74 0.567997 ... -0.426025 -0.869334 0.332105 -0.223230 0.185918 \n", "75 0.994552 ... -1.214615 -0.363353 -1.016375 0.816155 -2.642065 \n", "76 0.193671 ... -0.243211 -0.137261 0.523465 -1.265604 0.480674 \n", "77 0.208316 ... -1.266621 1.586552 0.061099 -0.177095 -0.585432 \n", "78 0.145156 ... 0.142588 0.887803 1.384392 -2.063531 0.418131 \n", "79 -0.961867 ... 1.438354 -1.400189 -1.954720 -0.758857 0.119426 \n", "80 0.685341 ... 1.654254 -1.763229 -1.941552 -1.190738 -0.004849 \n", "81 -1.156103 ... -0.142926 -0.014118 -0.541292 0.915340 0.768111 \n", "82 -0.312690 ... 1.193671 0.142021 0.990304 1.024855 0.781983 \n", "83 0.836264 ... -0.774274 1.214965 0.760617 0.317108 -0.167219 \n", "84 0.781847 ... -2.124691 1.672370 -0.716988 -0.534827 0.357596 \n", "85 -1.617604 ... 0.653622 0.117515 -1.226595 0.284589 -0.334194 \n", "86 0.227571 ... -0.379471 0.595397 -0.891139 1.254901 1.070941 \n", "87 0.126306 ... -0.318538 -1.872091 0.072127 0.291206 -0.278348 \n", "88 -0.894170 ... 0.017709 -1.055375 0.053726 0.892005 -0.143683 \n", "89 1.252048 ... 0.853689 0.661952 0.194043 1.251985 1.454035 \n", "90 -0.686504 ... -0.017775 1.537601 1.584035 -1.507334 0.066576 \n", "91 0.074223 ... -1.391425 1.187411 0.136741 0.446020 -1.261147 \n", "92 -0.079427 ... -0.647734 -0.563837 0.104988 -0.084172 -0.506115 \n", "93 0.493720 ... 0.726356 1.206265 -1.037853 -0.245858 -1.389653 \n", "94 -0.177184 ... -1.147052 0.719630 -0.939569 -1.248523 0.977258 \n", "95 0.419147 ... -0.356165 -2.244161 0.572133 -0.042063 0.833380 \n", "96 1.140158 ... 0.471884 1.167628 -1.280400 -1.577651 0.437270 \n", "97 -2.598197 ... 0.135432 -0.434221 0.835055 -1.538043 2.201508 \n", "98 -0.833247 ... 0.646027 -0.456958 1.722247 0.248672 -0.594782 \n", "99 -1.526880 ... -0.776623 -0.248674 -1.735269 -0.049026 0.382293 \n", "\n", " 95 96 97 98 99 \n", "0 1.222445 0.208275 0.976639 0.356366 0.706573 \n", "1 0.052165 -0.739563 1.543015 -1.292857 0.267051 \n", "2 1.536377 0.286344 0.608844 -1.045253 1.211145 \n", "3 0.880179 -1.698106 0.387280 -2.255564 -1.022507 \n", "4 0.994394 1.319137 -0.882419 1.128594 0.496001 \n", "5 -1.829740 0.037006 0.767902 0.589880 -0.363859 \n", "6 1.079195 -2.004216 0.376877 -0.545712 -1.884586 \n", "7 0.024612 0.719984 -1.102906 -0.101697 0.019279 \n", "8 0.025405 1.154184 0.172504 0.021062 0.099454 \n", "9 0.246148 0.863520 -0.804754 2.346647 -1.279161 \n", "10 -0.893574 -0.156024 1.049093 3.170975 0.189500 \n", "11 -0.134133 1.221385 -0.192842 -0.033319 -1.530803 \n", "12 0.317885 0.434808 0.540094 0.732424 -0.375222 \n", "13 1.346221 -0.467493 -0.862493 0.622519 -0.631192 \n", "14 0.936108 0.809180 -1.198093 0.406657 1.201698 \n", "15 0.844454 -1.212868 0.283770 -0.282196 -1.158203 \n", "16 0.824618 -1.312850 1.414874 0.156476 -0.216344 \n", "17 -0.940270 -0.659943 0.213017 0.599369 -0.256317 \n", "18 -0.803850 -0.774295 -0.269390 0.825372 -0.298323 \n", "19 0.055492 1.484926 -2.123890 0.459585 0.280058 \n", "20 -0.989823 0.643631 0.688897 0.274647 -0.603620 \n", "21 0.073285 -0.461894 -0.626490 1.710837 1.414415 \n", "22 -0.127067 0.813452 0.473291 0.753866 -0.888188 \n", "23 -0.791757 -0.268010 -0.496608 1.336386 -0.120041 \n", "24 0.574609 -0.489828 0.658802 -0.596917 -0.222959 \n", "25 0.473488 1.855246 1.415656 -0.302746 0.989679 \n", "26 1.006107 -0.044045 1.959562 0.942314 -2.005125 \n", "27 -0.216533 -0.784221 0.731294 -0.343235 0.070774 \n", "28 0.576956 -1.107647 0.234977 0.629000 0.314034 \n", "29 -0.838311 0.561450 -1.259596 -0.332759 -0.204008 \n", ".. ... ... ... ... ... \n", "70 -1.115651 0.847658 0.238571 -0.463588 -1.145754 \n", "71 -0.811671 -0.528279 0.462801 1.313237 0.833175 \n", "72 -0.989744 -0.338294 1.503827 -0.258209 -0.154596 \n", "73 -0.154917 -0.399993 -2.658387 -1.003429 1.389284 \n", "74 0.075560 0.481256 0.080554 -0.188178 -1.311192 \n", "75 -0.999590 -0.684297 -1.378620 -0.116662 -0.500927 \n", "76 3.003123 -0.151272 -0.724395 0.038790 -0.119819 \n", "77 -0.438535 0.017596 1.331462 1.584075 -0.323664 \n", "78 -1.678002 2.865602 -0.675515 -1.213975 -1.723544 \n", "79 0.736410 -0.665872 -0.052111 0.142015 -1.200824 \n", "80 0.422242 0.034198 1.521315 -0.176605 0.224400 \n", "81 0.101635 0.809442 0.000456 -0.226717 1.281717 \n", "82 -1.515585 -0.120473 -0.264603 -0.478156 -1.257802 \n", "83 0.123047 -0.534006 -0.062328 0.499380 -0.611262 \n", "84 -0.239539 1.992326 0.198205 -1.463027 -0.505329 \n", "85 -0.903473 0.381607 -0.052080 1.359030 0.240198 \n", "86 1.368118 0.754042 -1.361790 0.214890 0.766670 \n", "87 0.604955 0.670609 0.728398 1.335929 -0.872750 \n", "88 0.542886 2.615181 0.908922 -0.670107 0.146299 \n", "89 -1.487691 -0.528628 -0.561362 0.459419 0.461485 \n", "90 0.377961 0.902158 0.017875 -0.106061 0.949775 \n", "91 0.038625 -0.964237 0.414514 -0.175222 -2.575418 \n", "92 -1.237672 -1.230211 -0.241843 -0.047562 0.347055 \n", "93 -0.078631 0.979513 -0.207132 -0.494727 -1.672523 \n", "94 -0.974969 -0.919455 0.155265 -1.340796 1.057030 \n", "95 -0.129480 0.218202 0.362546 -0.340090 -1.353757 \n", "96 -1.103348 0.647573 0.447371 -0.146771 0.779457 \n", "97 -1.292014 1.650376 0.437087 -0.692241 -1.832737 \n", "98 -0.572446 -1.292801 0.351857 -0.276844 0.174488 \n", "99 0.736216 0.776332 -0.152795 1.248565 0.223998 \n", "\n", "[100 rows x 100 columns]" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 新しいデータを確認。\n", "# 左の4列は元々のデータにあった数字なので、正しい分類に使える数字のはず。\n", "# 右の96列はランダムなノイズなので、正しい分類には使えない数字のはず。\n", "pd.DataFrame(data2)" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# データをシャッフル\n", "p = range(len(data2))\n", "random.seed(0)\n", "random.shuffle(p)\n", "shuffled_sample_names = list(np.array(sample_names)[p])\n", "shuffled_data = np.array(data2)[p]\n", "shuffled_target = list(np.array(target2)[p])" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# データを分割。test_size=0.8 は、学習:テスト のデータ量比が 2:8 であることを指す。\n", "data_train, data_test, target_train, target_test, sample_names_train, sample_names_test = train_test_split(\n", " data2, target2, sample_names, test_size=0.8, random_state=0)" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Linear SVM で学習・予測\n", "classifier = svm.SVC(kernel='linear', probability=True)\n", "probas = classifier.fit(data_train, target_train).predict_proba(data_test)\n", "pred = classifier.fit(data_train, target_train).predict(data_test)" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "AUPR score: 0.69\n" ] } ], "source": [ "# AUPRスコアを出す\n", "precision, recall, thresholds = precision_recall_curve(target_test, probas[:, 1])\n", "area = auc(recall, precision)\n", "print \"AUPR score: %0.2f\" % area" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "AUC curve : 0.689806\n" ] } ], "source": [ "# AUCスコアを出す\n", "fpr, tpr, thresholds = roc_curve(target_test, probas[:, 1])\n", "roc_auc = auc(fpr, tpr)\n", "print \"AUC curve : %f\" % roc_auc" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nos+ee+45nnrqKdavX0/Lli259NJLqV27NgsXLuTzzz/nnXfeKTpxv/zyy9xzzz0899xzrFu3jrFj\nx9KoUaPdtnPjjTdy00038f3337NgwQIuvPDConmxRTD9+/enZcuWrFy5kpdffpk77riDvLy8ovmv\nv/46gwYN4vvvv+ecc87h2muvTWg/t27dyjPPPEOjRo1o2LAhAJ9//jlXXnklTz75JGvXrmXIkCH8\n+Mc/Ztu2bezcuZN+/fpx2GGHUVBQwLJlyxgwYAAQkusdd9zBypUrmT17NkuXLmXYsGEJH/NCkyZN\n4tJLL+WBBx7g+++/Jz8/n9atW5e6fMmiqvz8fObOncu4ceMYOHAgo0aNKpo3a9YsCgoK6NevH5s2\nbaJ3794MHjyY1atXM3r0aK699lrmzJlT4ZhFMs7dq8UUQt1daZ/vusyeT8lq3bq1169f3xs2bOit\nW7f26667zjdv3uzu7rm5uT506NCiZb/55huvXbt20Xx39xdeeMFPP/10d3c/88wz/aGHHip1O++9\n9567u5922mk+bNgwX7169S7LfP31156VleU7duzwgoIC33fffX3jxo1F82+//Xa//PLL3d192LBh\nfsYZZxTNmzVrltepU6fU/Rw2bJjXqlXLGzZs6Pvss483btzYP/jgg6L5v/jFL/zuu+/e5TtHHXWU\n5+fn+yeffOIHH3yw79ixo9T1F3rttde8S5cucfd72LBhfvHFF8f93pAhQ/yXv/xl3Hmx6yi5nsJj\n9vXXXxfNX79+vderV88LCgrc3f3OO+/0K6+80t3dX3zxRT/11FN32/Y999wTd9uJ/H5F9kT0G0vq\nvFsj7iBSkSL2xJgxY1i7di2LFi3i4Ycfpnbt2kXzWrRoUfR68eLFbNu2jSZNmpCTk0PDhg35+c9/\nzrfffguEO5A2bdqUu70RI0Ywd+5cjj76aE488UTefPPN3ZZZsWIFOTk51KlTp+izVq1asWzZsqL3\nhx56aNHrOnXqsHnzZnbu3MmoUaOoX78+2dnZnH322UXL9O/fn7Vr17Jq1So6dOjAlClTdtm3Bx54\ngJycnKJ9W7p0KcuXL2fJkiW0atWKrKzdf46rVq1i4MCBNG/enAMPPLDoyryiEj12pWnevHnR63r1\n6nHWWWcxevRoAF544QUGDx4MhP2cOHHiLvs5atQoVq5cmfS2RTKl2nfWVx14GRkmtiijRYsW7L//\n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\nAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# PR curve を描く\n", "pl.clf()\n", "pl.plot(recall, precision, label='Precision-Recall curve')\n", "pl.xlabel('Recall')\n", "pl.ylabel('Precision')\n", "pl.ylim([0.0, 1.05])\n", "pl.xlim([0.0, 1.0])\n", "pl.title('Precision-Recall curve: AUPR=%0.2f' % area)\n", "pl.legend(loc=\"lower left\")\n", "pl.show()" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\neHCmQxIROYiOINKo6qhhyJAhFBQUaAwlEclqOoJIo/LycqZPn67rGkQkJ6iKSUSkCVMVk4iIJJ0S\nRAq4O7Nnz+aLL77IdCgiIglTH0SSVVUoFRUV8bWvfY2CgoJMhyQikhAdQSRJdIXSu+++q+SQZr17\n98bMNGlqllPvFNyLXp3USVBeXs748eMpKiri8ccfV4VShpgZufJ5Fkm22j7/4XKNxZTJt/LUU09x\n4YUXauTVDFKCkOZMCSKLE4RknhKENGepSBDqgxARkZiUIBqguLiYcePGUVRUlOlQRERSTgkiDpEV\nSr169aJv376ZDkkk5xUVFXHKKadkOoycUFxczMCBA9m/f39at6sEUY/i4mLGjBnDPffcw5w5c/jF\nL36hjmhJSO/evWnfvj2dOnWiR48eXH755Xz55Zc12ixevJhzzjmHTp06kZeXx/nnn8+aNWtqtCkr\nK+NHP/oRvXr1olOnThx77LHcdNNNlJSUpPPtNNpdd93FLbfckukwGqW8vJwrrriCww47jB49evA/\n//M/dbbftm0bl156KZ07d6ZLly5cdtll1c99+umnXHDBBXTp0oVjjjmGP/zhD9XPHXHEEZx99tk1\nlqWFu+fEFIRau3qeTkh5ebkXFBT4rbfe6nv27En+BiSp6vuMZFrv3r3973//u7u7b9261YcOHep3\n3nln9fOLFy/2Dh06+IMPPui7d+/20tJSv/POOz0vL88//PBDdw8+kyeffLJ/85vf9LVr17q7++ef\nf+4/+9nP/IUXXkhZ7AcOHEjq+rZs2eJdunTxffv2ZUU8ibrtttv8zDPP9J07d/qaNWu8W7duPm/e\nvFrbjxgxwv/93//dy8rK/MCBA758+fLq58466yy/6aabvKKiwlesWOH5+fm+YMGC6ucXLVrkgwcP\nrnXdtX3+w+WJfe8m+sJ0T5lIEO7uJSUlqVmxJF0uJIj58+dXz99yyy3+7W9/u3p+xIgRfv311x/0\nutGjR/vEiRPd3f2RRx7xbt26+Zdffhn3dletWuUjR470/Px879atm993333u7j5p0iT/yU9+Ut1u\nwYIFfvTRR9eId8qUKT5kyBBv27atT5kyxb/73e/WWPcNN9zgN954o7u779y507///e979+7d/eij\nj/Y777zTKysrY8Y0bdo0HzlyZI1lv/jFL7xfv37esWNHHzRokM+ePbv6ualTp/rpp5/uP/7xj71L\n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\nDyxJ6LRkogE1AAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# ROC curve を描く\n", "pl.clf()\n", "pl.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % roc_auc)\n", "pl.plot([0, 1], [0, 1], 'k--')\n", "pl.xlim([0.0, 1.0])\n", "pl.ylim([0.0, 1.0])\n", "pl.xlabel('False Positive Rate')\n", "pl.ylabel('True Positive Rate')\n", "pl.title('ROC curve: AUC=%0.2f' % roc_auc)\n", "pl.legend(loc=\"lower right\")\n", "pl.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "ということで、分類に寄与しない余計な成分が増えると、分類が難しくなることが分かりましたね。\n", "### グリッドサーチによるパラメータ最適化\n", "グリッドサーチとは、機械学習モデルのハイパーパラメータをいろいろ変えながら予測と評価を繰り返し、最適なものを探す手法。" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# グリッドサーチを行うためのパラメーター\n", "parameters = [{'kernel': ['rbf'], 'gamma': [1e-3, 1e-4],\n", " 'C': [1, 10, 100, 1000]},\n", " {'kernel': ['linear'], 'C': [1, 10, 100, 1000]}]" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SVC(C=10, cache_size=200, class_weight=None, coef0=0.0,\n", " decision_function_shape=None, degree=3, gamma=0.001, kernel='rbf',\n", " max_iter=-1, probability=False, random_state=None, shrinking=True,\n", " tol=0.001, verbose=False)\n" ] } ], "source": [ "# ベストなパラメーターを探し当てるためのグリッドサーチ\n", "clf = grid_search.GridSearchCV(SVC(C=1), parameters, cv=5, n_jobs=-1)\n", "clf.fit(data_train, target_train)\n", "print(clf.best_estimator_)" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "==================================================\n", "accuracy\n", "==================================================\n", "\n", "+ ベストパラメータ:\n", "\n", "SVC(C=10, cache_size=200, class_weight=None, coef0=0.0,\n", " decision_function_shape=None, degree=3, gamma=0.001, kernel='rbf',\n", " max_iter=-1, probability=False, random_state=None, shrinking=True,\n", " tol=0.001, verbose=False)\n", "\n", "+ トレーニングデータでCVした時の平均スコア:\n", "\n", "0.550 (+/- 0.034) for {'kernel': 'rbf', 'C': 1, 'gamma': 0.001}\n", "0.550 (+/- 0.034) for {'kernel': 'rbf', 'C': 1, 'gamma': 0.0001}\n", "0.700 (+/- 0.096) for {'kernel': 'rbf', 'C': 10, 'gamma': 0.001}\n", "0.550 (+/- 0.034) for {'kernel': 'rbf', 'C': 10, 'gamma': 0.0001}\n", "0.700 (+/- 0.096) for {'kernel': 'rbf', 'C': 100, 'gamma': 0.001}\n", "0.700 (+/- 0.096) for {'kernel': 'rbf', 'C': 100, 'gamma': 0.0001}\n", "0.700 (+/- 0.096) for {'kernel': 'rbf', 'C': 1000, 'gamma': 0.001}\n", "0.700 (+/- 0.096) for {'kernel': 'rbf', 'C': 1000, 'gamma': 0.0001}\n", "0.700 (+/- 0.096) for {'kernel': 'linear', 'C': 1}\n", "0.700 (+/- 0.096) for {'kernel': 'linear', 'C': 10}\n", "0.700 (+/- 0.096) for {'kernel': 'linear', 'C': 100}\n", "0.700 (+/- 0.096) for {'kernel': 'linear', 'C': 1000}\n", "\n", "+ テストデータでの識別結果:\n", "\n", " precision recall f1-score support\n", "\n", " 0 0.66 0.66 0.66 41\n", " 1 0.64 0.64 0.64 39\n", "\n", "avg / total 0.65 0.65 0.65 80\n", "\n", "\n", "==================================================\n", "precision\n", "==================================================\n", "\n", "+ ベストパラメータ:\n", "\n", "SVC(C=10, cache_size=200, class_weight=None, coef0=0.0,\n", " decision_function_shape=None, degree=3, gamma=0.001, kernel='rbf',\n", " max_iter=-1, probability=False, random_state=None, shrinking=True,\n", " tol=0.001, verbose=False)\n", "\n", "+ トレーニングデータでCVした時の平均スコア:\n", "\n", "0.550 (+/- 0.034) for {'kernel': 'rbf', 'C': 1, 'gamma': 0.001}\n", "0.550 (+/- 0.034) for {'kernel': 'rbf', 'C': 1, 'gamma': 0.0001}\n", "0.808 (+/- 0.105) for {'kernel': 'rbf', 'C': 10, 'gamma': 0.001}\n", "0.550 (+/- 0.034) for {'kernel': 'rbf', 'C': 10, 'gamma': 0.0001}\n", "0.808 (+/- 0.105) for {'kernel': 'rbf', 'C': 100, 'gamma': 0.001}\n", "0.808 (+/- 0.105) for {'kernel': 'rbf', 'C': 100, 'gamma': 0.0001}\n", "0.808 (+/- 0.105) for {'kernel': 'rbf', 'C': 1000, 'gamma': 0.001}\n", "0.808 (+/- 0.105) for {'kernel': 'rbf', 'C': 1000, 'gamma': 0.0001}\n", "0.808 (+/- 0.105) for {'kernel': 'linear', 'C': 1}\n", "0.808 (+/- 0.105) for {'kernel': 'linear', 'C': 10}\n", "0.808 (+/- 0.105) for {'kernel': 'linear', 'C': 100}\n", "0.808 (+/- 0.105) for {'kernel': 'linear', 'C': 1000}\n", "\n", "+ テストデータでの識別結果:\n", "\n", " precision recall f1-score support\n", "\n", " 0 0.66 0.66 0.66 41\n", " 1 0.64 0.64 0.64 39\n", "\n", "avg / total 0.65 0.65 0.65 80\n", "\n", "\n", "==================================================\n", "recall\n", "==================================================\n", "\n", "+ ベストパラメータ:\n", "\n", "SVC(C=1, cache_size=200, class_weight=None, coef0=0.0,\n", " decision_function_shape=None, degree=3, gamma=0.001, kernel='rbf',\n", " max_iter=-1, probability=False, random_state=None, shrinking=True,\n", " tol=0.001, verbose=False)\n", "\n", "+ トレーニングデータでCVした時の平均スコア:\n", "\n", "1.000 (+/- 0.000) for {'kernel': 'rbf', 'C': 1, 'gamma': 0.001}\n", "1.000 (+/- 0.000) for {'kernel': 'rbf', 'C': 1, 'gamma': 0.0001}\n", "0.717 (+/- 0.113) for {'kernel': 'rbf', 'C': 10, 'gamma': 0.001}\n", "1.000 (+/- 0.000) for {'kernel': 'rbf', 'C': 10, 'gamma': 0.0001}\n", "0.717 (+/- 0.113) for {'kernel': 'rbf', 'C': 100, 'gamma': 0.001}\n", "0.717 (+/- 0.113) for {'kernel': 'rbf', 'C': 100, 'gamma': 0.0001}\n", "0.717 (+/- 0.113) for {'kernel': 'rbf', 'C': 1000, 'gamma': 0.001}\n", "0.717 (+/- 0.113) for {'kernel': 'rbf', 'C': 1000, 'gamma': 0.0001}\n", "0.717 (+/- 0.113) for {'kernel': 'linear', 'C': 1}\n", "0.717 (+/- 0.113) for {'kernel': 'linear', 'C': 10}\n", "0.717 (+/- 0.113) for {'kernel': 'linear', 'C': 100}\n", "0.717 (+/- 0.113) for {'kernel': 'linear', 'C': 1000}\n", "\n", "+ テストデータでの識別結果:\n", "\n", " precision recall f1-score support\n", "\n", " 0 0.00 0.00 0.00 41\n", " 1 0.49 1.00 0.66 39\n", "\n", "avg / total 0.24 0.49 0.32 80\n", "\n" ] } ], "source": [ "# 結果発表\n", "scores = ['accuracy', 'precision', 'recall']\n", "\n", "for score in scores:\n", " print '\\n' + '='*50\n", " print score\n", " print '='*50\n", "\n", " clf = grid_search.GridSearchCV(SVC(C=1), parameters, cv=5, scoring=score, n_jobs=-1)\n", " clf.fit(data_train, target_train)\n", "\n", " print \"\\n+ ベストパラメータ:\\n\"\n", " print clf.best_estimator_\n", "\n", " print\"\\n+ トレーニングデータでCVした時の平均スコア:\\n\"\n", " for params, mean_score, all_scores in clf.grid_scores_:\n", " print \"{:.3f} (+/- {:.3f}) for {}\".format(mean_score, all_scores.std() / 2, params)\n", "\n", " print \"\\n+ テストデータでの識別結果:\\n\"\n", " target_true, target_pred = target_test, clf.predict(data_test)\n", " print classification_report(target_true, target_pred)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "----------\n", "## 課題\n", "新しいノートを開いて、以下の課題を解いてください。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* __課題1__:下記リンクのデータを用い、図1のような Scatter Matrix を描いてください。ただしこのとき、真札を青色、偽札を赤色にしてプロットすること。\n", " * https://raw.githubusercontent.com/maskot1977/ipython_notebook/master/toydata/sbnote_dataJt.txt\n", " \n", " ここでは、以下の列を使います。\n", " * 'Note' : スイスフラン紙幣のID番号\n", " * 'length' : 横幅長\n", " * 'left': 左縦幅長\n", " * 'right': 右縦幅長\n", " * 'bottom': 下枠内長\n", " * 'top': 上枠内長\n", " * 'diagonal': 対角長\n", " * 'class': 0 = 真札、1= 偽札" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* __課題2__: 上記のデータを使って学習し、サポートベクトルマシンを使って真札と偽札を区別する予測モデルを構築し、その性能を正解率 (Accuracy) で評価してください。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "以上の結果を [自分の氏名].ipynb ファイルとして保存し、指定したアドレスまでメールしてください。メールタイトルは「総合実験4日目」とし、メール本文に学籍番号と氏名を明記のこと。" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "お疲れ様でした。総合実験はこれで終了ですが、IPython Notebook (Jupyter Notebook) で出来ることは他にもたくさんあります。もし興味が湧いてきたら、自分のパソコンに Jupyter Notebook (IPython Notebook) をインストールして使ってみてください。\n", "* 教材はこちらに随時追加予定です。→ [IPython Notebook](https://sites.google.com/site/masaakikotera/8-python/8-2-ipython-notebook)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.12" } }, "nbformat": 4, "nbformat_minor": 0 }