SlideShare a Scribd company logo
1 of 26
Download to read offline
Pythonによる機械学習の最前線
2016/2/4
ソフトウェアジャパン
ビッグデータ活用実務フォーラム
シルバーエッグ・テクノロジー(株)
加藤公一
自己紹介
加藤公一(かとうきみかず)
シルバーエッグ・テクノロジー(株)
博士(情報理工学) (修士は数理科学)
Twitter: @hamukazu
機械学習歴・Python歴ともに3年
今の仕事: 機械学習に関する研究開発
特にレコメンデーション(自動推薦)システム、自然言語処理、画
像処理など
過去の仕事: データ分析ツールの開発、3次元CADの開発、幾何計
算のアルゴリズム設計、偏微分方程式のソルバなど
Pythonで使える
機械学習・データ分析のツール
• 汎用数値計算、科学技術計算:Numpy, Scipy
• 機械学習:scikit-learn
• 自然言語処理:nltk
• データ分析:pandas
• データ可視化:matplotlib
• 統合分析環境:jupyter-notebook
Pythonで使える
ディープラーニングのライブラリ
• Pylearn2
• Caffe
• TensorFlow
• Chainer
Scikit-learn + matplotlib
分類 クラスタリング
回帰
機械学習アルゴリズムの適用と結
果の可視化をとても便利にできる
絵はすべてscikit-learnホームページ(http://scikit-learn.org)より
matplotlib + scikit-learn入門にお薦め
データサイエンティスト養成講座機械学習入門編
第2部特集2「Pythonによる機械学習入門」
可視化応用編
• さらにインタラクティブな可視化をしたいとき
– 例えば…
• クリックした部分だけ拡大したい
• マウスオーバーすると詳細情報を表示したい
• そういうときはPython+JavaScriptが便利
• Pythonでアプリケーションサーバを立ち上げるの
は簡単
– Bottle、Flaskなどの軽量フレームワーク
– サーバと連携してのJavaScriptでの可視化
• ウェブアプリの仕組みはデータ分析にも有用
などなど…
• 便利なツールとその使い方を挙げていくとき
りがありません
• これ以降は、ライブラリを使ってというより、フ
ルスクラッチからアルゴリズムを書きたい人を
対象の話
今日のターゲット
• 機械学習のアルゴリズムをゴリゴリ書きたい
人
• (機械学習とは限らない)数値計算、アルゴリ
ズムなどの分野で、他の言語で実装していて
苦労している人
つまり、Pythonを使うべきなのに使ってない人
がいるのでは?
スクリプト言語とは
「アプリケーションソフトウェアを作成するための簡
易的なプログラミング言語の一種を指す」
-- Wikipedia
Perl, Ruby, Pythonなど
特徴:
• 短い行数で(少ないタイプ数で)書ける
– つまり生産性が高い
– 初心者が学習しやすい
• インタプリタ型である
• 実行速度が遅い
注意:Pythonは汎用言語です!
数学的用途以外にも使えます。
• ウェブアプリ作ったり
• ゲーム作ったり
• ツイッターのボット作ったり
• ラズベリーパイからLED光らせたり
もできます。
でも今日はその話はしません。
数値計算・数学的アルゴリズムで
Pythonを使うべき理由
• ライブラリが充実
• 結果の可視化が便利
• (うまくコードを書くと)速い⇨以降この話
数値計算、アルゴリズム系の人、
「Pythonは遅いからイヤ」と思ってる人が多いの
では?
Pythonでやってはいけないこと
s = 0
for i in range(1, 100000001):
s += i
print(s)
1から1億までの和を計算する
これはPython的な書き方ではない
改善例
s = sum(range(1, 100000001))
print(s)
1から1億を返すイテレータを用意し、その和を計算する
Numpyを使う
import numpy as np
a = np.arange(1, 100000001, dtype=np.int64)
print(a.sum())
1から1億が入った配列を用意し、その和を計算する
ベンチマーク
s = 0
for i in range(1, 100000001):
s += i
print(s)
s = sum(range(1, 100000001))
print(s)
30.21秒
12.33秒
0.38秒
import numpy as np
a = np.arange(1, 100000001, dtype=np.int64)
print(a.sum())
問題点(?)
• Numpy版は1~100000000が入った配列をあ
らかじめ用意している
• つまりメモリが無駄
• メモリにデータを入れるコストも無駄
⇨Pythonistaはそんなこと気にしない!
ここまでのまとめ
• Pythonの数値計算系ライブラリはC言語等で書
かれているので速い
• できるだけ計算はライブラリに任せたほうがいい
• ライブラリとのやり取りを大量にするより、一度ラ
イブラリに仕事を投げたらしばらく返ってこないく
らいの処理がよい
– Numpyには高速化のための仕組みがたくさんある
(indexing, slicing, broadcasting, etc…)
• そのためにメモリ量やメモリコピーコストがか
かっても気にしない
でもそれができないときがある
• ライブラリ内ではなく、Python側で条件分岐が
大量に必要になる場合
• どうしてもfor文(while文)で細かい処理をたく
さん回さなければいけないとき
• 例えば探索系アルゴリズム、組み合わせ最
適化など
そんなときに…
Cython
• PythonをベースにしたC言語のジェネレータ
• Pythonで書いたものをそのまま速くすること
ができる
• ちょっと手を入れることでさらに速く
ベンチマーク例
def prime(n):
p = [True] * (n + 1)
m = 2
while m < n + 1:
if p[m]:
i = m * 2
while i < n + 1:
p[i] = False
i += m
m += 1
i = n
while not p[i]:
i -= 1
return i
n以下の最大の素数を返す関数
(エラトステネスのふるい)
通常のPython版:4.75秒 Cython化版:3.04秒
prime(10000000)を計算
(コードには手を入れず)
def prime(int n):
cdef int i, m
p = [True] * (n + 1)
m = 2
while m < n + 1:
if p[m]:
i = m * 2
while i < n + 1:
p[i] = False
i += m
m += 1
i = n
while not p[i]:
i -= 1
return i
def prime(n):
p = [True] * (n + 1)
m = 2
while m < n + 1:
if p[m]:
i = m * 2
while i < n + 1:
p[i] = False
i += m
m += 1
i = n
while not p[i]:
i -= 1
return i
型宣言をいれる
3.04秒 0.41秒
def prime(int n):
cdef int m, i
cdef int * p = <int * >malloc((n + 1) * sizeof(int))
for i in range(n + 1):
p[i] = 1
m = 2
while m < n + 1:
if p[m]:
i = m * 2
while i < n + 1:
p[i] = 0
i += m
m += 1
i = n
while not p[i]:
i -= 1
free(p)
return i
0.41秒 0.17秒
リスト(配列)についてもC言語風の型宣言と動的割当て
FAQ
これって、最初からC言語で書いたほうが早くな
いですか?
Answer
• 確かに最初から最終形がわかっていればC言
語で書いたほうが早いかもしれないです。
• しかし、とりあえずPythonで書いて動作を確
認し、それから徐々に高速化するというのに
はCythonは便利です。
まとめ
• Pythonには数値計算、機械学習、データ分析
に便利なライブラリがそろっている
• Pythonはうまくつかうとかなり速い
– できるだけ仕事はまとめてライブラリに任せる
– それができないときはCythonを使う
– Cythonならではの工夫(型宣言)などが必要

More Related Content

What's hot

Python 学習教材 (~299ページ)
Python 学習教材 (~299ページ)Python 学習教材 (~299ページ)
Python 学習教材 (~299ページ)Jun MITANI
 
TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門Etsuji Nakai
 
2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習Motoya Wakiyama
 
Python 学習教材
Python 学習教材Python 学習教材
Python 学習教材Jun MITANI
 
DS Exercise Course 2
DS Exercise Course 2DS Exercise Course 2
DS Exercise Course 2大貴 末廣
 
Python基礎その2
Python基礎その2Python基礎その2
Python基礎その2大貴 末廣
 
Python 機械学習プログラミング データ分析演習編
Python 機械学習プログラミング データ分析演習編Python 機械学習プログラミング データ分析演習編
Python 機械学習プログラミング データ分析演習編Etsuji Nakai
 
Python基礎その1
Python基礎その1Python基礎その1
Python基礎その1大貴 末廣
 
科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要Toshihiro Kamishima
 
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門Shiqiao Du
 
Introduction to Chainer and CuPy
Introduction to Chainer and CuPyIntroduction to Chainer and CuPy
Introduction to Chainer and CuPyKenta Oono
 
実践コンピュータビジョン 3章 画像間の写像
実践コンピュータビジョン 3章 画像間の写像実践コンピュータビジョン 3章 画像間の写像
実践コンピュータビジョン 3章 画像間の写像yaju88
 
アルゴリズムを楽しく!@PiyogrammerConference
アルゴリズムを楽しく!@PiyogrammerConferenceアルゴリズムを楽しく!@PiyogrammerConference
アルゴリズムを楽しく!@PiyogrammerConferenceKensuke Otsuki
 
Pythonによる機械学習
Pythonによる機械学習Pythonによる機械学習
Pythonによる機械学習Kimikazu Kato
 
Python for Data Anaysis第2回勉強会4,5章
Python for Data Anaysis第2回勉強会4,5章Python for Data Anaysis第2回勉強会4,5章
Python for Data Anaysis第2回勉強会4,5章Makoto Kawano
 
「深層学習」勉強会LT資料 "Chainer使ってみた"
「深層学習」勉強会LT資料 "Chainer使ってみた"「深層学習」勉強会LT資料 "Chainer使ってみた"
「深層学習」勉強会LT資料 "Chainer使ってみた"Ken'ichi Matsui
 
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築Tatsuya Tojima
 
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
 
Deep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlowDeep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlowTadaichiro Nakano
 
Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識Ken Morishita
 

What's hot (20)

Python 学習教材 (~299ページ)
Python 学習教材 (~299ページ)Python 学習教材 (~299ページ)
Python 学習教材 (~299ページ)
 
TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門
 
2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習
 
Python 学習教材
Python 学習教材Python 学習教材
Python 学習教材
 
DS Exercise Course 2
DS Exercise Course 2DS Exercise Course 2
DS Exercise Course 2
 
Python基礎その2
Python基礎その2Python基礎その2
Python基礎その2
 
Python 機械学習プログラミング データ分析演習編
Python 機械学習プログラミング データ分析演習編Python 機械学習プログラミング データ分析演習編
Python 機械学習プログラミング データ分析演習編
 
Python基礎その1
Python基礎その1Python基礎その1
Python基礎その1
 
科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要
 
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門
 
Introduction to Chainer and CuPy
Introduction to Chainer and CuPyIntroduction to Chainer and CuPy
Introduction to Chainer and CuPy
 
実践コンピュータビジョン 3章 画像間の写像
実践コンピュータビジョン 3章 画像間の写像実践コンピュータビジョン 3章 画像間の写像
実践コンピュータビジョン 3章 画像間の写像
 
アルゴリズムを楽しく!@PiyogrammerConference
アルゴリズムを楽しく!@PiyogrammerConferenceアルゴリズムを楽しく!@PiyogrammerConference
アルゴリズムを楽しく!@PiyogrammerConference
 
Pythonによる機械学習
Pythonによる機械学習Pythonによる機械学習
Pythonによる機械学習
 
Python for Data Anaysis第2回勉強会4,5章
Python for Data Anaysis第2回勉強会4,5章Python for Data Anaysis第2回勉強会4,5章
Python for Data Anaysis第2回勉強会4,5章
 
「深層学習」勉強会LT資料 "Chainer使ってみた"
「深層学習」勉強会LT資料 "Chainer使ってみた"「深層学習」勉強会LT資料 "Chainer使ってみた"
「深層学習」勉強会LT資料 "Chainer使ってみた"
 
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
 
Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)
 
