現役エンジニアがよく使う!Python機械学習ライブラリ厳選9選

python-lib1
佐野裕史
書いた人 佐野裕史
侍エンジニア塾ブログは、未経験からWebアプリ開発と仕事獲得をサポートする
侍エンジニア塾のオウンドメディアです。
プログラミング学習を覗き見

どうも!インストラクターの佐野です。

機会学習で便利なライブラリはめちゃくちゃ多く、

「どれが良くてどれが使いにくい」
「現場で使われているライブラリが分からない」
「実用的なライブラリを知りたい」

といったことはありませんか?

そう思い実際調べても、なかなかスムーズに調べられなかったりすることも、しばしばです。

そこで今回、現役エンジニアが使い勝手が良くて頻繁に使っているライブラリを厳選して5個お届けしていきます。

超実用的で使い勝手のいいものだけをご紹介していきますので、期待して読んでくださいね!

この記事の目次

TensorFlow(ディープラーニング)

screenshot-2016-10-19-14-41-23
参照元: Tensorflow

一発で特徴を理解する

google製のニューラルネットワーク最新ライブラリでハイレベルな機能実装の他、グラフで計算を表すような可視化をすることもできます

特徴の詳細を理解する

TnesorFlowは、Googleが「Google Brainというプロジェクトのもとで開発を行っているニューラルネットワークの最新ライブラリです。

ニューラルネットーワークとは、人間の脳を再現した仕組みのことですが、現在もっとも注目されいているといっても過言ではないでしょう。

ハイレベルな機能を実装することができ、計算をデータフローやグラフで表すことができます。

ライブラリの内部はおよそC++で作られていていますが、Pyhonも含まれており柔軟に使用できる構造になっていて文法が「Theano」よりも簡単です。

複雑な問題に対処できるように作られているので、実践では非常に役立つライブラリです。

Playgroundというニューラルネットワークの動作を可視化した、ニューラルネットワークの仕組みを学ぶための教育コンテンツなどもある。

よく使われるジャンル

  • ニューラルネットワーク
  • ディープラーニング

scikit-learn(機械学習の全てのジャンル)

screenshot-2016-10-21-05-45-55
scikit-learn

一発で特徴を理解する

機械学習全般のアルゴリズムが実装されたライブラリでエンジニアの間で大人気

特徴の詳細を理解する

scikit-learnも機械学習の分野ではかなり有名なライブラリです。

機械学習全般のアルゴリズムが実装されたライブラリで大人気なんです。

統計学、パターン認識、データ解析の技法が豊富に使うことができるので、研究者の間で人気があります。

他のNumPy(数値計算)」「SciPy(科学技術計算)」「matplotlib(グラフ描画)のようなライブラリと比べても、scikit-learnはほぼすべての機械学習の実装を行うことができます。

機械学習の基盤となっているライブラリです。

よく使われるジャンル

  • 機械学習のほぼすべてのジャンル

Theano(ディープラーニング)

screenshot-2016-10-21-06-16-11
Theano

一発で特徴を理解する

機械学習の計算に必要な多次元配列を含む数式を最適化して使用できる機械学習ライブラリ

特徴の詳細を理解する

Theanoは数学の「多次元配列」を含んでいる数式を定めて最適化して使うことができる機械学習ライブラリです。

「NumPy」と強く統合されていて、よく一緒に使われ、他のライブラリを使っている人の不満点を見事に解消しています。

Theanoの大きな特徴の1つとして、すばらしいチュートリアルがあることがあげられます。

機械学習を実装する上で多くのトラブルを避けることができるでしょう。

よく使われるジャンル

  • ニューラルネットワーク
  • ディープラーニング

Chainer(ディープラーニング)

インストールガイド_—_Chainer_1_18_0_ドキュメント

一発で特徴を理解する

動的に計算グラフを構築している国産ディープラーニングフレームワークライブラリ

特徴の詳細を理解する

日本のベンチャー企業「PFN」が開発した国産ディープラーニングフレームワークで日本人エンジニアに大人気なんです。

TheanoやTensorflowと異なり動的に計算グラフを構築しているので、学習途中でネットワークの形が変わるニューラルネットワークでも学習ができる点が新しいライブラリです。

numpyの構文でかけるので、微分がいらずです。

