SlideShare a Scribd company logo
1 of 25
Download to read offline
1
Copyright (C) 2015 National Institute of Informatics, All rights reserved.
Introduction to Machine Learning Theory
for Software Engineers
ソフトウェアエンジニアのための
「機械学習理論」入門
ハンズオン演習ガイド
中井悦司 / Etsuji Nakai
Senior Solution Architect
and Cloud Evangelist
Red Hat K.K.
ver1.7 2015/09/01
Copyright (C) 2015 National Institute of Informatics, All rights reserved.
2
ソフトウェアエンジニアのための「機械学習理論」入門
目次
■ ハンズオン環境の利用方法
■ データ分析用のPythonライブラリ
■ 演習手順
- 演習1:最小二乗法による回帰分析
- 演習2:最尤推定による回帰分析
- 演習3:パーセプトロンによる二項分類
- 演習4:ロジスティック回帰による二項分類
- 演習5:ロジスティック回帰のROC曲線
- 演習6:k平均法による画像変換
- 演習7:混合ベルヌーイ分布による手書き文字分類
Copyright (C) 2015 National Institute of Informatics, All rights reserved.
3
ソフトウェアエンジニアのための「機械学習理論」入門
ハンズオン環境の利用方法
Copyright (C) 2015 National Institute of Informatics, All rights reserved.
4
ソフトウェアエンジニアのための「機械学習理論」入門
ハンズオン環境について
■ Linux(CentOS6)がインストールされたサーバー上にハンズオンユーザー「user01」
〜「user15」が作成されています。
- それぞれのユーザーに個別のVNCデスクトップが用意されており、VNC Viewerから
デスクトップ接続して利用します。
- 接続先IPアドレスとパスワードは、インストラクターから説明があります。
- コマンド端末は、画面左上の「アプリケーション」メニューから「システムツール」
→「端末」を選択します。
■ 各ユーザーのホームディレクトリに「Canopy Express」をインストールします。
- 本環境では各ユーザーのホームディレクトリにインストーラが用意されています。
- Webからダウンロードする場合は、下記のサイトを参照してください。
●
https://www.enthought.com/products/canopy/
Copyright (C) 2015 National Institute of Informatics, All rights reserved.
5
ソフトウェアエンジニアのための「機械学習理論」入門
Canopy Expressのインストールと初期設定
■ ホームディレクトリにあるインストーラを実行します。
$ cd
$ bash canopy-1.5.4-rh5-64.sh
Welcome to the Canopy 1.5.4 installer!
To continue the installation, you must review and approve the license term
agreement.
Press Enter to continue
>>>
...(中略)...
Do you approve the license terms? [yes|no]
[no] >>> yes
Canopy will be installed to this location:
/home/user01/Canopy
* Press Enter to accept this location
* Press CTRL-C to abort
* or specify an alternate location. Please ensure that your location
contains only ASCII letters, numbers, and the following punctuation
chars: '.', '_', '-'
[/home/user01/Canopy] >>>
...(中略)...
Thank you for installing Canopy!
[Enter]を押すとライセンスが表示されるので
スペースキーで読み進めます。
「yes」を入力
[Enter]を押す
Copyright (C) 2015 National Institute of Informatics, All rights reserved.
6
ソフトウェアエンジニアのための「機械学習理論」入門
Canopy Expressのインストールと初期設定
■ Canopyを起動して環境設定を行います。
$ ~/Canopy/canopy
「Continue」をクリック
「Start using Canopy」をクリック
このウィンドウは閉じて終了します
Copyright (C) 2015 National Institute of Informatics, All rights reserved.
7
ソフトウェアエンジニアのための「機械学習理論」入門
Canopy Expressのインストールと初期設定
■ サンプルコードをダウンロードして、カスタマイズスクリプトを実行します。
- これは、本環境に固有のカスタマイズを行っています。
mkdir -p ~/.ipython/profile_default/startup
cat <<EOF >~/.ipython/profile_default/startup/00-setup.py
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from pandas import Series, DataFrame
EOF
echo "alias ipython='ipython --pylab'" >> ~/.bashrc
. ~/.bashrc
echo Done.
$ cd
$ wget https://github.com/enakai00/ml4se/raw/master/ml4se.zip
$ unzip ml4se.zip
$ . ml4se/config_centos.sh
(参考:config_centos.shの内容)
Copyright (C) 2015 National Institute of Informatics, All rights reserved.
8
ソフトウェアエンジニアのための「機械学習理論」入門
IPythonの使い方
■ 本演習は、IPython(Pythonの対話的操作環境)から行います。
■ IPythonのシェルからは、「!<コマンド>」でOSコマンドが実行できます。
- 「ls」「cd」「cat」などは、「!」を付けなくても実行できます。スクリプトの編集
は、「!vi <ファイル名>」でviエディタを起動します。
- 他のウィンドウでエディタを起動して編集しても構いません。GUIのエディタを使い
たい場合は、デスクトップからフォルダー「ホーム」→「ml4se」→「scripts」を
開いて、中のファイルを右クリック→「geditで開く」を選択します。
$ ipython
Python 2.7.6 | 64-bit | (default, Sep 15 2014, 17:36:10)
Type "copyright", "credits" or "license" for more information.
IPython 2.3.1 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]:
In [1]: ls ml4se
LICENSE README.md config_centos.sh config_mac.sh config_win.bat scripts/
In [2]: cd ~/ml4se/scripts
/home/user01/ml4se/scripts
In [3]: !vi 01-square_error.py
演習用のスクリプトはホームディレクトリの
「ml4se/scripts」ディレクトリー内にあります。
Copyright (C) 2015 National Institute of Informatics, All rights reserved.
9
ソフトウェアエンジニアのための「機械学習理論」入門
IPythonの使い方
■ スクリプトの実行は、「%run」コマンドで行います。
■ その他には、ファイル名は [Tab] キーで補完できます。また、[↑][↓] キーで過去の
コマンド履歴の呼び出しが可能です。
In [4]: %run 01-square_error.py
Table of the coefficients
M=0 M=1 M=3 M=9
0 -0.012133 0.737922 0.005026 0.021570
1 NaN -1.500112 9.633393 -121.926645
2 NaN NaN -28.282723 2897.187668
3 NaN NaN 18.422900 -25036.071571
4 NaN NaN NaN 110826.637881
5 NaN NaN NaN -282565.729927
6 NaN NaN NaN 431648.816158
7 NaN NaN NaN -390194.283125
8 NaN NaN NaN 192486.163220
9 NaN NaN NaN -39940.969290
In [5]: exit
In [5]: %paste
■ クリップボードの内容をペーストして実行する
際は、「%paste」コマンドを実行します。
■ IPythonを終了する際は「exit」を入力します。
Copyright (C) 2015 National Institute of Informatics, All rights reserved.
10
ソフトウェアエンジニアのための「機械学習理論」入門
データ分析用のPythonライブラリ
Copyright (C) 2015 National Institute of Informatics, All rights reserved.
11
ソフトウェアエンジニアのための「機械学習理論」入門
NumPy, pandas, matplotlib について
■ 本演習で使用するPythonスクリプトでは、主に下記のライブラリを使用しています。
- NumPy : ベクトルや行列の演算の他、主要な数学関数や乱数機能を提供します。
- pandas : Rに類似のデータフレーム(スプレッドシートのように、行/列に属性が付
いたデータ構造)を提供します。
- matplotlib : グラフを描画します。
■ これらの詳細は下記の書籍が参考になります。
- Python for Data Analysis(Wes McKinney)
- 邦題は「Pythonによるデータ分析入門」
Copyright (C) 2015 National Institute of Informatics, All rights reserved.
12
ソフトウェアエンジニアのための「機械学習理論」入門
NumPyの簡単な利用例
In [1]: import numpy as np
In [2]: a = np.array([[0,1,2],[3,4,5],[6,7,8]])
In [3]: b = np.array([[1,1,1],[2,2,2],[3,3,3]])
In [4]: a
Out[4]:
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
In [5]: b
Out[5]:
array([[1, 1, 1],
[2, 2, 2],
[3, 3, 3]])
In [4]: a.T
Out[4]:
array([[0, 3, 6],
[1, 4, 7],
[2, 5, 8]])
In [7]: a*2
Out[7]:
array([[ 0, 2, 4],
[ 6, 8, 10],
[12, 14, 16]])
In [8]: a+b
Out[8]:
array([[ 1, 2, 3],
[ 5, 6, 7],
[ 9, 10, 11]])
In [6]: np.dot(a,b)
Out[6]:
array([[ 8, 8, 8],
[26, 26, 26],
[44, 44, 44]])
In [15]: np.append(a,b,axis=0)
Out[15]:
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
[1, 1, 1],
[2, 2, 2],
[3, 3, 3]])
In [16]: np.append(a,b,axis=1)
Out[16]:
array([[0, 1, 2, 1, 1, 1],
[3, 4, 5, 2, 2, 2],
[6, 7, 8, 3, 3, 3]])
■ 次は、NumPyで行列の計算をする例です。
転置行列
スカラーとの演算は
各成分に適用
行列としての積は、
np.dot()関数を使用
行列成分の結合は、結合の
方向を axis オプションで
指定(0:縦、1:横)
Copyright (C) 2015 National Institute of Informatics, All rights reserved.
13
ソフトウェアエンジニアのための「機械学習理論」入門
In [1]: df = DataFrame([[0,1],[2,3],[4,5]], columns=('x','y'))
In [2]: df
Out[2]:
x y
0 0 1
1 2 3
2 4 5
In [3]: df['x']
Out[3]:
0 0
1 2
2 4
Name: x, dtype: int64
In [4]: df.x
Out[4]:
0 0
1 2
2 4
Name: x, dtype: int64
In [5]: df[0:2]
Out[5]:
x y
0 0 1
1 2 3
pandasの簡単な利用例
■ 次は、pandasのデータフレームを使用する例です。
columns
index
columnsの取り出し
(Seriesオブジェクト)
スライス記法は
行の取り出しになる
In [6]: for index, line in df.iterrows():
....: print "index=%d" % index
....: print line
....:
index=0
x 0
y 1
Name: 0, dtype: int64
index=1
x 2
y 3
Name: 1, dtype: int64
index=2
x 4
y 5
Name: 2, dtype: int64
行単位の処理
Copyright (C) 2015 National Institute of Informatics, All rights reserved.
14
ソフトウェアエンジニアのための「機械学習理論」入門
matplotlibの簡単な利用例
■ 次は、matplotlibでグラフを描画する例です。
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
subplot = fig.add_subplot(2,1,1)
linex = np.arange(0,1.01,0.01)
liney = np.sin(2*np.pi*linex)
subplot.plot(linex, liney)
linex = np.arange(0,1,0.01)
subplot = fig.add_subplot(2,1,2)
liney = np.cos(2*np.pi*linex)
subplot.plot(linex, liney)
fig.show()
描画ウィンドウの用意
描画ウィンドウ内の
「縦2×横1」個の
描画枠の1番目の枠
描画ウィンドウ内の
「縦2×横1」個の
描画枠の2番目の枠
描画ウィンドウを実際に表示
Copyright (C) 2015 National Institute of Informatics, All rights reserved.
15
ソフトウェアエンジニアのための「機械学習理論」入門
演習手順
Copyright (C) 2015 National Institute of Informatics, All rights reserved.
16
ソフトウェアエンジニアのための「機械学習理論」入門
演習1:最小二乗法による回帰分析
■ スクリプト「02-square_error.py」を実行します。
- 最小二乗法による回帰分析を実施します。
■ 具体的な内容は、下記のBlogを参照してください。
- PRML 第1章の多項式フィッティングの例を再現
- http://enakai00.hatenablog.com/entry/2015/04/05/002239
■ スクリプトの下記の値を変えると、データ数(x軸上の観測点の数)を変更できます。
- データ数によって結果がどのように変わるか観察してください。
In [1]: %run 02-square_error.py
#------------#
# Parameters #
#------------#
N=10 # サンプルを取得する位置 x の個数
Copyright (C) 2015 National Institute of Informatics, All rights reserved.
17
ソフトウェアエンジニアのための「機械学習理論」入門
演習2:最尤推定による回帰分析
■ スクリプト「03-maximum_likelihood.py」「03-ml_gauss.py」を実行します。
- 最尤推定による回帰分析と最大ログ尤度の計算、および、最尤推定による正規分布
の推定を行います。
■ 具体的な内容は、下記のBlogを参照してください。
- PRML 第1章の「最尤推定によるパラメータフィッティング」の解説
- http://enakai00.hatenablog.com/entry/2015/04/05/220817
■ 「03-loglikelihood.py」の下記の値を変えると、データ数を変更できます。
- データ数によって結果がどのように変わるか観察してください。
■ 「03-ml_gauss.py」を何度か実行して、得られたサンプルによって推定がどのように
変わるか観察してください。
In [1]: %run 03-maximum_likelihood.py
In [2]: %run 03-ml_gauss.py
#------------#
# Parameters #
#------------#
N=10 # サンプルを取得する位置 x の個数
Copyright (C) 2015 National Institute of Informatics, All rights reserved.
18
ソフトウェアエンジニアのための「機械学習理論」入門
演習3:パーセプトロンによる二項分類
■ スクリプト「04-perceptron.py」を実行します。
- パーセプトロンによる二項分類を実施します。
■ 具体的な内容は、下記のBlogを参照してください。
- Perceptronのパラメータ変化を見るコード
- http://enakai00.hatenablog.com/entry/2015/04/12/201156
■ 分類用のデータは、2種類の2次元正規分布を用いてランダムに生成しています。下記の
パラメータでデータ数、中心座標、分散を変更できます。
- これらのパラメータを変更して、実行結果がどのように変わるか観察してください。
In [1]: %run 04-perceptron.py
N1 = 30 # クラス t=1 のデータ数
Mu1 = [0,0] # クラス t=1 の中心座標
N2 = 20 # クラス t=-1 のデータ数
Mu2 = [15,10] # クラス t=-1 の中心座標
Variances = [20,25] # 両クラス共通の分散(2種類の分散で計算を実施)
Copyright (C) 2015 National Institute of Informatics, All rights reserved.
19
ソフトウェアエンジニアのための「機械学習理論」入門
演習4:ロジスティック回帰による二項分類
■ スクリプト「05-logstic_vs_perceptron.py」を実行します。
- ロジスティック回帰とパーセプトロンによる二項分類の結果を比較します。
■ 具体的な内容は、下記のBlogを参照してください。
- Logistic RegressionとPerceptronを比較するコード
- http://enakai00.hatenablog.com/entry/2015/04/11/235712
■ 何度かスクリプトを実行して、ロジスティック回帰とパーセプトロンの結果の違いを比
較してください。
In [1]: %run 05-logstic_vs_perceptron.py
Copyright (C) 2015 National Institute of Informatics, All rights reserved.
20
ソフトウェアエンジニアのための「機械学習理論」入門
演習5:ロジスティック回帰のROC曲線
■ スクリプト「05-roc_curve.py」を実行します。
- ロジスティック回帰を実施して、その結果をROC曲線で表示します。
■ 具体的な内容は、下記のBlogを参照してください。
- ロジスティック回帰のROC曲線を描くコード
- http://enakai00.hatenablog.com/entry/2015/04/12/104837
■ 下記のパラメータでトレーニングセットの分散を変更できます。
- このパラメータを変更して、ROC曲線がどのように変わるか観察してください。
In [1]: %run 05-roc_curve.py
#------------#
# Parameters #
#------------#
Variances = [50,150] # 両クラス共通の分散(2種類の分散で計算を実施)
Copyright (C) 2015 National Institute of Informatics, All rights reserved.
21
ソフトウェアエンジニアのための「機械学習理論」入門
演習6:k平均法による画像変換
■ スクリプト「06-k_means.py」を実行します。
- 画像ファイル「photo.jpg」を読み込んで、k平均法で減色処理をしたファイル
「output*.bmp」(*は色数)を出力します。
■ 具体的な内容は、下記のBlogを参照してください。
- k-means法で画像を減色するサンプルコード
- http://enakai00.hatenablog.com/entry/2015/04/14/181305
■ 下記のパラメータで減色後の色数を変更できます。
- このパラメータを変更して、さまざまな減色処理を試してください。
- 自分の好きな画像ファイルを用いて、減色処理を行ってみてください。
In [1]: %run 06-k_means.py
#------------#
# Parameters #
#------------#
Colors = [2, 3, 5, 16] # 減色後の色数(任意の個数の色数を指定できます)
Copyright (C) 2015 National Institute of Informatics, All rights reserved.
22
ソフトウェアエンジニアのための「機械学習理論」入門
演習7:混合ベルヌーイ分布による手書き文字分類
■ スクリプト「07-prep_data.py」を実行して、トレーニングセット用のデータファイル
「sample-images.txt」を用意します。
- データファイル「sample-images.txt」の他に、サンプルとして、用意したデータの
先頭10文字が可読性のある形式で「samples.txt」に書きだされます。
■ 下記のパラメータで抽出文字の種類と合計の文字数を変更できます。
In [1]: %run 07-prep_data.py
#------------#
# Parameters #
#------------#
Num = 600 # 抽出する文字数
Chars = '[036]' # 抽出する数字(任意の個数の数字を指定可能)
Copyright (C) 2015 National Institute of Informatics, All rights reserved.
23
ソフトウェアエンジニアのための「機械学習理論」入門
演習7(続き)
■ スクリプト「07-mix_em.py」を実行します。
- 混合ベルヌーイ分布を用いたEM法により、手書き文字の分類が行われます。
■ 具体的な内容は、下記のBlogを参照してください。
- EM法による手書き文字の分類
- http://enakai00.hatenablog.com/entry/2015/04/18/220126
■ 下記のパラメータで分類する文字数と反復回数を変更できます。
- さまざまな文字の組み合わせを異なる文字数で分類して、その結果を観察してくださ
い。分類結果は、ランダムに決まる初期値に依存するので、同じ条件でも複数回実行
すると、結果が変わることがあります。
In [1]: %run 07-mix_em.py
#------------#
# Parameters #
#------------#
K = 3 # 分類する文字数
N = 10 # 反復回数
Copyright (C) 2015 National Institute of Informatics, All rights reserved.
24
ソフトウェアエンジニアのための「機械学習理論」入門
メモとしてお使いください
25
Copyright (C) 2015 National Institute of Informatics, All rights reserved.