Deep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlowDeep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlow
 
Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識
 

Similar to Pythonによる機械学習の最前線

20170806 Discriminative Optimization
20170806 Discriminative Optimization20170806 Discriminative Optimization
20170806 Discriminative OptimizationTakuya Minagawa
 
はじめてのPython
はじめてのPythonはじめてのPython
はじめてのPythonKatsumi Honda
 
実験心理学者のためのPython
実験心理学者のためのPython実験心理学者のためのPython
実験心理学者のためのPythonMasataka Miyoshi
 
190904FIT情報処理学会の量子コンピュータ
190904FIT情報処理学会の量子コンピュータ190904FIT情報処理学会の量子コンピュータ
190904FIT情報処理学会の量子コンピュータYuichiro MInato
 
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
 ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイドEtsuji Nakai
 
2018/06/23 Sony"s deep learning software and the latest information
2018/06/23 Sony"s deep learning software and the latest information2018/06/23 Sony"s deep learning software and the latest information
2018/06/23 Sony"s deep learning software and the latest informationSony Network Communications Inc.
 
Curiosity driven exploration
Curiosity driven explorationCuriosity driven exploration
Curiosity driven explorationTakuya Minagawa
 
Python で 3D CG実験データ作るまで
Python で  3D CG実験データ作るまでPython で  3D CG実験データ作るまで
Python で 3D CG実験データ作るまでtao31
 

