2017年1月22日日曜日

RStudio(6) 主成分分析

同じデータを使って、主成分分析をしてみます。

(1) 主成分分析と結果表示
> pca = prcomp(mysql.data, scale=T)
> pca
Standard deviations:
[1] 1.975518e+00 9.990073e-01 8.719685e-01 4.861895e-01 3.203194e-01 9.360556e-17

Rotation:
              PC1         PC2        PC3        PC4        PC5           PC6
attack  0.4791741  0.26177801  0.1414014 -0.1114532  0.4116410 -7.071068e-01
defence 0.3242376 -0.59300772  0.4823898 -0.4732681 -0.2941584 -2.775558e-16
hp      0.4446784  0.31883359  0.1833250  0.4955173 -0.6492002 -1.942890e-16
exp     0.3375002 -0.63857845 -0.2930024  0.5665881  0.2672801  1.387779e-16
gold    0.3521494  0.04300123 -0.7796492 -0.4296676 -0.2857877 -6.938894e-17
water   0.4791741  0.26177801  0.1414014 -0.1114532  0.4116410  7.071068e-01

これで主成分得点が得られました。累積寄与率を確認します。
> summary(pca)
Importance of components:
                          PC1    PC2    PC3    PC4    PC5       PC6
Standard deviation     1.9755 0.9990 0.8720 0.4862 0.3203 9.361e-17
Proportion of Variance 0.6504 0.1663 0.1267 0.0394 0.0171 0.000e+00
Cumulative Proportion  0.6504 0.8168 0.9435 0.9829 1.0000 1.000e+00

主成分2(PC2)までで81.68%なので、主成分2まで利用します。
これを表示します。
> biplot(pca)
とっても見づらいグラフなので、改善しないとです。

[PCA.R]


参考
http://bio-info.biz/tips/r_pca.html
http://www.casleyconsulting.co.jp/blog-engineer/%E3%83%87%E3%83%BC%E3%82%BF%E8%A7%A3%E6%9E%90/r%E3%81%A7%E4%B8%BB%E6%88%90%E5%88%86%E5%88%86%E6%9E%90/
http://d.hatena.ne.jp/pokepen/20130527/1369635976

2017年1月20日金曜日

RStudio(5) Cluster分析

前回と同じデータを使ってCluster分析をしてみます。

(1)凝集型階層
> library(cluster)
> cluster.agnes <- agnes="" mysql.data="" span="" stand="T)">> plot(cluster.agnes, which = 2, main = "", xlab = "", ylab = "")

(2) 区分型階層
> cluster.diana <- diana="" mysql.data="" span="" stand="T)">> plot(cluster.diana, which = 2, main = "", xlab = "", ylab = "")


(3) k-means法
> cluster.kmeans = kmeans(dist(mysql.data), 6)
> cluster.kmeans$cluster
 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 32 33 34 35 36 37 38 39 40 
 5  5  5  5  5  5  5  5  5  5  5  1  1  1  1  1  6  1  3  3  3  3  3  3  2  4  4  4  4  4  4  4  4  4  4  4  4  4  2  6 
> cluster.kmeans$size
[1]  6  2  6 13 11  2
> cluster.kmeans$withinss
[1]  57677.519   5325.897  82998.094 383242.093  83159.601 102326.957 
> clusplot(mysql.data, cluster.kmeans$cluster, color=TRUE, shade=TRUE, labels=2, lines=0)

 (4) 階層クラスタリング
> rect.hclust(hclust(dist(mysql.data), method="ward.D"), k = 5, border = "red")

[Cluster.R]


参考
http://catcher-in-the-tech.net/2035/
http://d.hatena.ne.jp/maito610/20120810/p1

RStudio(4) 基本データ解析

データをデータベースまたはCSVなどから持ってきて、基本データ解析をします。
(1) データの用意
まずプロジェクトを作成しておきます。
今回データベースからのデータを使うので、DBIとRMySQLライブラリを入れておきます。
library("DBI", lib.loc="/usr/lib64/R/library")
library("RMySQL", lib.loc="/usr/lib64/R/library")

データベースからデータを取るスクリプトを作っておきます。
[MySQL.R]


> source('MySQL.R')
> mysql.connect()
> mysql.getSelect()

スクリプトを作る時に、"<<"はグローバル変数に代入します。

(2) 基本解析
(i) summary
summary関数を使って、その結果をcsvに保存します。
> summary(mysql.data)
> write.csv(summary(mysql.data), file="summary.csv") 

(ii) boxplot
> boxplot(mysql.data)

(iii) hist
> hist(mysql.data$attack, col = "orange", main = 'Histgram', labels=T, xlab="range")






(iv) 相関係数行列
> install.packages("psych")
> library(psych)
> pairs.panels(mysql.data)

(v) 無向グラフ
これはpackageで”qgraph"を利用するが、CentOSの場合はyumでライブラリを入れておく必要がある。
# yum install libxml2-devel
# yum install libjpeg-devel
# yum install libpng-devel
> install.packages("qgraph")    (時間がかかる) 
> library(qgraph)
> qgraph(cor(mysql.data),edge.labels=T)

(vi) ヒートマップ
> cor.plot(cor(mysql.data),numbers=T)

(vii) 主座標分析
> plot(cmdscale(dist(cor(mysql.data))),type="n",xlab="", ylab=""); 
> text(cmdscale(dist(cor(mysql.data))),rownames(cor(mysql.data)))

これらをスクリプトにしたものが次になります。
[Basic.R]


参考
http://kusanagi.hatenablog.jp/entry/2014/07/23/220951

2017年1月5日木曜日

Android講座について

Android講座の内容です。
[Androidアプリ作成講座 : クラウド連携編]
  1. イントロダクション(1〜2日目)
    1.  Android : GPS取得+地図表示(Google Map API利用)
    2.  Android : 動画再生
    3.  Android : 端末情報取得
    4.  Android : グラフ作成
    5.  Android : 音声認識
    6.  Android : 描画
    7.  Android : カメラ
    8.  Android : 非同期クラス(Web連携)
    9. Webサーバ構築 : Cakephp
  2. Android実習(〜2日目)
    1. GPSアプリ : (GPS情報アップロード, 履歴表示, 距離計測, グラフ表示)
    2. チャットアプリ : (認証, DBアップロード, CRUD, 音声認識)
  3. Android実習(3日目)
    1. タイムスタンプアプリ(動画再生, 座標取得, 描画, DBアップロード, 履歴表示)
    2. 物体認識アプリ(カメラ, 画像アップロード, DBアップロード, API利用) 
 こんな感じで仕上げていこうと思います。