TechCraft – エンジニアのためのスキルアップメモ

エンジニアのスキルアップを少しでも加速する技術ブログ

初めての機械学習 分類編

初めての機械学習:分類タスクを学ぶ

はじめに

機械学習はデータからパターンを学び、予測や分析を行う技術です。その中でも「分類(Classification)」は、与えられたデータを事前に定めたカテゴリに分類する手法であり、メールのスパム判定や画像認識など、多くの分野で活用されています。

本記事では、Pythonを使ってシンプルな分類タスクを実装し、機械学習の基本を学びます。


1. 機械学習における分類とは?

分類とは、ある入力データを特定のカテゴリに振り分けることを指します。例えば:

  • スパムメール判定:メールが「スパム」か「非スパム」かを分類

  • 手書き数字認識:手書きの画像を「0~9」の数字に分類

  • 病気診断:患者のデータを基に「病気あり・なし」を判定

分類の種類

  1. 二値分類(Binary Classification)

    • クラスが2つのケース(例:スパム or 非スパム)
  2. 多クラス分類(Multi-class Classification)

    • 3つ以上のクラスを予測(例:手書き数字認識)
  3. 多ラベル分類(Multi-label Classification)

    • 1つのデータが複数のカテゴリに属する(例:タグ付け)

2. 環境準備

機械学習を実行するために、Pythonと以下のライブラリをインストールします。

必要なライブラリのインストール

以下のコマンドを実行してください。

pip install numpy pandas scikit-learn matplotlib seaborn

ライブラリの説明 - numpy数値計算用ライブラリ
- pandas:データ操作用ライブラリ
- scikit-learn機械学習ライブラリ
- matplotlib / seaborn:データの可視化


3. 分類タスクの実装(Irisデータセット

ここでは、有名な Iris(アヤメ)データセット を使って、分類タスクを行います。

データセットの概要

Irisデータセットは、3種類のアヤメ(setosa, versicolor, virginica)の花の特徴(がく片・花弁の長さと幅)を持つデータで、分類の入門としてよく使われます。

コード実装

データの読み込み

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris

# データセットをロード
iris = load_iris()
df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
df['target'] = iris.target  # 0: setosa, 1: versicolor, 2: virginica

# データの最初の5行を表示
print(df.head())

データの可視化

# クラスごとの散布図を表示
sns.pairplot(df, hue="target", palette="Set2")
plt.show()

4. モデルの訓練と評価

データの分割

まず、データを学習用とテスト用に分割します。

from sklearn.model_selection import train_test_split

# 特徴量(X)とラベル(y)を定義
X = df.drop(columns=["target"])
y = df["target"]

# 80%を学習用、20%をテスト用に分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

モデルの選択と学習

ここでは ロジスティック回帰(Logistic Regression) を使います。

from sklearn.linear_model import LogisticRegression

# モデルの作成と訓練
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)

# テストデータで予測
y_pred = model.predict(X_test)

モデルの評価

from sklearn.metrics import accuracy_score, classification_report

# 精度の表示
accuracy = accuracy_score(y_test, y_pred)
print(f"モデルの精度: {accuracy:.2f}")

# 詳細なレポート
print(classification_report(y_test, y_pred, target_names=iris.target_names))

5. 予測の実行

学習済みモデルを使って、新しいデータを分類してみます。

new_sample = np.array([[5.1, 3.5, 1.4, 0.2]])  # setosa の特徴量
prediction = model.predict(new_sample)
print(f"予測されたクラス: {iris.target_names[prediction[0]]}")

6. まとめ

本記事では、機械学習の「分類」について学び、Irisデータセットを用いた実装を行いました。まとめると:
1. 分類とは? データをカテゴリに分ける手法
2. Irisデータセットの概要 3種類のアヤメを分類
3. データの可視化 クラスごとの特徴を分析
4. モデルの学習と評価 ロジスティック回帰を使用
5. 予測の実行 学習済みモデルで新しいデータを分類

次に学ぶべきこと

分類の基礎を理解したら、実際のデータを使って試してみましょう!


参考資料