研究日記

学習内容の記録です。わからないことばかりです。

Rによるクラスター分析【ユークリッド距離】

いよいよRによるクラスター分析を行う。その前にクラスター分析について簡単にまとめる。

クラスター(cluster)とは、英語で房、群れ、集団という意味があり、異なる性質のものが混ざり合った集団の中から、互いに似た性質のものを集め、似た者同士の集団を作り出し、分類する分析手法である。これはあらかじめ分類の基準が決まっているわけではなく、あくまでも似た者同士で集団を作り分類する分析方法である。

クラスター分析についてわかりやすくまとめてあるサイトを見つけたので参考までにURLを↓

www.albert2005.co.jp

今進めている研究では、とりあえずクラスター分析を試してみるという意味も含めて、クラスター分析の中でも有名なユークリッド距離を計算して分類をおこなう。

ユークリッド距離については省略するが、一応URLを↓

ユークリッド距離 - Wikipedia

さすがはR、ユークリッド距離計算も非常に簡単、たった1行である!!

distance <- dist(data)

これで、distanceという変数にdataの中に入っているデータのすべての組み合わせの距離計算結果が入っている。dist 関数、非常に便利である。恐るべきRの便利さ。

ちなみにこの結果を出力してみると、

f:id:kento12021:20180514195220p:plain

こんな感じ。dataの中に24のプロジェクトデータが入っていたため、このようにすべてのユークリッド距離計算結果が出力される。

さて、ここからいったんこの計算結果をファイルに出力しようと思う。

dist 関数は結果を行列でもデータフレームでもなく、dist クラスのオブジェクトとして返す。ファイルに出力するのは write.scv() 関数を用いようと思っているので、as.matrix() 関数を用いてオブジェクトを行列に変換し、出力する。

data.matrix <- as.matrix(distance)
write.csv(data.matrix,file="Euclidian_Result.csv")

とりあえずこんな感じにしてみた。ここまでRを使ってきた感覚から、もっとコードをすっきりかけるんだろうと思いながらいったん実行。するときちんとファイルが生成されていた。中身を確認すると、

f:id:kento12021:20180514203438p:plain

こんな感じに。もともと dist 関数使用した結果のものは下三角行列のようになっていたものが as.matrix 関数使用後は対称行列に変換され出力されていた。

とりあえず目標としていたところまでこれたのでひと段落。