Similar to Pythonによる機械学習の最前線 (10)

2023_freshman
2023_freshman2023_freshman
2023_freshman
 
20170806 Discriminative Optimization
20170806 Discriminative Optimization20170806 Discriminative Optimization
20170806 Discriminative Optimization
 
Why python
Why pythonWhy python
Why python
 
はじめてのPython
はじめてのPythonはじめてのPython
はじめてのPython
 
実験心理学者のためのPython
実験心理学者のためのPython実験心理学者のためのPython
実験心理学者のためのPython
 
190904FIT情報処理学会の量子コンピュータ
190904FIT情報処理学会の量子コンピュータ190904FIT情報処理学会の量子コンピュータ
190904FIT情報処理学会の量子コンピュータ
 
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
 ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
 
2018/06/23 Sony"s deep learning software and the latest information
2018/06/23 Sony"s deep learning software and the latest information2018/06/23 Sony"s deep learning software and the latest information
2018/06/23 Sony"s deep learning software and the latest information
 
Curiosity driven exploration
Curiosity driven explorationCuriosity driven exploration
Curiosity driven exploration
 
Python で 3D CG実験データ作るまで
Python で  3D CG実験データ作るまでPython で  3D CG実験データ作るまで
Python で 3D CG実験データ作るまで
 

More from Kimikazu Kato

