テクノロジー

【2020年版】機械学習で利用したい!Pythonライブラリまとめ

【2020年版】機械学習で利用したい!Pythonライブラリまとめ

近年、AI(人工知能)技術が飛躍的に向上しています。自動運転、画像認識、音声認識などを支えるのが、機械学習です。そして、その機械学習を行う上で使用されているプログラミング言語といえばPythonが最も支持されています。

とはいえ、機械学習って何をやれば良いのかわからない人もいますよね。機械学習は教師あり学習、教師なし学習、強化学習に分類されますが、さらに細かい手法を理解し、プログラミングで実装するとなると至難の技です。しかし、機械学習にはライブラリがあって、それを活用することで様々な学習手法を簡単に実装できます。

そこで今日は、AI(人工知能)、機械学習って何?という内容から、実際に機械学習でよく利用されているPythonのライブラリを紹介します。

機械学習とは

機械学習のイメージ

まず、AI(人工知能)とは何かですが、推論、認識、判断など、人間と同じ知的な処理能力を持つ機械(情報処理システム)を指します。

では、機械学習とは何かというと検索エンジン、交通渋滞予測、パンデミック・シミュレーションなど、たくさんのデータをもとに入出力関係を学習したものです。これらは入力データの規則性や関連性をとらえて、そこから判断、予測などといったデータを出力するものです。この2つを簡単に表すと、

AI(人工知能) > 機械学習

という捉え方になります。

機械学習を理解するには、プログラムを知っていくことが大事です。機械学習で用いられるプログラミング言語といえばPython。Pythonとは1991年に発表されたプログラミング言語の中では比較的歴史の浅い言語です。PythonはAI(人工知能)、機械学習で有名な言語という印象がありますが、ウェブ開発やサーバーサイド、ネットワーク、データベース開発など幅広い分野で活用できるという特徴があります。

他には、Pythonの特徴として初心者にも分かりやすい文法のシンプルさ、多数の大企業のシステムに採用されている信頼性、そしてライブラリの充実度があります。ライブラリとは、ある機能をもったプログラムの部品の集まりのことです。これから、機械学習で用いられるライブラリを紹介しましょう。

機械学習向けPythonライブラリその1:pandas

Pandasのイメージ

機械学習するには、たくさんのデータを読み込んだり、そのデータから必要な情報を取り出したり、新たなデータを作成したり・・・とデータの操作が必要になりますよね。表計算ソフトいっぱいにあるデータと悪戦苦闘しながらレポートやプレゼン資料を作る作業をプログラムで自動的にやってくれるとしたら、とても助かるでしょう。

Pythonで、その機能を提供しているのがpandasというライブラリです。pandasを利用することの最大のメリットは、自在にデータの操作ができることです。

具体的にできることはこちらです。

  • データの読み込み
  • データの確認
  • データから情報を取り出す
  • 新たな列の作成
  • データの並び替え
  • データの置換
  • データの結合

これだけみると、表計算ソフトと同じことじゃないかと疑問に感じますよね。Pythonを使うことと、表計算ソフトを使うこととの違いは、自動か手動かの違いです。

Pythonを使えば、データ量が多くても処理が可能です。具体的には、pandasライブラリをインポートし、各機能を呼び出しましょう。データ読み込みから表示までであれば、read_csvという関数からcsvファイルを読み込み、headという関数でデータの最初の5行を表示できます。ライブラリの読み込みを含めてもたった3行の記述でできるとなれば、初心者でもできそうですよね。

データの量が多ければやはり時間はかかりますが、ライブラリとPythonが自動で指定した処理を実施してくれます。また、同じ処理も繰り返して自動で行ってくれる、これもプログラムでやることの便利さでしょう。

例えば毎日あがってくる全国各地の店舗売上データを表計算ソフトで1つ1つ集計して分析するよりもPythonのpandasを用いて、自動で操作する方がメリットに違いありません。

機械学習向けpythonライブラリその2:NumPy

NumPyのイメージ

pandasでできることは、イメージできてきましたよね。では、表計算ソフトにイメージを戻しましょう。表計算ソフトでやることはデータを確認したり、並び替えたり、置換、結合ができますがそれではデータはデータのままです。とはいえ、データを減ったのか増えたのかわかるようにするなどの、有効な情報に変えることが必要ですよね。そんなときに使えるライブラリがNumPyです。

NumPyライブラリは、Pythonにおいて数値計算を効率的にできる拡張モジュールです。これは、他言語を用いて処理速度の向上などの目的によってPythonの機能を拡張するために記述されたモジュールのことです。NumPyは多次元配列を扱うことができ、数値と行列計算が高速でできるため大量のデータ処理にかかる時間を短縮できます。

具体的には

  • 配列の作成
  • 配列の要素指定抽出
  • 配列の四則演算

などです。

まずは、やはりNumPyをインポートします。配列の作成にはarrayという関数を使用します。配列は1次元から多次元まで作成可能。ちなみにPythonでは1次元配列は[1,2,3]、2次元配列は[[1,2,3],[4,5,6]]と表現します。

要素指定抽出については、作成した配列データがaとすると、a[0]と指定することで、配列の1番目のデータが抽出でき、要素範囲をa[0:3]と指定すると1番目から3番目までの範囲指定抽出も可能です。

四則演算はというと例えばbという配列に[[1,2,3],[4,5,6]]という2次元配列データがあるとします。b – 1は[[0,1,2],[3,4,5]]、b * 3は[[3,6,9],[12,15,18]]となります。各配列の要素ごとに計算ができます。表計算ソフトでも、データ範囲を絞って平均値や、最小値、最大値、中央値をとりします。それがNumPyを使用すれば、簡単で大容量データでも高速に処理ができるとなるととても便利ですよね。

