私はR(http://www.stat.washington.edu/mclust)のmclustライブラリを使って、実験的なEMベースのGMMクラスタリングを行っています。パッケージは素晴らしいですし、私のデータのために非常に良いクラスターを見つけるのが一般的です。mclustの結果をファイルに書き込むにはどうしたらいいですか?
問題は、私は本当にRを知らないし、help()の内容と豊富なreadmeに基づいてクラスタリングプロセスを混乱させてしまったが、私の人生は分からない実際のクラスタ結果をファイルに書き出す方法。私はクラスタリングを実行するために次のばかげた単純なスクリプトを使用しています。
myData <- read.csv("data.csv", sep=",", header=FALSE)
attach(myData)
myBIC <- mclustBIC(myData)
mySummary <- summary(myBIC, data=myData)
この時点で私はクラスタ結果と要約を持っています。 data.csvのデータは、1行に1つずつ、多次元点のリストにすぎません。したがって、各行は 'x、y、z'(3次元の場合)のように見えます。
2次元の点(xとyの値など)を使用すると、内部プロット関数を使用して、割り当てられたクラスターに基づいて元の点とカラーコードをプロットする非常に美しいグラフを得ることができます。ですから、私はすべての情報が 'myBIC'のどこかにあることを知っていますが、ドキュメントやヘルプはこのデータをどのように印刷するかについての洞察を提供していないようです。
私はmyBICでエンコードされていると思われる結果に基づいて新しいファイルをプリントアウトします。何かのように、
CLUST x, y, z
1 1.2, 3.4, 5.2
1 1.2, 3.3, 5.2
2 5.5, 1.3, 1.3
3 7.1, 1.2, -1.0
3 7.2, 1.2, -1.1
、その後 - うまくいけば - また、パラメータをプリントアウト/クラスタリング処理が見つかった個々のガウス/クラスタの重心。
確かにこれを行うのはばかばかしいほど簡単なことであると私は...
EDITをそれを把握するためにRのあまりにも無知だ:私はさらに沿って少し得ているように見えます。私が実現反射時いくらか不可解マトリックス、
> mySummary$classification
[1] 1 1 2 1 3
[6] 1 1 1 3 1
[12] 1 2 1 3 1
[18] 1 3
次印刷を行うと、実際のサンプルとその分類のリストです。私は書き込みコマンドを経由してこれを直接書き込むことはできません推測するが、Rコンソールでもう少し実験が、私はこれを行うことができますことを実現するために私を導く:
> newData <- mySummary$classification
> write(newData, file="class.csv")
、結果は実際にはかなり良さそうだということ!最初の列はapparenly入力データのインデックスと一致し、第2列は、割り当てられたクラスIDを記述する
$ head class.csv
"","x"
"1",1
"2",2
"3",2
。
'mySummary $ parameters'オブジェクトはネストされているように見えますが、個々のガウス関数とそのパラメータなどに対応するサブオブジェクトの束があります。書き出ししようとすると 'write'関数が失敗します個々のサブオブジェクト名を個別に書き出すのはちょっと面倒です。どのようにしてRの入れ子になったオブジェクトを反復処理し、要素をファイル記述子にシリアル形式で出力するのですか?
私はこの 'mySummary $ parameters'オブジェクトを持っています。これは、 'mySummary $ parameters $ variance $ sigma'などのいくつかのサブオブジェクトで構成されています。すべてを繰り返し処理して、これをCLIに自動的に行われるのと同じ方法でファイルに出力します。
恐ろしい!詳細な作業をしてくれてありがとう。 Rの癖に慣れるにはしばらく時間がかかるだろうと思う。これは、何が起こっているかについて私にいくつかの重要な洞察を与えました。私はまた、Rについて何も知らないうちに、私が何とかやっていたことにかなり驚きました。もう一度ありがとう。 – si28719e
私はあなたのことと同じようにRに落ちたので、あなたが何を意味しているのか知っています。私が最初に始めたときに私のキーボードを叩いているような感じでした:P Good luck! –
コメントは "+1"& "ありがとう"を避けるべきだと知っていますが、 'myData $ CLUST < - myMclust $ classification'&' myMclust < - Mclust(myData、modelNames = "EEI") 'は美しいです必要です。また、各レコードのクラスタメンバーシップの相対的な確率を調べるために、zスコア( 'MyData $ PROB < - MyClust $ z')を追加しました。 – NiuBiBang