Tokyo webmining 2017-10-28
Tokyo webmining 2017-10-28Tokyo webmining 2017-10-28
Tokyo webmining 2017-10-28Kimikazu Kato
 
Pythonを使った機械学習の学習
Pythonを使った機械学習の学習Pythonを使った機械学習の学習
Pythonを使った機械学習の学習Kimikazu Kato
 
Fast and Probvably Seedings for k-Means
Fast and Probvably Seedings for k-MeansFast and Probvably Seedings for k-Means
Fast and Probvably Seedings for k-MeansKimikazu Kato
 
Pythonで機械学習入門以前
Pythonで機械学習入門以前Pythonで機械学習入門以前
Pythonで機械学習入門以前Kimikazu Kato
 
Introduction to behavior based recommendation system
Introduction to behavior based recommendation systemIntroduction to behavior based recommendation system
Introduction to behavior based recommendation systemKimikazu Kato
 
Sparse pca via bipartite matching
Sparse pca via bipartite matchingSparse pca via bipartite matching
Sparse pca via bipartite matchingKimikazu Kato
 
正しいプログラミング言語の覚え方
正しいプログラミング言語の覚え方正しいプログラミング言語の覚え方
正しいプログラミング言語の覚え方Kimikazu Kato
 
Introduction to NumPy for Machine Learning Programmers
Introduction to NumPy for Machine Learning ProgrammersIntroduction to NumPy for Machine Learning Programmers
Introduction to NumPy for Machine Learning ProgrammersKimikazu Kato
 
Recommendation System --Theory and Practice
Recommendation System --Theory and PracticeRecommendation System --Theory and Practice
Recommendation System --Theory and PracticeKimikazu Kato
 
A Safe Rule for Sparse Logistic Regression
A Safe Rule for Sparse Logistic RegressionA Safe Rule for Sparse Logistic Regression
A Safe Rule for Sparse Logistic RegressionKimikazu Kato
 
特定の不快感を与えるツイートの分類と自動生成について
特定の不快感を与えるツイートの分類と自動生成について特定の不快感を与えるツイートの分類と自動生成について
特定の不快感を与えるツイートの分類と自動生成についてKimikazu Kato
 
Effective Numerical Computation in NumPy and SciPy
Effective Numerical Computation in NumPy and SciPyEffective Numerical Computation in NumPy and SciPy
Effective Numerical Computation in NumPy and SciPyKimikazu Kato
 
【論文紹介】Approximate Bayesian Image Interpretation Using Generative Probabilisti...
【論文紹介】Approximate Bayesian Image Interpretation Using Generative Probabilisti...【論文紹介】Approximate Bayesian Image Interpretation Using Generative Probabilisti...
【論文紹介】Approximate Bayesian Image Interpretation Using Generative Probabilisti...Kimikazu Kato
 
