今日のシステム開発ではライブラリやフレームワークの活用により、工数を抑えて効率よく開発を進めることが一般的です。
近年、Pythonが注目度も人気も高いプログラミング言語のひとつとなっている理由としても、この「ライブラリの豊富さ」が挙げられるでしょう。
本記事では、たくさんあるPython向けライブラリの中でも、機械学習や人工知能(AI)の開発に便利な機能をもつライブラリを紹介します。
1. Pythonにおけるライブラリとは
ライブラリとは便利な機能や関数がまとまっているものを意味しますが、Pythonではこのライブラリをパッケージと呼ぶこともあります。
- 標準ライブラリ
- 外部ライブラリ(サイドパーティー)
Pythonには標準で備わっている標準ライブラリ以外に、特定の用途、とりわけAI分野に特化したPython向け外部ライブラリが豊富です。
機械学習や人工知能開発などをはじめとするAI関連分野は、ビジネスの効率性・生産性の向上、コスト削減などにつながると期待されており、様々な業界に広がりをみせ、世界中で多くの企業が積極的に技術投資をしています。
これらの技術進化には柔軟で安定したライブラリとフレームワークを持つプログラミング言語が必要であり、AI分野に強いPythonのライブラリを用いた研究・開発が盛んに行われています。
1.1 なぜPythonにはAI関連ライブラリが豊富なのか?
AI分野の開発に強いことで知られるPythonを支えるのは、機械学習やディープラーニング(深層学習)、数値計算向けのライブラリの存在です。
そもそもPythonは開発時から科学技術計算分野に着目し、数値計算や科学技術計算分野において発展してきました。
そして、多くの研究者や開発者がAI関連のライブラリ開発を行うようになり、その多くをOSS(オープンソースソフトウェア)として積極的に公開しています。
この流れの中、機械学習の研究コミュニティなども盛んになり、Pythonをベースとして使えるライブラリは日々研究され続け、AI分野の開発といえばPythonとまで言われるようになりました。
2. 機械学習・人工知能開発におすすめのライブラリ7選
2.1 scikit-learn(サイキットラーン)
公式サイト:https://scikit-learn.org/stable/
【分野】機械学習
【リリース】2007年登場・最初の開発者:David Cournapeau氏
【特徴】
広範なクラスタリング、回帰・分類アルゴリズム、次元削減*などを備えた機械学習ライブラリ。
機械学習ライブラリとしては最も有名であり、機械学習のスタンダートと言われています。
NumPy,SciPyなどの数値計算ライブラリや、描画ライブラリであるMatplotlib上との相互運用が可能です。
【使い方を学ぶならおすすめの学習レッスン】
◆ Pythonで機械学習:scikit-learnで学ぶ識別入門
オンライン学習サイトUdemyの講座です。
分類やパターン認識といった機械学習における識別の基礎をscikit-learnを使ってPythonコードを実行しながら学んでいきます。
* 次元削減(Dimensionality Reduction)
データの圧縮、データーの可視化を主な目的として、データの次元数(データセットのフィーチャーの数)を減らすこと
2.2 TensorFlow(テンソーフロー)
公式サイト:https://www.tensorflow.org/
【分野】深層学習・機械学習
【リリース】2015年登場・Google社が開発
【特徴】
大規模な数値計算・多次元の行列計算をはじめ、様々な数値演算ができる汎用的なライブラリであり、機械学習系モデルの作成をサポートしてくれます。
画像認識、手書き数字の認識、ニューラルネットワークの構築*、自然言語処理*、偏微分方程式のディープニューラルネットワークの処理などもできます
【使い方を学ぶならおすすめの学習レッスン】
◆ 【4日で体験!】 TensorFlow, Keras, Python 3 で学ぶディープラーニング体験講座
オンライン学習サイトUdemyの講座です。
TensorFlow実行環境の構築から、TensorFlowによる画像認識AIプログラムの動作なども体験できます。
* ニューラルネットワーク(Neural Network:NN)
人間の脳内にあるニューロン(神経細胞)とそのつながり、つまり神経回路網を人工ニューロンという数式的なモデルで表現したもの
* 自然言語処理(Natural Language Processing)
人が日常的に使っている言葉(自然言語)をコンピューターに処理させる技術
2.3 PyTorch(パイトーチ)
公式サイト:https://pytorch.org/
【分野】深層学習
【リリース】2016年登場・Facebook社が開発
【特徴】
ここ数年で人気急上昇中の深層学習ライブラリー。
人工知能・機械学習の研究分野において圧倒的な人気を誇り、コミュニティによるサポートがしっかりしています。
PyTorchは、Chainerなどの考え方をベースに設計されているため、基本的な使い方がNumPyやChainerと似ています。
TensorFlow同様にニューラルネットワーク*の構築ができますが、TensorFlowよりもわかりやすく、ソースコードも見やすくて便利です。
【使い方を学ぶならおすすめの学習レッスン】
◆ 【4日間でチャレンジ】Python 3・PyTorch によるディープラーニング・AIアプリ開発入門
オンライン学習サイトUdemyのレッスンです。
PyTorchを使い、深層学習による分類・推定や、時系列データ処理等を学び、最終的にはアプリ化にもチャレンジできます。
* ニューラルネットワーク(Neural Network:NN)
人間の脳内にあるニューロン(神経細胞)とそのつながり、つまり神経回路網を人工ニューロンという数式的なモデルで表現したもの
2.4 Pandas(パンダス)
公式サイト:https://pandas.pydata.org/
【分野】データ前処理
【リリース】2011年登場
【特徴】
データ分析の前処理に便利な機能を提供するライブラリー。表形式のデータ整形、欠損値の補完など。
CSV、SQLデータベース、JSONファイル、Excelなどの幅広いソースからデータを読み取ることができます。
【おすすめの学習サイト】
◆ Python学習講座のpandas入門
現役Pythonエンジニアの方が仕事上で書き留めたメモをもとにした学習サイトであり、Pythonはもちろん、Pandasについても基礎をしっかり学べます。
2.5 Matplotlib(マットプロットリブ)
公式サイト:https://matplotlib.org
【分野】可視化
【リリース】2003年
【特徴】
2次元のグラフを描画するライブラリー。
機械学習において大規模なデータをひもといて理解するにはデータの可視化が必須です。
様々なグラフをはじめ、数値計算ライブラリのNumPyとあわせてグラフ化したり、MatplotlibのラッパーライブラリであるSeabornを合わせて使うことでより見やすいグラフ作成などが可能です。
【基礎を学ぶならおすすめの学習サイト】
◆ 機械学習準備編 Matplotlib 入門
機械学習やMatplotlibの知識が少なくても安心して学べます。
【おすすめ書籍】
◆ Matplotlib&Seaborn実装ハンドブック
MatplotlibとSeabornについて学べるのはもちろん、MatplotlibのAPIについて詳しく解説があるので確認したい時など便利です。
2.6 NumPy(ナムパイ)
公式サイト:https://numpy.org/
【分野】計算
【リリース】2006年・主要な作成者:Travis Oliphant氏
【特徴】
多次元配列や行列などの演算を行う数値計算ライブラリ。
数値計算ライブラリとしては最もよく使われ、他のライブラリと併用して用いられることも多く、数値計算ライブラリの基本といえるでしょう。
NumPy公式ドキュメント
https://docs.scipy.org/doc/numpy-1.13.0/reference/
【基礎や使い方を学ぶならおすすめの学習サイト】
◆ Python学習講座のNumpy入門
現役Pythonエンジニアの方が仕事上で書き留めたメモをもとにした学習サイトです。NumPyの基礎について学べます。
NumPyに関しては、他のライブラリに比べ、ネット上にも多くの情報がありますので学習する際の参考にしやすいでしょう。
2.7 SciPy(サイパイ)
公式サイト:https://www.scipy.org/
【分野】計算
【リリース】2001年
【特徴】数値計算・解析ライブラリ。
統計処理やフーリエ変換などの高度な科学計算をはじめ、信号処理、画像処理なども簡単にできます。
SciPy公式ドキュメント
https://docs.scipy.org/doc/scipy/reference/
【使い方を学ぶならおすすめの学習書籍】
◆ NumPy&SciPy数値計算実装ハンドブック
SciPyはNumPyをベースに高水準で複雑な数値計算を行うことができるため、SciPyの理解と同時にNumPyの理解も深めていくといいでしょう。
3. まとめ
AIシステムは完成するまで速度や性能などの要件を満たすのに十分かどうかわかりません。 そのため、素早く何度も開発を繰り返して試す必要があり、それには豊富なAI分野のライブラリをうまく活用できるPythonが向いているのです。
Pythonも、上記で挙げたようなPython用ライブラリも、全てオープンソフトウェアのため無償で利用でき、AI開発やデータ分析のエンジニアの多くが使う定番となっています。
AI分野の発展が目覚ましい現在、今後も新しい技術を簡単に使えるような機能を持つライブラリが増えてくるでしょう。
それぞれのライブラリの特徴を知っていくことで、機械学習やAI開発がどういうものか体感してみるのもおすすめです。