「とりあえずこれをGPUで高速化したい」というコードが有るならこれを使うのが一番の近道です。

よく使われるジャンル

  • ニューラルネットワーク
  • ディープラーニング

Pytorch(ディープラーニング)

一発で特徴を理解する

反応速度も早く、ソースコードが見やすく扱いやすいディープラーニングフレームワークライブラリ

特徴の詳細を理解する

chainerからforkして作られた近年人気急上昇中のディープラーニングフレームワークライブラリ。

Chainerと似たような構文のライブラリで速度も速いと評判。

chainerは実装されていない機能を追加するときに自分で微分のコードを書かないといけなかったが、Pytorchはその作業が不要になる点も魅力です。(torch自体がTheanoと同じように自動微分機能を持っている)

Chainer同様にソースコードが非常に見やすく便利で、Tensorflowよりも習得が簡単です。

Theanoと比べたら月とスッポンくらい簡単になってしまいます。

よく使われるジャンル

  • ディープラーニング

Pyevolve(遺伝的アルゴリズム/ニューラルネットワーク)

一発で特徴を理解する

Pure Pythonの文法で、APIが簡単に使えたり、進化過程をグラフ化できる機能などがある多機能なライブラリ

特徴の詳細を理解する

文法は純粋なPythonで書くため、コードは書きやすく読みやすいです。

APIが簡単に使えるようになったり、進化過程をグラフ化できる機能など多機能です。

また、拡張性を持たせることを方針としているので、拡張機能も豊富です。

ただ、PyevolveがWebで探してもあまり出てこないことが難点なので入門者には少し難しいライブラリですね。

よく使われるジャンル

  • 遺伝的アルゴリズム
  • ニューラルネットワーク

Deap(遺伝的アルゴリズム)

一発で特徴を理解する

拡張性をもっとも意識しており、データ構造からアルゴリズムまでカスタマイズできる多機能ライブラリ

特徴の詳細を理解する

Pyevolveよりも開発が活発だと言われている遺伝的アルゴリズムライブラリ。

遺伝的アルゴリズムだけでなく、遺伝的プログラミングやこれらの並列化などにも使うことができる。

拡張性をもっとも意識しているライブラリなので、データ構造からアルゴリズムまでカスタマイズができる作りになっている。

よく使われるジャンル

  • 遺伝的アルゴリズム
  • 遺伝的プログラミング

Stan(確率的プログラミング)

一発で特徴を理解する

科学者や企業に人気で簡単な構文が使えるため、確率的プログラミングの分野では利用者が多いライブラリ

特徴の詳細を理解する

科学者や企業に大人気のMCMCサンプラーでPyStan(確率的プログラミングをするための言語)というラッパーがあり、これから使えるようになる予定。
※現在はまだCPUでのみ動く。

簡単な構文でこの分野で利用者は多い。

統計モデルを書くだけで、「ベイズ推定」をすることができるのも強みで利用者が多いことに影響していますね。
※ベイズ推定とは、ベイズ確率の考え方に基づき、推定したい事柄を確率的に求めるもの。

よく使われるジャンル

  • 確率的プログラミング

Edward(確率的プログラミング)

一発で特徴を理解する

計算グラフやベイズ推定+確率変数+確率モデリングといったものが入った多機能確率的プログラミングライブラリ

特徴の詳細を理解する

Stanの競合で、Tensorflowに基づいた確率的プログラミングライブラリです。

CPUの恩恵受けて、処理がかなり早いのが特徴です。

計算グラフや確率的プログラミング(ベイズ推定+確率変数+確率モデリング)といったものが入っている多機能なライブラリと言えます。

モデリングにはPython/Numpyスタックを使っている。

よく使われるジャンル

  • 確率的プログラミング

【番外編】機会学習開発で使えるおすすめツール

Jupyter notebook

pythonの開発環境で使えます。

メリットとしては、コードとメモが一緒に残せます。

記法はmarkdownやhtml, latexなども使えて便利です。

機械学習と切っても切れない数式を書くのも容易で使い勝手も抜群です。

githubでもjupyter notebookのファイルはちゃんと表示してくれるため大人気です。

