忍者ブログ

めもめも ...〆(。_。)

認知心理学・認知神経科学とかいろいろなはなし。 あるいは科学と空想科学の狭間で微睡む。

2017/12    11≪ 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  ≫01
ちまちまいじっていたRのプログラムのうち1つがちゃんと通るようになったので晒し上げ。
今回作ったのは、てけとーなデータからコサイン類似度を計算するもの。
自作関数とかめんどいので中身べた貼り。
「動きゃいーのよ」が開発理念ゆえに、だいぶぶさいくなコードですが自分が満足すればそれでいいのです。
参考にしたのはここ(http://isyus2.yz.yamagata-u.ac.jp/xoops/modules/pukiwiki/index.php?cmd=read&page=R%B8%C0%B8%EC%A4%CE%A5%E1%A5%E2%BD%F1%A4%AD&word=)。

data <- read.csv("調べるデータの名前.csv", header =T)
#ちなみにデータは、1行目に項目名、列ごとに各項目のデータが入るようにしてある

labeldata <- read.csv("Labels.csv", header =T)
names(labeldata)
#いろいろいじるので、めんどくさくなってラベル用にラベル(項目名)だけ書いたCSV用意しちゃった。てへ。
#ちなみに元データから抜き出す方法だと行番号がずれて、修正しようにも収拾つかなくなったので苦肉の策。

distmat1 <- diag(ncol(data))
#コサイン類似度出力用。おなじものは1になるのであらかじめ単位行列として作る

#コサイン類似度を計算。型変換しないとつまるので、ぶさいくながらこまめに変数にする

for (i in 2:nrow(distmat1)) {
  for (j in 1: (i -1)) {

  temp1 <- as.matrix(data[ ,j])
  temp2 <- as.matrix(data[ ,i])
  tempdot <- crossprod(temp1, temp2)
  tempprod1 <- as.numeric(crossprod(temp1))
  tempprod2 <- as.numeric(crossprod(temp2))
  tempcos <- tempdot /sqrt(tempprod1 * tempprod2)

distmat1[i, j] <- tempcos

  }
}

#計算していない上半分を下半分からコピーして対称行列にする
distmat2 <- distmat1 + t(distmat1)
diag(distmat2) <- diag(distmat2)/2

#クラスター分析用にコサイン類似度の距離に変換(要するに1から引き算)

onemat <- matrix(1, ncol(distmat2), nrow(distmat2))
#引き算用1だけ行列

distmat3 <- onemat - distmat2
#これが距離行列になる


#おまけのクラスター分析
(このへんはこの過去めもを参照)
AD <- as.dist (distmat3)
result1 <- hclust(AD, method ="ward")
plot(result1, labels=labeldata$ラベル用のデータのラベル)
#このlabelsをつけておかないと、plotが数字(order)だけの図になってしまう


だいたいこんなかんじ。
ちなみに、Rのdist関数はユークリッド距離と最大距離とマンハッタン距離とミンコフスキー距離と、あとなんかcanberraとかbinaryとかいうのならデフォルトで対応しているそうな。
http://127.0.0.1:23392/library/stats/html/dist.html
まあ要するにそれ以外なら自力でなんとかせんといかんということかいのう。
まあいいや。
だいたいでいいや。

この記事にコメントする
              
お名前
タイトル
メールアドレス
URL
カラー
絵文字 Vodafone絵文字 i-mode絵文字 Ezweb絵文字
コメント
非公開 管理人のみ閲覧できます
パスワード   
* コメントの編集にはパスワードが必要です
この記事にトラックバックする
トラックバックURL:
カレンダー
11 2017/12 01
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
カテゴリ説明
もっさり:日々の雑感をもっさり。
がっつり:論文や研究関連をがっつり。
びっくり:科学ニュースでびっくり。
まったり:空想科学などでまったり。
ばっかり:デザイン系自己満足ばっかり。
ほっこり:お茶を嗜んでほっこり。
最新コメント
※SPAMが多いのでhttpを含むコメントと英語のみのコメントを禁止しました※
[05/07 ぱるぱる]
[05/06 ぱるぱる]
[05/06 ぱるぱる]
[08/29 初見名無し]
[06/25 あ]
最新トラックバック
プロフィール
HN:
az
性別:
非公開
自己紹介:
興味のあるトピックス
 分野は視覚認知。視知覚にがて。
 あと記憶全般。
 カテゴリ (semanticsか?) とかも。
 最近デコーディングが気になる。
 でも基本なんでもこい。
 好奇心は悪食。

好きな作家(敬称略)
 川上弘美
 小林秀雄
 津原泰水
 森茉莉
 レイ・ブラッドベリ
 イタロ・カルヴィーノ
 グレッグ・イーガン
 シオドア・スタージョン
バーコード
ブログ内検索
カウンター
フリーエリア
PR
<< Back  | HOME |   Next >>
Copyright ©  -- めもめも ...〆(。_。) --  All Rights Reserved
Designed by CriCri / Material by もずねこ
忍者ブログ  / Powered by [PR]