About Our Recommender System
About Our Recommender SystemAbout Our Recommender System
About Our Recommender SystemKimikazu Kato
 
ネット通販向けレコメンドシステム提供サービスについて
ネット通販向けレコメンドシステム提供サービスについてネット通販向けレコメンドシステム提供サービスについて
ネット通販向けレコメンドシステム提供サービスについてKimikazu Kato
 
関東GPGPU勉強会資料
関東GPGPU勉強会資料関東GPGPU勉強会資料
関東GPGPU勉強会資料Kimikazu Kato
 
2012-03-08 MSS研究会
2012-03-08 MSS研究会2012-03-08 MSS研究会
2012-03-08 MSS研究会Kimikazu Kato
 

More from Kimikazu Kato (20)

Tokyo webmining 2017-10-28
Tokyo webmining 2017-10-28Tokyo webmining 2017-10-28
Tokyo webmining 2017-10-28
 
Pythonを使った機械学習の学習
Pythonを使った機械学習の学習Pythonを使った機械学習の学習
Pythonを使った機械学習の学習
 
Fast and Probvably Seedings for k-Means
Fast and Probvably Seedings for k-MeansFast and Probvably Seedings for k-Means
Fast and Probvably Seedings for k-Means
 
Pythonで機械学習入門以前
Pythonで機械学習入門以前Pythonで機械学習入門以前
Pythonで機械学習入門以前
 
Introduction to behavior based recommendation system
Introduction to behavior based recommendation systemIntroduction to behavior based recommendation system
Introduction to behavior based recommendation system
 
Sparse pca via bipartite matching
Sparse pca via bipartite matchingSparse pca via bipartite matching
Sparse pca via bipartite matching
 
正しいプログラミング言語の覚え方
正しいプログラミング言語の覚え方正しいプログラミング言語の覚え方
正しいプログラミング言語の覚え方
 
養成読本と私
養成読本と私養成読本と私
養成読本と私
 
Introduction to NumPy for Machine Learning Programmers
Introduction to NumPy for Machine Learning ProgrammersIntroduction to NumPy for Machine Learning Programmers
Introduction to NumPy for Machine Learning Programmers
 
Recommendation System --Theory and Practice
Recommendation System --Theory and PracticeRecommendation System --Theory and Practice
Recommendation System --Theory and Practice
 
A Safe Rule for Sparse Logistic Regression
A Safe Rule for Sparse Logistic RegressionA Safe Rule for Sparse Logistic Regression
A Safe Rule for Sparse Logistic Regression
 
特定の不快感を与えるツイートの分類と自動生成について
特定の不快感を与えるツイートの分類と自動生成について特定の不快感を与えるツイートの分類と自動生成について
特定の不快感を与えるツイートの分類と自動生成について
 
Effective Numerical Computation in NumPy and SciPy
Effective Numerical Computation in NumPy and SciPyEffective Numerical Computation in NumPy and SciPy
Effective Numerical Computation in NumPy and SciPy
 
Sapporo20140709
Sapporo20140709Sapporo20140709
Sapporo20140709
 
【論文紹介】Approximate Bayesian Image Interpretation Using Generative Probabilisti...
【論文紹介】Approximate Bayesian Image Interpretation Using Generative Probabilisti...【論文紹介】Approximate Bayesian Image Interpretation Using Generative Probabilisti...
【論文紹介】Approximate Bayesian Image Interpretation Using Generative Probabilisti...
 
Zuang-FPSGD
Zuang-FPSGDZuang-FPSGD
Zuang-FPSGD
 
About Our Recommender System
About Our Recommender SystemAbout Our Recommender System
About Our Recommender System
 
ネット通販向けレコメンドシステム提供サービスについて
ネット通販向けレコメンドシステム提供サービスについてネット通販向けレコメンドシステム提供サービスについて
ネット通販向けレコメンドシステム提供サービスについて
 
関東GPGPU勉強会資料
関東GPGPU勉強会資料関東GPGPU勉強会資料
関東GPGPU勉強会資料
 
2012-03-08 MSS研究会
2012-03-08 MSS研究会2012-03-08 MSS研究会
2012-03-08 MSS研究会
 

Pythonによる機械学習の最前線