More Related Content

What's hot

分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4AdvancedTechNight
 
Cent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみようCent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみよう2bo 2bo
 
RHEL7/CentOS7 NetworkManager徹底入門
RHEL7/CentOS7 NetworkManager徹底入門RHEL7/CentOS7 NetworkManager徹底入門
RHEL7/CentOS7 NetworkManager徹底入門Etsuji Nakai
 
Pythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpPythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpYoshifumi Yamaguchi
 
Red Hat Enterprise Linux OpenStack Platform環境でのDocker活用テクニック
Red Hat Enterprise Linux OpenStack Platform環境でのDocker活用テクニックRed Hat Enterprise Linux OpenStack Platform環境でのDocker活用テクニック
Red Hat Enterprise Linux OpenStack Platform環境でのDocker活用テクニックEtsuji Nakai
 
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12Takanori Suzuki
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1Kotaro Noyama
 
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツールPyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツールAtsuo Ishimoto
 
eggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptoolseggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptoolsAtsushi Odagiri
 
python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集Hikaru Takemura
 
Ylug 110th kpatch code reading
Ylug 110th kpatch code readingYlug 110th kpatch code reading
Ylug 110th kpatch code readingMasami Hiramatsu
 
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクトOpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクトuchan_nos
 
