序文
Pythonは、その優れた能力から、最近のデータサイエンスの分野で最もよく使われているプログラミング言語です。
Pythonは多くの機能を提供しますが、様々な多目的ですぐに使えるライブラリがあることが、この言語をデータサイエンティストにとって最良の選択にしています。
これらのライブラリの中には、よく知られていて広く使われているものもあれば、それほど一般的でないものもあります。
この記事では、Pythonライブラリのリストを編集し、その機能に従って分類してみました。
コアライブラリ
これらのライブラリは、Pythonの標準パッケージの一部であり、ユーザーがその機能を利用したい場合は、インポートするだけでよい。
NumPy
Numerical Python の略で、NumPy は特に数学演算のために設計されています。
主に多次元配列とベクトルをサポートし、複雑な算術演算を行うことができます。
データ構造に加えて、ライブラリは、サポートされているデータ型に対して代数的な操作を実行するための豊富な関数のセットを持っています。
また、C/C++、FORTRAN、データベース管理システムなど、他のプログラミング言語との相互運用性があるのも本ライブラリの特長です。
また、提供される関数群はあらかじめコンパイルされているため、効率的に計算を行うことができる。
SciPy
NumPyをベースにしたScientific Pythonライブラリは、積分、回帰、確率などの高度な演算を提供し、その機能を拡張しています。
SciPyを使用するためには、基礎となるモジュールを利用するため、まずNumPyをインストールする必要があります。
SciPy が広く使われているライブラリの一つである理由は、サブモジュールが階層的に構成されていることと、エクスポートされたモジュールの意味と使い勝手を説明するマニュアルが優れていることです。
パンダ
Python Data Analysis Library は、要件に応じて様々なパラメータでデータを整理するのに役立つオープンソースライブラリです。
シリーズ、フレーム、パネルのような様々な組み込みデータ型により、Pandas はデータサイエンティストの間で人気のあるライブラリとなっています。
フレームの表形式は、データベースのようなデータの追加/削除操作を可能にし、グループ化を容易にします。
さらに、Pandaは3次元のパネルデータ構造を提供し、データの種類をよりよく可視化するのに役立ちます。
ライブラリの柔軟性は、欠損データを含む複数のデータ形式をサポートします。
StatsModels
StatsModelsモジュールは、ライブラリのモデリングとプロッティングのサポートを使用して、ユーザーがデータの統計的モデリングを実行できるようにします。
このモデルは、様々な分野での予測に使用することができます。
サポートされているモデルの種類には、線形モデルや回帰モデルがあります。
StatsModelsは時系列分析もサポートしており、例えば、金融機関では株式市場情報を便利なフォーマットで維持するために特によく利用されています。
また、モデルはビッグデータセットに使用できるほど高速であるため、最適な選択肢となります。
プロット
どのようなライブラリでも、データに対して行われた複雑な操作の結果をわかりやすく表現することが重要な機能である。
このセクションで紹介するライブラリは、そのような側面に重点を置いています。
Matplotlib
SciPy コアパッケージの一部である Matplotlib は、ユーザの要求に応じて処理されたデータをグラフィカルに表示するために使用されます。
ヒストグラム、円グラフ、シンプルな棒グラフなど、様々な種類のグラフを作成することができます。
また、MATLABのようなオブジェクト指向のインターフェイスを提供し、ユーザーがデータに対して必要な操作を行うことができます。
このライブラリの重要な特徴は、利用可能なほぼ全ての機能に対してカスタマイズが可能であることで、ユーザーにとって非常に柔軟な利用が可能です。
ーーボケ
Bokehライブラリは、Webブラウザのインターフェイスを使ってデータをプロットできるスタンドアローンライブラリです。
内部的にはJavaScriptのインフラストラクチャを使用しているため、Matplotlibから独立しています。
Bokehライブラリの重要な点は、ウィジェットに重点を置いていることです。
これにより、ユーザーはグラフ、プロット、ラベルなど、様々なサポートフォーマットでデータを表現することができます。
さらに、「コールバック」によるインタラクティブな可視化もサポートしており、JavaScriptを使用してBokehのメソッドにフックすることができます。
プロトリー
主に3Dプロットに焦点を当てたPlotlyは、Webアプリケーションと完璧に統合することができ、インポートするための言語のための多くの有用なAPIを提供します。
リアルタイムのデータ表現のためにデータ駆動型ドキュメントを中核に使用しており、ユーザーはサーバーサイドでグラフィックスを処理し、その結果をクライアントに送信するなどの設定を行うことができます。
また、必要に応じてプラットフォーム上で他者とデータを共有することも可能です。
PlotlyとMatplotlibのデータフォーマット間の相互運用も可能です。
機械学習
機械学習はここ数年、コンピューティングの重要な分野として浮上しており、データサイエンティストはこの分野の今後のトレンドを最大限に活用するためのツールを必要としています。
ここでは、機械学習の機能を提供するいくつかのPythonライブラリをリストアップしています。
最も人気のある機械学習の記事について、より深く知りたい方はこちらの記事をご覧ください。
Scikit-Learn
BSD ライセンスの Scikit-Learn は、NumPy と SciPy の上に構築されたオープンソースの機械学習ツールキットです。
前処理、分類、回帰、クラスタリングによく使われる機械学習アルゴリズムを備えています。
サポートベクターマシン、リッジ回帰、グリッドサーチ、k-meansクラスタリング、その他多くのアルゴリズムが含まれています。
このキットでは、アルゴリズムと一緒に、実験用のサンプルデータセットも提供されています。
ドキュメントが充実したAPIは、上級者だけでなく、初心者にも使いやすくなっています。
ほぼすべてのプラットフォームで良好なパフォーマンスを発揮するため、学術的な利用だけでなく、商業的な目的でも人気があります。
ーーショウグン
ShogunはC++で実装されたML用のオープンソースツールボックスで、Pythonを含む複数の言語とプラットフォームに対して統一されたインターフェースを提供します。
回帰や分類の問題を解決するためのスケーラブルなカーネルメソッドに焦点をあてています。
開発中の主な焦点はバイオインフォマティクスであり、そのためShogunは精度を維持しながら1千万以上のデータサンプルを処理することができます。
ディープラーニング
ディープラーニングは、教師あり学習、ニューラルネットワーク、自然言語処理などの研究者にとって、未踏の道を切り開く機械学習分野の先端領域である。
TensorFlow
TensorFlowは、主にニューラルネットワークに焦点を当てた、Googleのエンジニアによって開発されたDeep Learningライブラリです。
このライブラリは非常に拡張性が高く、多くのプラットフォームをサポートし、より良い可視化のためのGPUサポートも含まれています。
アルゴリズムのクラスには、いくつか例を挙げると、分類、推定モデル、微分などがあります。
その豊富なAPIサポートにより、自然言語処理を用いたニューラルネットワークや音声認識のトレーニングに最適です。
テアノ
Theano は DL 領域の複雑な数式を解くことを目的としたライブラリとコンパイラの組み合わせである。
演算を実行するために NumPy を使って多次元行列を使用します。
パフォーマンスを考慮し、TheanoはNumPyと非常に密接に結合しており、プリコンパイルされているため、プラットフォームに依存せず、GPUも利用できる。
また、これらの機能に加えて、エラー検出やエラー軽減のためのユニットテストフレームワークも提供されている。
Keras
Kerasは、GoogleのTensorFlowやMicrosoftのCNTK(Cognitive Toolkit)の上で実行可能なニューラルネットワークライブラリである。
Kerasは抽象的に設計されており、他の深層学習ライブラリのプラグインとして機能します。
Kerasは、標準的な畳み込みニューラルネットワークだけでなく、リカレントニューラルネットワークもサポートでき、GPUクラスター上のモデルへの分散インターフェイスを提供します。
その使いやすいインターフェースは、迅速なプロトタイプの作成と、サポートされるプラットフォームへの展開に最適です。
自然言語処理
最近、自然言語処理分野の研究により、音声認識アプリケーションが急増しています。
この分野のライブラリが充実しているのも頷ける。
NLTK
Natural Language Toolkitは、分類、トークン化、構文解析、意味解析など、英語処理に一般的に必要とされる機能をサポートしています。
構文解析を用いて単語をトークンに分割した後、言語セマンティクスを用いてツリー状の構造を形成し、データをモデルに格納します。
NLTKは、主要なプラットフォームでサポートされており、オープンソースコミュニティによって維持されているプロジェクトです。
センチメント解析やアンチスパムエンジンなど、その応用範囲は広い。
ジェンシム
スケーラブルで堅牢、かつプラットフォームに依存しない NLP 用ライブラリである Gensim は、NumPy と SciPy パッケージを基盤に使用しています。
Generate Similar」の略で、大量のデータをメモリ上に保持するように設計されているため、パフォーマンス重視の設計になっています。
他のパッケージとは異なり、データをグループ化するのではなく、カスケード的に使用する実装になっています。
その効率性から、ヘルスケアや金融機関などの領域で広く使われています。
スパシー
SpaCy は、英語、ドイツ語、フランス語、イタリア語、オランダ語、その他 30 の言語のためのニューラルネットワークモデルを含む、NLP をターゲットにしたオープンソースライブラリです。
主に学術的な目的で使用される他のNLPライブラリとは異なり、SpaCyは商業的な使用に重点を置いています。
また、機械学習や深層学習のためのAPIも提供している。
AirbnbやQuoraのような人気のあるテック企業は、SpaCyをプラットフォームの一部として使用しています。
他のライブラリと異なる点は、データを複数のトークンとして処理するのではなく、ドキュメントを処理できることです。
スクレイピング
ウェブにアップロードされるコンテンツのサイズが日を追うごとに何倍にもなるにつれ、データのインデックス化とクロールに関連する問題を解決するために、ウェブスクレイピングは多くの重要性を増しています。
この仕事は面倒なため、自動化が理想的な解決策です。
Pythonのライブラリは、効率的な方法でWebページを通してデータをスクレイピングするために利用可能です。
Scrapy
その名の通り、Scrapyは世界中のWeb上のデータをかき集めることを目的としたオープンソースのフレームワークです。
当初はエクスポートされた関数を使用してデータを抽出するために設計されましたが、Webページを解析して構造化された形式でデータを保存するWebクローラを設計するために使用されるフレームワークに進化しています。
Pythonのオブジェクト指向と再利用性の哲学に従って、Scrapyは Spider
という名前の基本クラスを中心に構成されており、必要に応じて機能のレイヤーを追加していきます。
データマイニング
データマイニングとは、膨大なデータの中から分析に必要なパターンを見つけ出そうとするコンピューティングの流れのことです。
ここでは、データマイニングでよく使われる人気のOrangeライブラリを見てみましょう。
オレンジ
Orangeツールキットは、機械学習のサポートとともに、インタラクティブなデータマイニングのためのビジュアル分析プラットフォームも備えています。
Orangeは、General Public Licenseの下で公開されているオープンソースのパッケージで、C++とPythonのラッパーを使用して設計されています。
Orangeのパッケージには、データセットの可視化、分類、回帰、評価のためのウィジェットセットが含まれています。
Orangeがよく使われる分野は、DNA研究、医薬品の領域分析など多岐にわたります。
その他
ここでは、前述のどのカテゴリーにも当てはまらないが、特筆すべきライブラリーを紹介する。
SymPy
データサイエンスや分析に直接使われるわけではありませんが、SymPyは代数的な計算を対象とした記号計算のPythonライブラリです。
多くのデータサイエンティストは、データの中間的な数学的分析にこのライブラリを使用し、後にプロットや機械学習などの他のライブラリで消費されます。
概要
データサイエンスの研究目的で利用できる数多くのPythonライブラリの中から、最もよく使われるものを列挙し、分類してみました。
この記事が、データサイエンス愛好家がこの分野に深く潜り込み、これらのライブラリを最大限に活用するための一助となれば幸いです。