非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【Python/scikit-learn】make_blobsを使って機械学習用テストデータ作成する

   

make_blobs関数は、Scikit-learnのdatasetsモジュールに含まれており、クラスタリングや分類のテスト用に人工的なデータセットを簡単に作成するために使用されます。複数のクラスターを持つデータを作成するのに非常に便利です。

make_blobs関数の主なパラメータ

  • n_samples: 生成するサンプル数を指定します。例えば、n_samples=100は100個のデータポイントを生成します。
  • centers: 生成するクラスタの数、もしくはクラスタの中心位置を指定します。centers=3と指定すると、3つのクラスタを持つデータが作成されます。
  • n_features: 特徴量の数を指定します。デフォルトは2です。
  • cluster_std: 各クラスターの標準偏差を指定し、クラスターの広がり具合を調整します。
  • random_state: 同じデータセットを再現するためのシード値を指定します。

簡単なプログラム例

以下のコードは、make_blobsを使って2つのクラスターを持つデータを生成し、そのデータを可視化する例です。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs

# make_blobsを使ってデータを生成
X, y = make_blobs(n_samples=100, centers=2, n_features=2, random_state=42)

# データをプロット
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='viridis')
plt.title("Generated Data using make_blobs")
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.show()
 

 

プログラムの説明

データの生成:

make_blobs(n_samples=100, centers=2, n_features=2, random_state=42)により、100個のサンプルが2つのクラスターに分かれた2次元データを生成しています。
Xには生成されたデータポイント(座標)が格納され、yには各データポイントが属するクラス(0または1)が含まれています。

データのプロット:

plt.scatterを使って、生成されたデータをプロットしています。c=yにより、クラスごとに異なる色で描画されています。

 

出力結果のイメージ

上記のコードを実行すると、2つのクラスターに分かれたデータが散布図として表示されます。クラスターの中心が明確に異なることが確認できます。

 

make_blobsはデータ生成が簡単で、機械学習アルゴリズムをテスト・学習する際にとても便利なツールです。

 

スポンサーリンク

 - Python