初めての機械学習:分類タスクを学ぶ
はじめに
機械学習はデータからパターンを学び、予測や分析を行う技術です。その中でも「分類(Classification)」は、与えられたデータを事前に定めたカテゴリに分類する手法であり、メールのスパム判定や画像認識など、多くの分野で活用されています。
本記事では、Pythonを使ってシンプルな分類タスクを実装し、機械学習の基本を学びます。
1. 機械学習における分類とは?
分類とは、ある入力データを特定のカテゴリに振り分けることを指します。例えば:
スパムメール判定:メールが「スパム」か「非スパム」かを分類
手書き数字認識:手書きの画像を「0~9」の数字に分類
病気診断:患者のデータを基に「病気あり・なし」を判定
分類の種類
二値分類(Binary Classification)
- クラスが2つのケース(例:スパム or 非スパム)
多クラス分類(Multi-class Classification)
- 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. 予測の実行 学習済みモデルで新しいデータを分類
次に学ぶべきこと
分類の基礎を理解したら、実際のデータを使って試してみましょう!