分類とクラスタリング | 教師あり学習と教師なし学習 | Python本格超入門

現在作成中です。今後加筆修正してまいります。
スポンサーリンク
スポンサーリンク

分類とクラスタリング – 教師あり学習と教師なし学習

機械学習では、データを理解し予測するためにさまざまなアルゴリズムが用いられます。教師あり学習では分類が、教師なし学習ではクラスタリングが一般的なタスクです。本記事では、分類とクラスタリングについて、それぞれの基本的な考え方とPythonでの実装方法を解説します。

分類とは(教師あり学習)

分類とは、事前に与えられたラベル(クラス)をもとに、新しいデータをどのラベルに属するか予測するタスクです。分類は、メールのスパム判定や画像の識別など、様々な現実世界の問題に応用されます。

クラスタリングとは(教師なし学習)

クラスタリングとは、データを事前に与えられたラベルなしで、似た特徴を持つデータ同士をグループ化(クラスタ)するタスクです。クラスタリングは、マーケティングにおける顧客のセグメンテーションなどに応用されます。

分類の実装例:Irisデータセットでの分類

Scikit-learnを使用して、分類の例としてIrisデータセットを扱います。このデータセットには、3種類のアヤメ(Iris)の分類タスクが含まれています。

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 = iris.data  # 特徴量
y = iris.target  # 目的変数(ラベル)

# データをトレーニングデータとテストデータに分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# ランダムフォレスト分類器を使って学習
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)  # モデルをトレーニングデータで学習

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

# モデルの精度評価
accuracy = accuracy_score(y_test, y_pred)
print(f"分類モデルの正解率: {accuracy * 100:.2f}%")

クラスタリングの実装例:K-meansを使ったクラスタリング

次に、教師なし学習の例として、K-means法を使ったクラスタリングの例を紹介します。

from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# データセットの読み込み
iris = load_iris()
X = iris.data  # 特徴量

# K-meansクラスタリングを適用
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)

# クラスタリング結果の取得
labels = kmeans.labels_

# クラスタリング結果を可視化
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
plt.title('K-meansクラスタリング結果')
plt.xlabel('特徴量1')
plt.ylabel('特徴量2')
plt.show()

コードの説明

  • load_iris(): Irisデータセットをロードします。このデータセットは、教師あり学習でもクラスタリングでもよく使われます。
  • train_test_split(): データをトレーニング用とテスト用に分けます。
  • RandomForestClassifier(): ランダムフォレストを使用した分類器です。
  • KMeans(): K-meansクラスタリングアルゴリズムを使用して、データをクラスタリングします。
  • plt.scatter(): Matplotlibを使ってクラスタリングの結果を可視化します。

分類とクラスタリングの違い

分類(教師あり学習) クラスタリング(教師なし学習)
事前にラベルが与えられており、そのラベルに基づいて予測 ラベルが事前に与えられず、データを自動でグループ化
正解ラベルと照らし合わせて予測の精度を評価 データの類似性に基づいてグループ分けを評価

まとめ

分類とクラスタリングは、教師あり学習と教師なし学習の代表的なタスクです。分類では事前に与えられたラベルを元に新しいデータを予測し、クラスタリングではラベルがないデータをグループ化します。これらの手法は、異なる目的に応じて使い分けられ、現実のデータ分析や予測に大いに役立ちます。