差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
mselab:2012:stat:week3:r2 [2012/12/18 10:32] – [最終課題] watalumselab:2012:stat:week3:r2 [不明な日付] (現在) – 外部編集 (不明な日付) 127.0.0.1
行 1: 行 1:
 ===== 統計工学実験 第3週 ===== ===== 統計工学実験 第3週 =====
 +==== 連絡 ====
 +
 +  * [[mselab:2012:stat:week3:r2#k-means法による層別_itermax追加_nstart削除|実験室で発生したkmeans関数についての不具合へ対応]]を追記。
 ==== 最終課題 ==== ==== 最終課題 ====
  
行 552: 行 555:
 |提出部数|レポートは各自1通ずつ。{{:mselab:report-header-2012.doc|レポートの表紙}}に、共同実験者の学籍番号と氏名を記すこと。| |提出部数|レポートは各自1通ずつ。{{:mselab:report-header-2012.doc|レポートの表紙}}に、共同実験者の学籍番号と氏名を記すこと。|
  
 +
 +==== 実験当日の修正 ====
 +
 +自分のMacだと問題が発生せず、実験室のPCだとRが落ちる不具合があります。メモリが少ないためかもしれません。Rが勝手に終了する場合には、kmeansのコードは次のように nstart を削除し、iter.max を追加する修正をお願いします。
 +
 +=== k-means法による層別 (iter.max追加、nstart削除) ===
 +
 +k-means法は、数値変数でしか用いられないため、データは「tic.learn[, c(1:85)]」と数値変数のフィールドを指定してkmeans()関数を実行する。
 +<code>
 +tic.learn.kmeans <- kmeans(tic.learn[, c(1:85)], centers=2, iter.max=100)
 +</code>
 +
 +k-means法の結果を適用するには、レコードごとに「centers」の座標とのユークリッド距離を算出し、一番小さくなる層にその変数を割り当てる。
 +
 +<code>
 +date()
 +tic.learn$cluster <- rep(0, dim(tic.learn)[1] )
 +for( i in c(1:dim(tic.learn)[1]) ) {
 +  tic.kmeans.dist <- rep(0, max(tic.learn.kmeans$cluster) )
 +  for( j in c(1:max(tic.learn.kmeans$cluster)) ) {
 +    tic.kmeans.dist[j] <- sum( (tic.learn[i,c(1:85)]-tic.learn.kmeans$center[j,])^2 )
 +  }
 +  tic.learn$cluster[i] <- sort.list(tic.kmeans.dist)[1]
 +}
 +date()
 +</code>
 +
 +念のため、kmeansの結果と比較して、計算に誤りがないことを確認するためにクロス集計を行う。この結果が対角であれば、計算はあっている。
 +
 +<code>
 +table(tic.learn$cluster,tic.learn.kmeans$cluster)
 +</code>
 +
 +centers=に指定する値は、いろいろ変えてみるといい。