二分木のツリーマップ
前回解説した階層的クラスタリングでは,
それでは早速,
1. ツリーマップの各領域の面積を決めるため,
2. ツリー全体を格納する大きな長方形を用意する。
3. 長方形を,
このとき,
- 現在の長方形が横長ならば,
左右に分割する - 現在の長方形が縦長ならば,
上下に分割する
4. 分割後の長方形と対応する子ノードについて,
処理対象のツリー構造を二分木に限定した場合,
階層的クラスタリングの手直し
ツリーマップの描画に先立って,
ノードサイズの導入
クラスタリングのノードを示すNodeインターフェイスに,
リスト1 Node.
public interface Node {
List getVectors();
double getArea();
}
このgetArea()メソッドを,
リスト2 Item.
public class Item {
private String name;
private MultiVector vector;
private double area;
public Item(String name, MultiVector vector, double area) {
this.name = name;
this.vector = vector;
this.area = area;
}
public double getArea() { return area; }
...
}
次にClusterクラスでは,
リスト3 Cluster.
public class Cluster {
private Node left;
private Node right;
public double getArea() {
return left.getArea() + right.getArea();
}
...
}