RでGPU使ってみた
RでGPU使ってみたRでGPU使ってみた
RでGPU使ってみたKazuya Wada
 
Docker volume基礎/Project Longhorn紹介
Docker volume基礎/Project Longhorn紹介Docker volume基礎/Project Longhorn紹介
Docker volume基礎/Project Longhorn紹介Masahito Zembutsu
 
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよnpsg
 
Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010Hiro Yoshioka
 

What's hot (20)

分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4
 
Linux Namespaces
Linux NamespacesLinux Namespaces
Linux Namespaces
 
systemdを始めよう
systemdを始めようsystemdを始めよう
systemdを始めよう
 
Cent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみようCent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみよう
 
RHEL7/CentOS7 NetworkManager徹底入門
RHEL7/CentOS7 NetworkManager徹底入門RHEL7/CentOS7 NetworkManager徹底入門
RHEL7/CentOS7 NetworkManager徹底入門
 
Pythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpPythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjp
 
Red Hat Enterprise Linux OpenStack Platform環境でのDocker活用テクニック
Red Hat Enterprise Linux OpenStack Platform環境でのDocker活用テクニックRed Hat Enterprise Linux OpenStack Platform環境でのDocker活用テクニック
Red Hat Enterprise Linux OpenStack Platform環境でのDocker活用テクニック
 
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1
 
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツールPyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
 
eggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptoolseggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptools
 
python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集
 
Ylug 110th kpatch code reading
Ylug 110th kpatch code readingYlug 110th kpatch code reading
Ylug 110th kpatch code reading
 
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクトOpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
 
RでGPU使ってみた
RでGPU使ってみたRでGPU使ってみた
RでGPU使ってみた
 
Ansible2.0と実用例
Ansible2.0と実用例Ansible2.0と実用例
Ansible2.0と実用例
 
Docker volume基礎/Project Longhorn紹介
Docker volume基礎/Project Longhorn紹介Docker volume基礎/Project Longhorn紹介
Docker volume基礎/Project Longhorn紹介
 
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよ
 
Puppet入門
Puppet入門Puppet入門
Puppet入門
 
Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010
 

Similar to ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド

Statically detecting vulnerability under memory pressure using exhaustive search
Statically detecting vulnerability under memory pressure usingexhaustive searchStatically detecting vulnerability under memory pressure usingexhaustive search
Statically detecting vulnerability under memory pressure using exhaustive searchRuo Ando
 
Python 機械学習プログラミング データ分析演習編
Python 機械学習プログラミング データ分析演習編Python 機械学習プログラミング データ分析演習編
Python 機械学習プログラミング データ分析演習編Etsuji Nakai
 
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門Daiyu Hatakeyama
 
DAシンポジウム2019招待講演「深層学習モデルの高速なTraining/InferenceのためのHW/SW技術」 金子紘也hare
DAシンポジウム2019招待講演「深層学習モデルの高速なTraining/InferenceのためのHW/SW技術」 金子紘也hareDAシンポジウム2019招待講演「深層学習モデルの高速なTraining/InferenceのためのHW/SW技術」 金子紘也hare
DAシンポジウム2019招待講演「深層学習モデルの高速なTraining/InferenceのためのHW/SW技術」 金子紘也harePreferred Networks
 
機械学習プロジェクトにおける Cloud AI Platform の使い方 (2018-11-19)
機械学習プロジェクトにおける Cloud AI Platform の使い方 (2018-11-19)機械学習プロジェクトにおける Cloud AI Platform の使い方 (2018-11-19)
機械学習プロジェクトにおける Cloud AI Platform の使い方 (2018-11-19)Yaboo Oyabu
 
Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Kenta Oono
 
ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装Ryosuke Okuta
 
はじめての人のためのDeep Learning
はじめての人のためのDeep Learningはじめての人のためのDeep Learning
はじめての人のためのDeep LearningTadaichiro Nakano
 
[AI05] 目指せ、最先端 AI 技術の実活用!Deep Learning フレームワーク 「Microsoft Cognitive Toolkit 」...
[AI05] 目指せ、最先端 AI 技術の実活用!Deep Learning フレームワーク 「Microsoft Cognitive Toolkit 」...[AI05] 目指せ、最先端 AI 技術の実活用!Deep Learning フレームワーク 「Microsoft Cognitive Toolkit 」...
[AI05] 目指せ、最先端 AI 技術の実活用!Deep Learning フレームワーク 「Microsoft Cognitive Toolkit 」...de:code 2017
 
Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)Shintaro Fukushima
 
R超入門機械学習をはじめよう
R超入門機械学習をはじめようR超入門機械学習をはじめよう
R超入門機械学習をはじめよう幹雄 小川
 
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Etsuji Nakai
 
Azure Machine Learning Services 概要 - 2019年2月版
Azure Machine Learning Services 概要 - 2019年2月版Azure Machine Learning Services 概要 - 2019年2月版
Azure Machine Learning Services 概要 - 2019年2月版Daiyu Hatakeyama
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングYosuke Mizutani
 
運用構築技術者の為のPSプログラミング第1回
運用構築技術者の為のPSプログラミング第1回運用構築技術者の為のPSプログラミング第1回
運用構築技術者の為のPSプログラミング第1回Shigeharu Yamaoka
 
Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Pythonによる機械学習入門〜基礎からDeep Learningまで〜Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Pythonによる機械学習入門〜基礎からDeep Learningまで〜Yasutomo Kawanishi
 
科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要Toshihiro Kamishima
 
機械学習 / Deep Learning 大全 (5) Tool編
機械学習 / Deep Learning 大全 (5) Tool編機械学習 / Deep Learning 大全 (5) Tool編
機械学習 / Deep Learning 大全 (5) Tool編Daiyu Hatakeyama
 

Similar to ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド (20)

Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
Statically detecting vulnerability under memory pressure using exhaustive search
Statically detecting vulnerability under memory pressure usingexhaustive searchStatically detecting vulnerability under memory pressure usingexhaustive search
Statically detecting vulnerability under memory pressure using exhaustive search
 
Python 機械学習プログラミング データ分析演習編
Python 機械学習プログラミング データ分析演習編Python 機械学習プログラミング データ分析演習編
Python 機械学習プログラミング データ分析演習編
 
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
 
