Python

【Python】第9章第4回:機械学習(scikit-learnとTensorFlow)

本記事では、Pythonを用いた機械学習の基礎を学びます。代表的なライブラリであるscikit-learnとTensorFlowの基本的な使い方を比較し、簡単な実践例を紹介します。

0. 記事の概要

この記事を読むメリット

  • 機械学習の基礎を理解:データ分析や予測モデルの基本がわかります。
  • scikit-learnとTensorFlowの違いを習得:用途に応じたライブラリの選択が可能になります。
  • 実践スキルの向上:データの前処理からモデル構築までの流れを体験できます。

この記事で学べること

  • 機械学習の基本概念と応用例
  • scikit-learnとTensorFlowの基本的な使い方
  • 簡単な予測モデルの構築と評価方法

1. 機械学習の基本とは?

1.1 機械学習の定義

機械学習とは、データからパターンを学習し、新たなデータに基づいて予測や分類を行う技術です。主な種類として以下が挙げられます。

  • 教師あり学習: ラベル付きデータで学習し、予測を行う。
  • 教師なし学習: ラベルなしデータからパターンを見つける。
  • 強化学習: 試行錯誤を通じて最適な行動を学習する。

1.2 機械学習の応用例

機械学習は、以下の分野で活用されています。

  • 画像認識: 写真から物体を識別。
  • 音声認識: 音声データのテキスト化。
  • レコメンドシステム: 個人に最適化された商品の推薦。

2. scikit-learnとTensorFlowの比較

2.1 scikit-learnの特徴

scikit-learnは、シンプルで使いやすい機械学習ライブラリです。以下の特徴があります。

  • データの前処理が簡単。
  • モデルの実装が直感的。
  • 小規模なデータセットで効果を発揮。

2.2 TensorFlowの特徴

TensorFlowは、ディープラーニングに特化したライブラリで、以下の特徴があります。

  • 大規模なデータセットの処理が得意。
  • GPUを利用した高速処理が可能。
  • 柔軟なモデル設計が可能。

2.3 コード例で比較

# scikit-learnの例
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
import numpy as np

# ダミーデータの作成
X = np.array([[1], [2], [3], [4]])
y = np.array([3, 6, 9, 12])

# データの分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# モデルの作成と学習
model = LinearRegression()
model.fit(X_train, y_train)

# 予測
print(model.predict(X_test))

# TensorFlowの例
import tensorflow as tf
import numpy as np

# ダミーデータの作成
X = np.array([[1], [2], [3], [4]])
y = np.array([3, 6, 9, 12])

# モデルの作成と学習
model = tf.keras.Sequential([tf.keras.layers.Dense(units=1)])
model.compile(optimizer="sgd", loss="mean_squared_error")
model.fit(X, y, epochs=500, verbose=0)

# 予測
print(model.predict(X))
動作解説
  • scikit-learn: 簡潔なコードで線形回帰モデルを構築。
  • TensorFlow: ニューラルネットワークを使用した柔軟なモデル構築。

3. 実践例:分類モデルの構築

3.1 サンプルコード

# scikit-learnで分類モデル
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score

# データセットの読み込み
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2)

# モデルの作成と学習
model = RandomForestClassifier()
model.fit(X_train, y_train)

# 予測と評価
y_pred = model.predict(X_test)
print("Accuracy:", accuracy_score(y_test, y_pred))

4. 練習問題

以下の課題に挑戦してみましょう。

  1. scikit-learnでロジスティック回帰モデルを構築し、評価してください。
  2. TensorFlowでディープニューラルネットワークを作成し、手書き文字データを分類してください。

5. 練習問題の解答と解説

問1の解答例

# ロジスティック回帰モデル
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# データセットの準備
X = np.array([[1], [2], [3], [4]])
y = np.array([0, 0, 1, 1])

# データの分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# モデルの作成と学習
model = LogisticRegression()
model.fit(X_train, y_train)

# 予測
y_pred = model.predict(X_test)
print("Accuracy:", accuracy_score(y_test, y_pred))

6. まとめ

本記事では、機械学習の基本とscikit-learn、TensorFlowを使ったモデル構築について学びました。用途に応じてライブラリを選択し、実践的なスキルを磨いてください。