Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで始める機械学習入門|基本の流れと主要ライブラリ、実装サンプルを徹底解説

本記事では、Python 3.x(それ以前のバージョンでも可)を使った機械学習の基礎について解説します。環境構築から実際にモデルを動かすところまで、初心者の方にもわかりやすく順を追って見ていきましょう。

機械学習環境のセットアップ

まずは、既存のライブラリを活用して機械学習の実行環境を整えます。以下のコマンドで必要なパッケージをインストールしてください。

>>> pip install numpy
>>> pip install scipy
>>> pip install matplotlib
>>> pip install scikit-learn

機械学習とは?

機械学習とは、経験や事実(データ)からパターンを学び、与えられた意図をもとに予測を行う技術です。一般的に、データベース(学習データ)が大きく質が高いほど、より精度の高い機械学習モデルを構築できます。

機械学習の基本的な流れ

機械学習プロジェクトは、おおむね次のようなステップで進められます。

  • データのクレンジング(前処理・クリーニング)
  • データセットの投入
  • モデルのトレーニング(学習)
  • データセットによるテスト(評価)
  • モデルの実装・運用


Pythonで始める機械学習入門|基本の流れと主要ライブラリ、実装サンプルを徹底解説

各ライブラリの役割

ここで、どのライブラリがどのような目的で使われるのかを整理しておきましょう。

NumPy ― 巨大な多次元配列や行列を扱うためのサポートを提供し、これらの配列に対して演算を行える豊富な数学関数を備えています。

SciPy ― 科学技術計算・数値計算のための無料かつオープンソースのPythonライブラリです。アルゴリズムの最適化、データの積分、補間、特殊関数、線形代数などのモジュールを含みます。

Matplotlib ― グラフや図表を作成するためのライブラリです。データを可視化することで、モデルへの理解を深めることができます。

Scikit-learn ― 分類・クラスタリング・回帰など、さまざまなアルゴリズムを搭載しており、データを体系的に整理・分析するのに役立ちます。

Scikit-learnで基本的な機械学習モデルを作ってみよう

それでは、scikit-learnを使ってシンプルな機械学習モデルを構築してみます。ここでは、scikit-learnに組み込まれている「iris(アヤメ)」と「digits(手書き数字)」というデータセットを使用します。

from sklearn import datasets
iris = datasets.load_iris()
digits = datasets.load_digits()

データの中身を確認する

データセットの中身を見るには、次のように記述します。

print(digits.data)


[[ 0. 0. 5. ... 0. 0. 0.]
[ 0. 0. 0. ... 10. 0. 0.]
[ 0. 0. 0. ... 16. 9. 0.]
...
[ 0. 0. 1. ... 6. 0. 0.]
[ 0. 0. 2. ... 12. 0. 0.]
[ 0. 0. 10. ... 12. 1. 0.]]

また、.target 関数を使うと、モデルに学習させたい「正解ラベル」を確認できます。

digits.target


array([0, 1, 2, ..., 8, 9, 8])

digitsデータセットの形状(画像データ)にアクセスするには、次のようにします。

digits.images[0]


array([[ 0., 0., 5., 13., 9., 1., 0., 0.],
   [ 0., 0., 13., 15., 10., 15., 5., 0.],
   [ 0., 3., 15., 2., 0., 11., 8., 0.],
   [ 0., 4., 12., 0., 0., 8., 8., 0.],
   [ 0., 5., 8., 0., 0., 9., 8., 0.],
   [ 0., 4., 11., 0., 1., 12., 7., 0.],
   [ 0., 2., 14., 5., 10., 12., 0., 0.],
   [ 0., 0., 6., 13., 10., 0., 0., 0.]])

学習と予測を実行する

続いて、いよいよモデルの学習と予測のフェーズに移りましょう。

from sklearn import svm
clf = svm.SVC(gamma=0.001, C=100.)

ここで使用しているSVCは「サポートベクター分類(Support Vector Classification)」の略で、モデルの推定器(estimator)として機能します。

clf.fit(digits.data[:-1], digits.target[:-1])
SVC(C=100.0, cache_size=200, class_weight=None, coef0=0.0, decision_function_shape='ovr', degree=3, gamma=0.001,
kernel='rbf', max_iter=-1, probability=False, random_state=None,
shrinking=True, tol=0.001, verbose=False)

fit メソッドを使ってデータセットをモデルに投入し、学習させます。ここでは、テスト用に残しておいた最後の1枚を除くすべての画像を訓練データとして与えています。

モデルの学習が完了したら、.predict 関数を使ってテストデータの出力を予測できます。

clf.predict(digits.data[-1:])
array([8])

このように、学習済みのモデルを使えば、未知のデータに対する予測が可能になります。さらに、モデルの精度や処理時間といった効率性も評価できるようになります。

まとめ

本記事では、機械学習の基礎知識と、Pythonで機械学習を実装するために使われる主要ライブラリについて学びました。NumPyやSciPy、Matplotlib、Scikit-learnといったライブラリの役割を理解し、実際に手書き数字データセットで分類モデルを動かす流れを体験できたかと思います。まずは小さなデータセットから試して、機械学習の第一歩を踏み出してみてください。

  1. PythonとSeleniumでWhatsAppチャットボットを作る方法

    はじめに この記事では、Pythonを使ってWhatsAppのチャットボットを作成する方法を解説します。TwitterやFacebook向けの一般的なチャットボットとは異なり、WhatsAppは運営ポリシーの関係上、プラットフォーム上で直接ボットを動かすことができません。 しかし、SeleniumというPythonの強力なパッケージを使えば、ブラウザの操作を自動化することでこれを実現できます。Seleniumを利用すれば、ブラウザ経由で「WhatsApp Web」を自由に操作できるのです。 必要なもの 準備が必要なのは、主に以下の3点です。 1. Selenium Seleniumはpip

  2. PythonでのCX_Freezeの使い方:スクリプトを実行ファイル(EXE)に変換する方法

    はじめに 何か面白いものを作りたいという欲求は人間の本能であり、完成したものは誰かに共有したくなるものです。Pythonでもその願いを叶えられます。ただし、作成したPythonスクリプトをそのまま共有するには、相手のマシンにも同じバージョンのPythonと、プログラムで使用しているすべてのモジュールがインストールされている必要があります。 そこで役立つのがCX_Freezeです。このツールを使えば、Pythonがインストールされていない環境でも動作するスタンドアロンの実行ファイル(.exe)を作成できます。 CX_Freezeのインストール まず、コマンドプロンプトで以下のコマンドを実行し、c