放射線源の観測データのクラスタリング scikit-learn

放射線源の観測データのクラスタリング

宇宙に関する問題を解決するために、scikit-learnを使用してクラスタリングを行います。

具体的なデータセットとして、宇宙からの放射線源の観測データを考えます。

このデータセットを用いて、放射線源のクラスタを特定し、その結果をグラフ化します。


まず、適切なデータセットを用意しましょう。

宇宙からの放射線源のデータセットは、実際のものではなく、架空のデータセットとして扱います。

以下のサンプルコードでは、make_blobs関数を使用して3つのクラスタを持つデータセットを生成します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans

# 仮想の宇宙からの放射線源データセット生成
X, y = make_blobs(n_samples=300, centers=3, random_state=42, cluster_std=1.0)

# KMeansクラスタリングを実行
kmeans = KMeans(n_clusters=3)
kmeans.fit(X)

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

# データとクラスターセンターをプロット
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis', edgecolor='k', s=50)
plt.scatter(centers[:, 0], centers[:, 1], c='red', marker='X', s=200, label='Cluster Centers')
plt.title('宇宙からの放射線源クラスタリング')
plt.xlabel('放射線源のX座標')
plt.ylabel('放射線源のY座標')
plt.legend()
plt.show()

このサンプルコードでは、make_blobs関数を使用して3つのクラスタを持つデータセットを生成し、KMeansクラスタリングアルゴリズムを適用しています。

結果をプロットすると、各クラスタの中心が赤い”X”で表示され、データ点が色分けされたクラスタに属していることがわかります。

[実行結果]

この例は架空のデータを使用していますが、実際の宇宙データセットを用いることで、クラスタリングアルゴリズムを実際の天文データに適用し、異なる放射線源のグループを発見することができます。

ソースコード解説

このソースコードは、仮想の宇宙からの放射線源データセットを生成し、それにKMeansクラスタリングアルゴリズムを適用して結果を可視化するためのものです。

以下にソースコードの章立てと詳細な説明を示します。

1. ライブラリのインポート

1
2
3
4
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
  • numpy:数値計算を行うためのライブラリ
  • matplotlib.pyplot:グラフの描画や可視化のためのライブラリ
  • make_blobs:クラスタリングのための仮想のデータセットを生成するための関数
  • KMeans:KMeansクラスタリングアルゴリズムを提供するscikit-learnのクラス

2. 仮想の宇宙からの放射線源データセット生成

1
X, y = make_blobs(n_samples=300, centers=3, random_state=42, cluster_std=1.0)
  • make_blobs関数を使用して、3つのクラスタを持つ仮想の宇宙からの放射線源データセットを生成
  • n_samples:データセットのサンプル数
  • centers:生成するクラスタの数
  • random_state:再現性のための乱数シード
  • cluster_std:クラスタの標準偏差

3. KMeansクラスタリングを実行

1
2
kmeans = KMeans(n_clusters=3)
kmeans.fit(X)
  • KMeansクラスを用いてクラスタリングモデルを初期化し、fitメソッドでデータに適用
  • n_clusters:クラスタの数

4. クラスタリング結果を取得

1
2
labels = kmeans.labels_
centers = kmeans.cluster_centers_
  • labels:各データポイントが属するクラスタのラベル
  • centers:各クラスタの中心座標

5. データとクラスターセンターをプロット

1
2
3
4
5
6
7
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis', edgecolor='k', s=50)
plt.scatter(centers[:, 0], centers[:, 1], c='red', marker='X', s=200, label='Cluster Centers')
plt.title('宇宙からの放射線源クラスタリング')
plt.xlabel('放射線源のX座標')
plt.ylabel('放射線源のY座標')
plt.legend()
plt.show()
  • plt.scatterを使用してデータポイントを散布図としてプロット
  • c=labelsによりクラスタごとに色分けし、cmap='viridis'でカラーマップを指定
  • plt.scatterでクラスターセンターを赤い”X”でプロット
  • グラフのタイトル、軸ラベル、凡例を設定
  • plt.show()でグラフを表示

このソースコードは、データの生成からKMeansクラスタリングの実行、結果の可視化までを一貫して実施しています。

最終的なグラフでは、異なるクラスタのデータポイント各クラスタの中心が視覚的に表示され、クラスタリングの効果が確認できます。

結果解説

[実行結果]

上記のグラフは、宇宙からの放射線源のクラスタリング結果を可視化したものです。

以下に各要素の説明を記載します。

1. データポイント:

  • 散布図上に散らばる点は、仮想の宇宙からの放射線源を表しています。
    各点はデータセット内の1つの観測データを表し、その座標は宇宙の座標を模しています。

2. クラスタ:

  • 色分けされた領域は、KMeansクラスタリングアルゴリズムによって同じクラスタに分類されたデータポイントを示しています。
    この例では3つのクラスタがあり、それぞれ異なる色で表されています。
    各クラスタは同じ色で示され、その色はcmap='viridis'によって指定されています。

3. クラスターセンター:

  • 赤い”X”は各クラスタの中心を示しています。
    これらの点は、KMeansアルゴリズムによって見つかったクラスタの中心座標です。

4. グラフタイトルと軸ラベル:

  • グラフのタイトルは宇宙からの放射線源クラスタリングとなっており、軸ラベルはそれぞれ放射線源のX座標放射線源のY座標です。

このグラフを見ると、KMeansクラスタリングがデータセットを3つの異なるクラスタに効果的に分類していることがわかります。

各クラスタの中心(赤い”X”)は、そのクラスタのデータポイントが集まる中心点を表しています。

このような可視化を通じて、異なる放射線源のグループどのように分布しているかを把握することができます。