DAシンポジウム2019招待講演「深層学習モデルの高速なTraining/InferenceのためのHW/SW技術」 金子紘也hare
DAシンポジウム2019招待講演「深層学習モデルの高速なTraining/InferenceのためのHW/SW技術」 金子紘也hareDAシンポジウム2019招待講演「深層学習モデルの高速なTraining/InferenceのためのHW/SW技術」 金子紘也hare
DAシンポジウム2019招待講演「深層学習モデルの高速なTraining/InferenceのためのHW/SW技術」 金子紘也hare
 
機械学習プロジェクトにおける Cloud AI Platform の使い方 (2018-11-19)
機械学習プロジェクトにおける Cloud AI Platform の使い方 (2018-11-19)機械学習プロジェクトにおける Cloud AI Platform の使い方 (2018-11-19)
機械学習プロジェクトにおける Cloud AI Platform の使い方 (2018-11-19)
 
Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)
 
ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装
 
はじめての人のためのDeep Learning
はじめての人のためのDeep Learningはじめての人のためのDeep Learning
はじめての人のためのDeep Learning
 
[AI05] 目指せ、最先端 AI 技術の実活用!Deep Learning フレームワーク 「Microsoft Cognitive Toolkit 」...
[AI05] 目指せ、最先端 AI 技術の実活用!Deep Learning フレームワーク 「Microsoft Cognitive Toolkit 」...[AI05] 目指せ、最先端 AI 技術の実活用!Deep Learning フレームワーク 「Microsoft Cognitive Toolkit 」...
[AI05] 目指せ、最先端 AI 技術の実活用!Deep Learning フレームワーク 「Microsoft Cognitive Toolkit 」...
 
Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)
 
R超入門機械学習をはじめよう
R超入門機械学習をはじめようR超入門機械学習をはじめよう
R超入門機械学習をはじめよう
 
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
 
Azure Machine Learning Services 概要 - 2019年2月版
Azure Machine Learning Services 概要 - 2019年2月版Azure Machine Learning Services 概要 - 2019年2月版
Azure Machine Learning Services 概要 - 2019年2月版
 
CMSI計算科学技術特論C (2015) OpenMX とDFT②
CMSI計算科学技術特論C (2015) OpenMX とDFT②CMSI計算科学技術特論C (2015) OpenMX とDFT②
CMSI計算科学技術特論C (2015) OpenMX とDFT②
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
 
運用構築技術者の為のPSプログラミング第1回
運用構築技術者の為のPSプログラミング第1回運用構築技術者の為のPSプログラミング第1回
運用構築技術者の為のPSプログラミング第1回
 
Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Pythonによる機械学習入門〜基礎からDeep Learningまで〜Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Pythonによる機械学習入門〜基礎からDeep Learningまで〜
 
科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要
 
機械学習 / Deep Learning 大全 (5) Tool編
機械学習 / Deep Learning 大全 (5) Tool編機械学習 / Deep Learning 大全 (5) Tool編
機械学習 / Deep Learning 大全 (5) Tool編
 

More from Etsuji Nakai

「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考えるEtsuji Nakai
 
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実Etsuji Nakai
 
Introducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlowIntroducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlowEtsuji Nakai
 
Googleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービスGoogleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービスEtsuji Nakai
 
Spannerに関する技術メモ
Spannerに関する技術メモSpannerに関する技術メモ
Spannerに関する技術メモEtsuji Nakai
 
Googleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsGoogleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsEtsuji Nakai
 
A Brief History of My English Learning
A Brief History of My English LearningA Brief History of My English Learning
A Brief History of My English LearningEtsuji Nakai
 
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎Etsuji Nakai
 
TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門Etsuji Nakai
 
Using Kubernetes on Google Container Engine
Using Kubernetes on Google Container EngineUsing Kubernetes on Google Container Engine
Using Kubernetes on Google Container EngineEtsuji Nakai
 
Lecture note on PRML 8.2
Lecture note on PRML 8.2Lecture note on PRML 8.2
Lecture note on PRML 8.2Etsuji Nakai
 
Machine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application DevelopersMachine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application DevelopersEtsuji Nakai
 
Your first TensorFlow programming with Jupyter
Your first TensorFlow programming with JupyterYour first TensorFlow programming with Jupyter
Your first TensorFlow programming with JupyterEtsuji Nakai
 
Deep Q-Network for beginners
Deep Q-Network for beginnersDeep Q-Network for beginners
Deep Q-Network for beginnersEtsuji Nakai
 
TensorFlowで学ぶDQN
TensorFlowで学ぶDQNTensorFlowで学ぶDQN
TensorFlowで学ぶDQNEtsuji Nakai
 
DevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきかDevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきかEtsuji Nakai
 
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜Etsuji Nakai
 

More from Etsuji Nakai (20)

PRML11.2-11.3
PRML11.2-11.3PRML11.2-11.3
PRML11.2-11.3
 
「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える
 
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
 
Introducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlowIntroducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlow
 
Googleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービスGoogleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービス
 
Spannerに関する技術メモ
Spannerに関する技術メモSpannerに関する技術メモ
Spannerに関する技術メモ
 
Googleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsGoogleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOps
 
A Brief History of My English Learning
A Brief History of My English LearningA Brief History of My English Learning
A Brief History of My English Learning
 
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎
 
TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門
 
Using Kubernetes on Google Container Engine
Using Kubernetes on Google Container EngineUsing Kubernetes on Google Container Engine
Using Kubernetes on Google Container Engine
 
Lecture note on PRML 8.2
Lecture note on PRML 8.2Lecture note on PRML 8.2
Lecture note on PRML 8.2
 
Machine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application DevelopersMachine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application Developers
 
Your first TensorFlow programming with Jupyter
Your first TensorFlow programming with JupyterYour first TensorFlow programming with Jupyter
Your first TensorFlow programming with Jupyter
 
Deep Q-Network for beginners
Deep Q-Network for beginnersDeep Q-Network for beginners
Deep Q-Network for beginners
 
Life with jupyter
Life with jupyterLife with jupyter
Life with jupyter
 
TensorFlowで学ぶDQN
TensorFlowで学ぶDQNTensorFlowで学ぶDQN
TensorFlowで学ぶDQN
 
DevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきかDevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきか
 
PRML7.2
PRML7.2PRML7.2
PRML7.2
 
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
 

Recently uploaded

IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)ssuser539845
 
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦Sadao Tokuyama
 
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor arts yokohama
 
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfMatsushita Laboratory
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法ssuser370dd7
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見Shumpei Kishi
 
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-LoopへTetsuya Nihonmatsu
 
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdfAyachika Kitazaki
 
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~arts yokohama
 

Recently uploaded (12)

IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
 
2024 04 minnanoito
2024 04 minnanoito2024 04 minnanoito
2024 04 minnanoito
 
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
 
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
 
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
 
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
 
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
 
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
 
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
 
2024 03 CTEA
2024 03 CTEA2024 03 CTEA
2024 03 CTEA
 

ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド

  • 1. 1 Copyright (C) 2015 National Institute of Informatics, All rights reserved. Introduction to Machine Learning Theory for Software Engineers ソフトウェアエンジニアのための 「機械学習理論」入門 ハンズオン演習ガイド 中井悦司 / Etsuji Nakai Senior Solution Architect and Cloud Evangelist Red Hat K.K. ver1.7 2015/09/01
  • 2. Copyright (C) 2015 National Institute of Informatics, All rights reserved. 2 ソフトウェアエンジニアのための「機械学習理論」入門 目次 ■ ハンズオン環境の利用方法 ■ データ分析用のPythonライブラリ ■ 演習手順 - 演習1:最小二乗法による回帰分析 - 演習2:最尤推定による回帰分析 - 演習3:パーセプトロンによる二項分類 - 演習4:ロジスティック回帰による二項分類 - 演習5:ロジスティック回帰のROC曲線 - 演習6:k平均法による画像変換 - 演習7:混合ベルヌーイ分布による手書き文字分類
  • 3. Copyright (C) 2015 National Institute of Informatics, All rights reserved. 3 ソフトウェアエンジニアのための「機械学習理論」入門 ハンズオン環境の利用方法
  • 4. Copyright (C) 2015 National Institute of Informatics, All rights reserved. 4 ソフトウェアエンジニアのための「機械学習理論」入門 ハンズオン環境について ■ Linux(CentOS6)がインストールされたサーバー上にハンズオンユーザー「user01」 〜「user15」が作成されています。 - それぞれのユーザーに個別のVNCデスクトップが用意されており、VNC Viewerから デスクトップ接続して利用します。 - 接続先IPアドレスとパスワードは、インストラクターから説明があります。 - コマンド端末は、画面左上の「アプリケーション」メニューから「システムツール」 →「端末」を選択します。 ■ 各ユーザーのホームディレクトリに「Canopy Express」をインストールします。 - 本環境では各ユーザーのホームディレクトリにインストーラが用意されています。 - Webからダウンロードする場合は、下記のサイトを参照してください。 ● https://www.enthought.com/products/canopy/
  • 5. Copyright (C) 2015 National Institute of Informatics, All rights reserved. 5 ソフトウェアエンジニアのための「機械学習理論」入門 Canopy Expressのインストールと初期設定 ■ ホームディレクトリにあるインストーラを実行します。 $ cd $ bash canopy-1.5.4-rh5-64.sh Welcome to the Canopy 1.5.4 installer! To continue the installation, you must review and approve the license term agreement. Press Enter to continue >>> ...(中略)... Do you approve the license terms? [yes|no] [no] >>> yes Canopy will be installed to this location: /home/user01/Canopy * Press Enter to accept this location * Press CTRL-C to abort * or specify an alternate location. Please ensure that your location contains only ASCII letters, numbers, and the following punctuation chars: '.', '_', '-' [/home/user01/Canopy] >>> ...(中略)... Thank you for installing Canopy! [Enter]を押すとライセンスが表示されるので スペースキーで読み進めます。 「yes」を入力 [Enter]を押す
  • 6. Copyright (C) 2015 National Institute of Informatics, All rights reserved. 6 ソフトウェアエンジニアのための「機械学習理論」入門 Canopy Expressのインストールと初期設定 ■ Canopyを起動して環境設定を行います。 $ ~/Canopy/canopy 「Continue」をクリック 「Start using Canopy」をクリック このウィンドウは閉じて終了します
  • 7. Copyright (C) 2015 National Institute of Informatics, All rights reserved. 7 ソフトウェアエンジニアのための「機械学習理論」入門 Canopy Expressのインストールと初期設定 ■ サンプルコードをダウンロードして、カスタマイズスクリプトを実行します。 - これは、本環境に固有のカスタマイズを行っています。 mkdir -p ~/.ipython/profile_default/startup cat <<EOF >~/.ipython/profile_default/startup/00-setup.py import numpy as np import matplotlib.pyplot as plt import pandas as pd from pandas import Series, DataFrame EOF echo "alias ipython='ipython --pylab'" >> ~/.bashrc . ~/.bashrc echo Done. $ cd $ wget https://github.com/enakai00/ml4se/raw/master/ml4se.zip $ unzip ml4se.zip $ . ml4se/config_centos.sh (参考:config_centos.shの内容)
  • 8. Copyright (C) 2015 National Institute of Informatics, All rights reserved. 8 ソフトウェアエンジニアのための「機械学習理論」入門 IPythonの使い方 ■ 本演習は、IPython(Pythonの対話的操作環境)から行います。 ■ IPythonのシェルからは、「!<コマンド>」でOSコマンドが実行できます。 - 「ls」「cd」「cat」などは、「!」を付けなくても実行できます。スクリプトの編集 は、「!vi <ファイル名>」でviエディタを起動します。 - 他のウィンドウでエディタを起動して編集しても構いません。GUIのエディタを使い たい場合は、デスクトップからフォルダー「ホーム」→「ml4se」→「scripts」を 開いて、中のファイルを右クリック→「geditで開く」を選択します。 $ ipython Python 2.7.6 | 64-bit | (default, Sep 15 2014, 17:36:10) Type "copyright", "credits" or "license" for more information. IPython 2.3.1 -- An enhanced Interactive Python. ? -> Introduction and overview of IPython's features. %quickref -> Quick reference. help -> Python's own help system. object? -> Details about 'object', use 'object??' for extra details. In [1]: In [1]: ls ml4se LICENSE README.md config_centos.sh config_mac.sh config_win.bat scripts/ In [2]: cd ~/ml4se/scripts /home/user01/ml4se/scripts In [3]: !vi 01-square_error.py 演習用のスクリプトはホームディレクトリの 「ml4se/scripts」ディレクトリー内にあります。
  • 9. Copyright (C) 2015 National Institute of Informatics, All rights reserved. 9 ソフトウェアエンジニアのための「機械学習理論」入門 IPythonの使い方 ■ スクリプトの実行は、「%run」コマンドで行います。 ■ その他には、ファイル名は [Tab] キーで補完できます。また、[↑][↓] キーで過去の コマンド履歴の呼び出しが可能です。 In [4]: %run 01-square_error.py Table of the coefficients M=0 M=1 M=3 M=9 0 -0.012133 0.737922 0.005026 0.021570 1 NaN -1.500112 9.633393 -121.926645 2 NaN NaN -28.282723 2897.187668 3 NaN NaN 18.422900 -25036.071571 4 NaN NaN NaN 110826.637881 5 NaN NaN NaN -282565.729927 6 NaN NaN NaN 431648.816158 7 NaN NaN NaN -390194.283125 8 NaN NaN NaN 192486.163220 9 NaN NaN NaN -39940.969290 In [5]: exit In [5]: %paste ■ クリップボードの内容をペーストして実行する 際は、「%paste」コマンドを実行します。 ■ IPythonを終了する際は「exit」を入力します。
  • 10. Copyright (C) 2015 National Institute of Informatics, All rights reserved. 10 ソフトウェアエンジニアのための「機械学習理論」入門 データ分析用のPythonライブラリ
  • 11. Copyright (C) 2015 National Institute of Informatics, All rights reserved. 11 ソフトウェアエンジニアのための「機械学習理論」入門 NumPy, pandas, matplotlib について ■ 本演習で使用するPythonスクリプトでは、主に下記のライブラリを使用しています。 - NumPy : ベクトルや行列の演算の他、主要な数学関数や乱数機能を提供します。 - pandas : Rに類似のデータフレーム(スプレッドシートのように、行/列に属性が付 いたデータ構造)を提供します。 - matplotlib : グラフを描画します。 ■ これらの詳細は下記の書籍が参考になります。 - Python for Data Analysis(Wes McKinney) - 邦題は「Pythonによるデータ分析入門」
  • 12. Copyright (C) 2015 National Institute of Informatics, All rights reserved. 12 ソフトウェアエンジニアのための「機械学習理論」入門 NumPyの簡単な利用例 In [1]: import numpy as np In [2]: a = np.array([[0,1,2],[3,4,5],[6,7,8]]) In [3]: b = np.array([[1,1,1],[2,2,2],[3,3,3]]) In [4]: a Out[4]: array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) In [5]: b Out[5]: array([[1, 1, 1], [2, 2, 2], [3, 3, 3]]) In [4]: a.T Out[4]: array([[0, 3, 6], [1, 4, 7], [2, 5, 8]]) In [7]: a*2 Out[7]: array([[ 0, 2, 4], [ 6, 8, 10], [12, 14, 16]]) In [8]: a+b Out[8]: array([[ 1, 2, 3], [ 5, 6, 7], [ 9, 10, 11]]) In [6]: np.dot(a,b) Out[6]: array([[ 8, 8, 8], [26, 26, 26], [44, 44, 44]]) In [15]: np.append(a,b,axis=0) Out[15]: array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [1, 1, 1], [2, 2, 2], [3, 3, 3]]) In [16]: np.append(a,b,axis=1) Out[16]: array([[0, 1, 2, 1, 1, 1], [3, 4, 5, 2, 2, 2], [6, 7, 8, 3, 3, 3]]) ■ 次は、NumPyで行列の計算をする例です。 転置行列 スカラーとの演算は 各成分に適用 行列としての積は、 np.dot()関数を使用 行列成分の結合は、結合の 方向を axis オプションで 指定(0:縦、1:横)
  • 13. Copyright (C) 2015 National Institute of Informatics, All rights reserved. 13 ソフトウェアエンジニアのための「機械学習理論」入門 In [1]: df = DataFrame([[0,1],[2,3],[4,5]], columns=('x','y')) In [2]: df Out[2]: x y 0 0 1 1 2 3 2 4 5 In [3]: df['x'] Out[3]: 0 0 1 2 2 4 Name: x, dtype: int64 In [4]: df.x Out[4]: 0 0 1 2 2 4 Name: x, dtype: int64 In [5]: df[0:2] Out[5]: x y 0 0 1 1 2 3 pandasの簡単な利用例 ■ 次は、pandasのデータフレームを使用する例です。 columns index columnsの取り出し (Seriesオブジェクト) スライス記法は 行の取り出しになる In [6]: for index, line in df.iterrows(): ....: print "index=%d" % index ....: print line ....: index=0 x 0 y 1 Name: 0, dtype: int64 index=1 x 2 y 3 Name: 1, dtype: int64 index=2 x 4 y 5 Name: 2, dtype: int64 行単位の処理
  • 14. Copyright (C) 2015 National Institute of Informatics, All rights reserved. 14 ソフトウェアエンジニアのための「機械学習理論」入門 matplotlibの簡単な利用例 ■ 次は、matplotlibでグラフを描画する例です。 import numpy as np import matplotlib.pyplot as plt fig = plt.figure() subplot = fig.add_subplot(2,1,1) linex = np.arange(0,1.01,0.01) liney = np.sin(2*np.pi*linex) subplot.plot(linex, liney) linex = np.arange(0,1,0.01) subplot = fig.add_subplot(2,1,2) liney = np.cos(2*np.pi*linex) subplot.plot(linex, liney) fig.show() 描画ウィンドウの用意 描画ウィンドウ内の 「縦2×横1」個の 描画枠の1番目の枠 描画ウィンドウ内の 「縦2×横1」個の 描画枠の2番目の枠 描画ウィンドウを実際に表示
  • 15. Copyright (C) 2015 National Institute of Informatics, All rights reserved. 15 ソフトウェアエンジニアのための「機械学習理論」入門 演習手順
  • 16. Copyright (C) 2015 National Institute of Informatics, All rights reserved. 16 ソフトウェアエンジニアのための「機械学習理論」入門 演習1:最小二乗法による回帰分析 ■ スクリプト「02-square_error.py」を実行します。 - 最小二乗法による回帰分析を実施します。 ■ 具体的な内容は、下記のBlogを参照してください。 - PRML 第1章の多項式フィッティングの例を再現 - http://enakai00.hatenablog.com/entry/2015/04/05/002239 ■ スクリプトの下記の値を変えると、データ数(x軸上の観測点の数)を変更できます。 - データ数によって結果がどのように変わるか観察してください。 In [1]: %run 02-square_error.py #------------# # Parameters # #------------# N=10 # サンプルを取得する位置 x の個数
  • 17. Copyright (C) 2015 National Institute of Informatics, All rights reserved. 17 ソフトウェアエンジニアのための「機械学習理論」入門 演習2:最尤推定による回帰分析 ■ スクリプト「03-maximum_likelihood.py」「03-ml_gauss.py」を実行します。 - 最尤推定による回帰分析と最大ログ尤度の計算、および、最尤推定による正規分布 の推定を行います。 ■ 具体的な内容は、下記のBlogを参照してください。 - PRML 第1章の「最尤推定によるパラメータフィッティング」の解説 - http://enakai00.hatenablog.com/entry/2015/04/05/220817 ■ 「03-loglikelihood.py」の下記の値を変えると、データ数を変更できます。 - データ数によって結果がどのように変わるか観察してください。 ■ 「03-ml_gauss.py」を何度か実行して、得られたサンプルによって推定がどのように 変わるか観察してください。 In [1]: %run 03-maximum_likelihood.py In [2]: %run 03-ml_gauss.py #------------# # Parameters # #------------# N=10 # サンプルを取得する位置 x の個数
  • 18. Copyright (C) 2015 National Institute of Informatics, All rights reserved. 18 ソフトウェアエンジニアのための「機械学習理論」入門 演習3:パーセプトロンによる二項分類 ■ スクリプト「04-perceptron.py」を実行します。 - パーセプトロンによる二項分類を実施します。 ■ 具体的な内容は、下記のBlogを参照してください。 - Perceptronのパラメータ変化を見るコード - http://enakai00.hatenablog.com/entry/2015/04/12/201156 ■ 分類用のデータは、2種類の2次元正規分布を用いてランダムに生成しています。下記の パラメータでデータ数、中心座標、分散を変更できます。 - これらのパラメータを変更して、実行結果がどのように変わるか観察してください。 In [1]: %run 04-perceptron.py N1 = 30 # クラス t=1 のデータ数 Mu1 = [0,0] # クラス t=1 の中心座標 N2 = 20 # クラス t=-1 のデータ数 Mu2 = [15,10] # クラス t=-1 の中心座標 Variances = [20,25] # 両クラス共通の分散(2種類の分散で計算を実施)
  • 19. Copyright (C) 2015 National Institute of Informatics, All rights reserved. 19 ソフトウェアエンジニアのための「機械学習理論」入門 演習4:ロジスティック回帰による二項分類 ■ スクリプト「05-logstic_vs_perceptron.py」を実行します。 - ロジスティック回帰とパーセプトロンによる二項分類の結果を比較します。 ■ 具体的な内容は、下記のBlogを参照してください。 - Logistic RegressionとPerceptronを比較するコード - http://enakai00.hatenablog.com/entry/2015/04/11/235712 ■ 何度かスクリプトを実行して、ロジスティック回帰とパーセプトロンの結果の違いを比 較してください。 In [1]: %run 05-logstic_vs_perceptron.py
  • 20. Copyright (C) 2015 National Institute of Informatics, All rights reserved. 20 ソフトウェアエンジニアのための「機械学習理論」入門 演習5:ロジスティック回帰のROC曲線 ■ スクリプト「05-roc_curve.py」を実行します。 - ロジスティック回帰を実施して、その結果をROC曲線で表示します。 ■ 具体的な内容は、下記のBlogを参照してください。 - ロジスティック回帰のROC曲線を描くコード - http://enakai00.hatenablog.com/entry/2015/04/12/104837 ■ 下記のパラメータでトレーニングセットの分散を変更できます。 - このパラメータを変更して、ROC曲線がどのように変わるか観察してください。 In [1]: %run 05-roc_curve.py #------------# # Parameters # #------------# Variances = [50,150] # 両クラス共通の分散(2種類の分散で計算を実施)
  • 21. Copyright (C) 2015 National Institute of Informatics, All rights reserved. 21 ソフトウェアエンジニアのための「機械学習理論」入門 演習6:k平均法による画像変換 ■ スクリプト「06-k_means.py」を実行します。 - 画像ファイル「photo.jpg」を読み込んで、k平均法で減色処理をしたファイル 「output*.bmp」(*は色数)を出力します。 ■ 具体的な内容は、下記のBlogを参照してください。 - k-means法で画像を減色するサンプルコード - http://enakai00.hatenablog.com/entry/2015/04/14/181305 ■ 下記のパラメータで減色後の色数を変更できます。 - このパラメータを変更して、さまざまな減色処理を試してください。 - 自分の好きな画像ファイルを用いて、減色処理を行ってみてください。 In [1]: %run 06-k_means.py #------------# # Parameters # #------------# Colors = [2, 3, 5, 16] # 減色後の色数(任意の個数の色数を指定できます)
  • 22. Copyright (C) 2015 National Institute of Informatics, All rights reserved. 22 ソフトウェアエンジニアのための「機械学習理論」入門 演習7:混合ベルヌーイ分布による手書き文字分類 ■ スクリプト「07-prep_data.py」を実行して、トレーニングセット用のデータファイル 「sample-images.txt」を用意します。 - データファイル「sample-images.txt」の他に、サンプルとして、用意したデータの 先頭10文字が可読性のある形式で「samples.txt」に書きだされます。 ■ 下記のパラメータで抽出文字の種類と合計の文字数を変更できます。 In [1]: %run 07-prep_data.py #------------# # Parameters # #------------# Num = 600 # 抽出する文字数 Chars = '[036]' # 抽出する数字(任意の個数の数字を指定可能)
  • 23. Copyright (C) 2015 National Institute of Informatics, All rights reserved. 23 ソフトウェアエンジニアのための「機械学習理論」入門 演習7(続き) ■ スクリプト「07-mix_em.py」を実行します。 - 混合ベルヌーイ分布を用いたEM法により、手書き文字の分類が行われます。 ■ 具体的な内容は、下記のBlogを参照してください。 - EM法による手書き文字の分類 - http://enakai00.hatenablog.com/entry/2015/04/18/220126 ■ 下記のパラメータで分類する文字数と反復回数を変更できます。 - さまざまな文字の組み合わせを異なる文字数で分類して、その結果を観察してくださ い。分類結果は、ランダムに決まる初期値に依存するので、同じ条件でも複数回実行 すると、結果が変わることがあります。 In [1]: %run 07-mix_em.py #------------# # Parameters # #------------# K = 3 # 分類する文字数 N = 10 # 反復回数
  • 24. Copyright (C) 2015 National Institute of Informatics, All rights reserved. 24 ソフトウェアエンジニアのための「機械学習理論」入門 メモとしてお使いください
  • 25. 25 Copyright (C) 2015 National Institute of Informatics, All rights reserved.