昔はIPython notebookと言われていたが、PythonだけでなくJulia(新進気鋭の科学計算向けプログラミング言語でJITコンパイルで非常に高速に動作するのが特徴。速度はC並、書きやすさはPython並な言語)やR(データ解析や統計処理で非常に強い言語でPythonとシェアを争っている言語)などでも使えるようになったためJupyterと改名した。

Anaconda Python

科学計算向けのライブラリを一気にインストールできるPythonディストリビューション。

これだけ入れればすぐに開発ができるできる優れものです。

Python言語自体といろんなライブラリがセットになったパッケージだと思えば分かりやすいかもしれません。

Pythonを入れて開発環境を構築するよりも「Anaconda Python」を入れた方がすぐに開発できるという点ではやはり手軽さは捨てがたいです。

まとめ

いかがでしたでしょうか?

ディープラーニングやニューラルネットワークなどの新しい技術を使えるライブラリも増えてきています。

今回は現役エンジニアが実際に使えるライブラリをご紹介をさせていただきました。

どれも実用的なものばかりを5つ集めましたので、きっとあなたが使いやすいものが見つかるはずです。

ぜひ一度使ってみて機械学習を体験してみるといいでしょう!

Pythonカリキュラム無料公開中!
この記事はPython入門完全攻略ガイド【基礎学習/アプリ開発/仕事獲得】の一部になります。このカリキュラムは、プログラミング入門者が、基礎学習からアプリ開発、さらには仕事獲得まで体系的に学べる内容となっています。

Python学習に必要な情報を一つにまとめていますので効率よくPythonを学ぶことが出来ます。この機会に是非活用していただければと思います。



33歳、未経験だった僕がフリーエンジニアになれた理由
現在フリーでWEBエンジニアをやられている濱口直行さん。33歳で、プログラミングを学び始め、約半年という短い期間で独立までされた学習ログを余すことなくインタビューさせていただきました。

プログラミングを学習中の方はもちろん、独立をお考えの方まで幅広く活用できる記事になっています。この機会に是非活用していただければと思います。


Pythonを最短で習得したい方へ
元々ITリテラシーの高い方やプログラムの学び方がわかっている方であれば、この記事通りに進めていけば、Pythonを独学で習得することができるでしょう。

ただし、実際の学習期間中はつまづいている時間がほとんどです。

「なかなかやり遂げられ無い、挫折してしまった」
「時間が足りない」
「情報が少なくどう調べればいいかわからない」
「エラーを解決することができない」
このような悩みを抱えている方も少なく無いと思います。

  • もう挫折したくない
  • 本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい
  • 自分だけのカリキュラムで効率的に勉強したい
そんな方はお気軽に侍エンジニア塾までご相談ください。

お一人お一人に専属のインストラクターがつくので、通常のスクールでは難しい、AI(人工知能)や機械学習、IoTについて学習することできます。

まずは『無料体験レッスン』で、弊社のコンサルタントと一緒にあなた専用の学習方やカリキュラムを考えてみませんか?

Pythonならではの学習方法や、現役Pythonエンジニアから貴重なアドバイスを受けることができます。

詳しくは下の画像をクリックして弊社サービス内容をご確認ください。

cta_mtm_python

学習者インタビュー

人気記事セレクション

プログラミング学習者必見

専属講師に質問し放題、レッスンし放題!最短1ヶ月でフリーランスエンジニア
プログラミング学習カリキュラム無料公開中
Ruby学習カリキュラム無料公開中
Python学習カリキュラム無料公開中
 1記事最大11,000円!テックライター募集


LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

佐野裕史

佐野裕史

侍エンジニア塾インストラクター。
主に技術担当をしています。

【経歴】
力仕事、接客業、営業職など様々な業界を経てIT業界に参入。
IT未経験からスタートし、1ヶ月で仕事獲得に奇跡的に成功。
1年半後にフリーランスに転身。

Web開発を主に行っており、得意とするのはRails、Ruby。
【技術スキル】
Rails、Ruby、Swift、Java(Android)、JavaScript

【趣味、趣向】
麻雀
MTG(マジックザギャザリング)
ダーツ、卓球、野球、ボウリングなどの球技

【Facebookページ】
https://www.facebook.com/hiroshi.sano.7
【Twitter】
プログラミング講師@佐野裕史
自分でプログラミングができない人のために情報を発信しています。
お気軽にフォローください。