Developer

【Python連載】機械学習への入門3 ~機械学習ライブラリ~
2021.12.27
Lv1

【Python連載】機械学習への入門3 ~機械学習ライブラリ~

Pythonを使用したAI開発について、PythonにおけるAI開発で活用できる各種ライブラリをご紹介します。


機械学習ライブラリとは

一般的にライブラリとは、プログラムにおいて所々で使われるような機能を、使いやすい形にひとまとめにされたものを指します。
これまでの連載の中で出てきたような三角関数等を扱うためのmathや、ランダムな数値を扱うためのrandomも、このライブラリの一つになります。
※正確に言うならば、mathやrandomは、Pythonで標準で用意された標準ライブラリという位置づけになります。

ライブラリを使用することで、開発効率はぐっと上がります。
Pythonでは通常のプログラミング向けのライブラリ以外にも、機械学習用のライブラリも、数多く提供されています。

AI開発を行うにあたっては、一から全てを自分で記載するのは途方もなく大変になるでしょう。
今回は、AI開発に役立つような各種ライブラリを紹介したいきます。

scikit-learn(公式リンク)

無償で公開されているライブラリであり、機械学習関連のライブラリの中でもかなり知名度の高いものになります。
機械学習でコアとなる分類、回帰(予測)、クラスタリング等を行うためのアルゴリズムが実装されています。
サンプルのデータセットもあり、また公式のドキュメントも充実しているため、機械学習のお試しに最適となっています。

TensorFlow(公式リンク

Googleが開発し無償で公開しているライブラリです。
機械学習だけではなく、ディープラーニングと呼ばれる学習手法にも対応しています。
数年前にドイツで行われた国際情報通信技術見本市”CeBIT 2017″で、このTensorFlowを活用した『きゅうり仕分けロボット』『から揚げ配膳ロボット』をGoogleが展示したことも話題になりました。

Pytorch(公式リンク

Facebookの人工知能研究グループが開発したライブラリであり、無償で公開されています。
Pythonの機械学習ライブラリとして、高い人気があります。
数値演算ライブラリ『Numpy』と使い方が似ているため、Numpyに慣れている方は入門のしやすさが大きなメリットと言えます。
ディープラーニングにも対応しており、また、Uber Eatsで有名なウーバー・テクノロジーズが開発したPyroと呼ばれる統計的モデリングに特化したプログラミング言語もこのPytorchをベースに作られています。

Chainer(公式リンク

株式会社Preferred Networksという日本企業が開発したライブラリであり、無償で公開されています。
Chainerはディープラーニングに特化しており、これを利用した同社開発の線画自動着色ソフトPaintsChainerは一時期有名となりました。
ただし現在ではChainerは開発を停止してメンテナンスフェーズへ移行してしまいましたが、日本で開発されたものであり日本語の関連資料も多いため、日本ではいまだ人気のあるライブラリとなっています。

Keras(公式リンク

Kerasは中心的な開発をGoogleのエンジニアが行った、無償で公開されているライブラリになります。
Kerasもディープラーニングに特化しているものですが、シンプルで使いやすいという評判があり、また日本語のドキュメントも数多くあるため日本人初心者にもお勧めされているライブラリとなります。

Numpy(公式リンク

数値計算ライブラリであり、機械学習において必須と言われるレベルで使用されているライブラリになります。機械学習ではデータ分析前に膨大な前処理計算が必要となりますが、Pythonは動的型付け言語ゆえの弱点である計算速度という点が大きなネックになります。
それを解決するためのライブラリの一つがNumpyであり、効率的な数値計算処理を行うことができるようになります。

Scipy(公式リンク

Numpyと同様に数値計算ライブラリであり、科学技術計算に用いられる無償で公開されているライブラリになります。
ScipyとNumpyは提供されている機能は似ていますが、Numpyは機能がコンパクトにまとめられている一方でScipyはそうではありません。Scipyは個別にサブパッケージを導入しなくてはいけない手間が掛かるのですが、その分Numpyよりも多くの機能を扱うことが出来ます。

pandas(公式リンク

Numpy等と同様に主に数値計算を支援するためのライブラリであり、無償で公開されています。
高速な演算やグラフ化が可能であり、最大の特徴としてはDataFrameというオブジェクトの機能によってCSVやJson、Excel等の様々なデータ形式を読み込める点にあります。

matplotlib(公式リンク

matplotlibは機械学習のためだけのライブラリというわけではありませんが、よくNumpyやScipyとセットで用いられるようなグラフ描画のためのライブラリになります。
分析したデータというものは、一見、その数値だけ見ても傾向というものがよくわからない時があります。そのような際に、グラフに描画することで相関や偏り、特徴が見えてくることがあります。
こちらもNumpyやScipyと同様に、無償で公開されているライブラリになります。

seaborn(公式リンク

matplotlibと似たようなグラフ描写のためのライブラリであり、無償で公開されています。
matplotlibと比較すると、seabornの方がグラフレイアウトのカスタマイズに優れており、またコード量も少なくシンプルであるというメリットがあります。ただし、デメリットと言うべきかは悩ましいところですが、seabornはmatplotlibと比べて使用ユーザーが少なく、インターネット上での情報量がmatplotlibよりも少ないです。

いかがでしたでしょうか。
上記で紹介したライブラリは一部であり他にもたくさんの種類がありますが、有名どころは大体紹介させていただきました。

次回の記事からは、実際にライブラリも使用して、機械学習を試していきたいと思います。