機械学習向けPythonライブラリその3:Matplotlib

Matplotlibのイメージ

表計算ソフトでデータを操作したら、次はそのデータを棒グラフ、円グラフ、折れ線グラフなど、より見やすく直感的にわかるようにしたいですよね。

Pythonもグラフを書くためのライブラリが用意されています。それがMatplotlib。このライブラリでできることは、数学グラフ、線グラフ、棒グラフ、円グラフ、3Dグラフ、散布図など様々な種類を美しく見やすく表示することです。実際にMatplotlibのサンプルページに表示されているだけでも実に40以上のグラフが描かれています。

また、Matplotlbのグラフは1次元配列、2次元配列のグラフのグラフから軸のラベル & 図のタイトル、ラベルとタイトルのサイズ、グラフの凡例をつけるような基本操作はもちろん可能です。線のスタイルや、色、幅だって自由自在に変えられるので散布図表示の際には、色の変更から透明度を変更すれば、重なった部分でも可視化でき分かりやすいでしょう。

機械学習向けPythonライブラリその4:Scikit-learn

Sclit-learnのイメージ

ここまでの段階で、必要なデータを読み込んで、並べ替えや計算、追加などをして機械学習をするためのデータを作ることができます。そして、実際に機械学習を行っていくのですが、ここでも便利なライブラリがあります。それがScikit-learn。

簡単に機械学習の流れを記載すると以下のようになります。

  1. データの準備(学習用とテスト用)
  2. 機械学習の選択
  3. 学習の実行
  4. テストデータでテスト

また、機械学習の代表的なものといえば、クラス分類、回帰、クラスタリング、次元削減などです。Scikit-learnは当然、これらを使うことができるだけでなく、さらに結果を見やすいようにグラフなどで表示もできます。

Scikit-learnの良いところは、様々な機械学習アルゴリズムを用意し、それが必要なパラメータを設定することで実施することができる点です。また、様々な機械学習アルゴリズムのどれを使えばよいかがまとめてある Scikit-learn algorithm cheat-sheetが用意されていることも嬉しいですよね。

機械学習向けPythonライブラリその5:scipy

scipyのイメージ

機械学習は数学の知識や手法も必要なので、高校や大学で学ぶような高度な計算も必要になってくるのではないかと心配になりますよね。ここでもPythonのライブラリが活躍します。

scipyは先ほどのNumPyと同じ計算用のライブラリですが、NumPyを内包したライブラリであり、さらに高度な科学計算技術ライブラリです。NumPyで紹介した配列の演算の他に、scipyは信号処理、画像処理、統計処理、積分、三角関数などのNumPyにはない機能も多くあります。NumPyで一から実装することも可能ですが、scipyのライブラリを使用した方が効率的です。しかもNumPyの技術を土台にして、より効率的に処理されているため、これを使いこなせれば高校・大学レベルの計算もあっという間でしょう。

ライブラリを使う場合注意すること

注意点のイメージ

Pythonライブラリを5つ紹介してきましたが、実際に利用するときに注意することを挙げます。注意点のほぼ全てがインストール時です。

まずはPython環境作成時にWindowsなのかMacなのか、またそれぞれOSバージョンも確認しましょう。PythonはOS別にインストールモジュールが異なっており、またWindows8なのか10なのか、それ以外なのかによっても対応モジュールが分かれています。対応していないものをインストールすると開発時に実際にエラーがでてしまったり、期待した動きにならないといった問題も発生してしまいます。

次に、インストールするPython自身ですが、こちらもバージョンの確認が必須なので、詳細はPythonの公式ページを参照してみましょう。

Python環境ができたら次に各ライブラリのインストールですが、こちらも注意が必要です。ライブラリには依存関係があって、先ほどのscipyはNumPyを内包したライブラリですが、他にもソフトが必要になる場合があります。scipyはNumPyが必要で、pandasとMatplotlibもNumPyに依存します。そのため、まず最初にNumPyをインストールしてから他のライブラリをインストールしていくのが手順です。もちろんこの時もライブラリのバージョン確認は行いましょう。

まとめ
さて、今回は【2020年版】機械学習で利用したい!Pythonライブラリまとめということで以下の内容について紹介しました。

  • 機械学習とは、多くのデータの入出力関係を学習したもの
  • データ処理操作ライブラリ:pandas
  • 配列操作が可能な数値計算ライブラリ:NumPy
  • グラフ表示などのデータ可視化ライブラリ:Matplotlib
  • 機械学習ライブラリ:Scikit-learn
  • 高度科学計算ライブラリ:scipy
  • ライブラリを使う時には、OSのバージョンや依存するソフトなどをチェックする

機械学習とは、たくさんのデータをもとに入出力関係を学習して、そこから判断・予測といったデータを出力するものでしたよね。それを実現するためのPythonライブラリは大変便利です。

Pythonライブラリはここで紹介したもの以外にも実にたくさんのライブラリがあります。まずはここで紹介したPythonライブラリを利用して機械学習の門をくぐりましょう。

参考文献
Pythonで始める機械学習の勉強方法 | 初心者向けの学べるサイト・コンテンツ解説
PYPL PopularitY of Programming Language
【Python入門】絶対に知っとくべきライブラリscipyの基本的な使い方
1.5. Scipy: 高水準の科学技術計算
日本ディープラーニング協会監修(2018)『ディープラーニングG検定公式テキスト』 翔泳社 出版
Guid van Rossum 著 鴨澤眞夫 訳(2016)『Pythonチュートリアル第3版』オライリージャパン発行
トップへ戻る
タイトルとURLをコピーしました