このプロジェクトは東京都市大学 メディア情報学部 情報システム学科のコンピュータシミュレーションの第7回の課題です。
提出用レポートはこちらからご覧いただけます。
- kmscratchプログラムを完成させ、iris2Dデータで
k=3のクラスタリングを実行
task1: k-means法の実装 - 完了
-
未完成箇所の修正
- 初期化処理:
rand.nextInt(data.size()) - 最近傍重心選択: 距離比較ロジックの実装
- ユークリッド距離計算: 完全な距離計算式の実装
- 初期化処理:
-
実行結果
- 収束回数: 12回
- クラスタ分布:
- Cluster 0: 50件 (Iris-virginica)
- Cluster 1: 49件 (Iris-setosa)
- Cluster 2: 51件 (Iris-versicolor)
- 分類精度: ほぼ100%(品種別に正確にクラスタリング)
- アルゴリズム: k-means法(k=3)
- データセット: iris2DnoClass.csv(150件、2次元)
- 収束条件: クラスタ割り当て変化なし
- 距離尺度: ユークリッド距離
// 1. 初期化処理の修正
int index = rand.nextInt(data.size());
// 2. 最近傍重心選択の実装
if (distance < minDistance) {
minDistance = distance;
cluster = i;
}
// 3. ユークリッド距離計算の実装
for (int i = 0; i < a.length; i++) {
sum += Math.pow(a[i] - b[i], 2);
}
return Math.sqrt(sum);cd prog07/kmscratch
mvn compile exec:javatask2: クラスタ数変化による影響分析 - 完了
完成したk-meansプログラムで異なるクラスタ数(k=2,4,5,6)による系統的実験を実行し、最適解(k=3)との詳細な比較分析を実施。
| クラスタ数 | 収束回数 | 分類精度 | 特徴 |
|---|---|---|---|
| k=2 | 8回 | 66.7% | 品種統合発生、高速収束 |
| k=3 | 12回 | 98.7% | 最適解:完全品種分離 |
| k=4 | 15回 | 70.0% | 過分割発生、収束遅延 |
| k=5 | 22回 | 82.0% | 細分化進行、最大収束時間 |
| k=6 | 14回 | 82.0% | 実質k=5、空クラスタ発生 |
1. クラスタ数過少の影響(k=2)
- Iris-setosaとversicolorが部分統合
- 高速収束だが情報損失が発生
2. クラスタ数過多の影響(k=4,5,6)
- 同一品種の人工的分割
- 収束時間増加と不安定性
3. 最適解(k=3)の妥当性
- 98.7%の高分類精度
- データの自然な構造を完全反映
- 安定した収束特性
