【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. 練習問題
以下の課題に挑戦してみましょう。
- scikit-learnでロジスティック回帰モデルを構築し、評価してください。
- 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を使ったモデル構築について学びました。用途に応じてライブラリを選択し、実践的なスキルを磨いてください。