2017年11月28日火曜日

R : 有向、無向グラフの描画

Rで有向、無向グラフの描画をするのにigraphパッケージを利用します。
(1) igraphのインストール、読み込み
install.packages("igraph")
library(igraph)
インストールは時間がかかりました。

(2)データの作成
エクセルでデータを作成します。今回は隣接行列(0 or 1)とします。
例えばエクセルで15×15の 0 or 1の行列を作っておきます( =RANDBETWEEN(0,1)を使いました)
これをgraph.csvとして文字コード:UTF-8、改行コード:LFにしてアップロードします。
 csvを取り込みます。



(2) グラフ描画

graph = as.matrix(graph)
plot(graph.adjacency(graph,mode="undirected",weighted=NULL))


(3) ノードの大きさの変更
csvに行和の合計を追加して、アップロードします。この行和が大きいほど他との関係も強いとします。
これをgraph01に取り込みます。そしてグラフ描画用のgraph01_1も用意しておきます。
graph01_1 = as.matrix(graph01[,1:15])
 グラフを描きます。
plot(graph.adjacency(graph01_1,mode="undirected",weighted=NULL),vertex.size=graph01$sum*4,edge.arrow.size=0.5)

 参考
http://www.shizukalab.com/toolkits/sna/sna_data
https://qiita.com/tomov3/items/c72e06eaf300b322e99d

2017年11月24日金曜日

RStudio : グラフの日本語利用

RStudioでデータの取り込みには日本語ができていたのですが、グラフ中では文字化けしてしまい、次の段取りで日本語を利用できるようにしました。
(1)日本語ライブラリの導入
# yum groupinstall "Japanese Support"

(2) RStudioの再起動
# rstudio-server restart

(3) Rで日本語の指定
par(family = "HiraKakuProN-W3", ps=10)
または
par(family="Japan1") 

この後グラフを書いてみると、図のようにグラフの中に日本語が出てきました。

2017年11月16日木曜日

R : Perceptron

機械学習の勉強を始めるのにPerceptronは学べるものが多いかと思います。

(1) 最急降下法
予備知識として、最適化アルゴリズムの最急降下法を知る必要があります。
最急降下法は以下のようになります。

 (2) Perceptron
パーセプトロンは教師データを用いて学習させた後、2つのデータに線形分離します。​

[アルゴリズム]​
for 全教師データ​
    if( wxの符号と教師フラグの符号){
        一致 -> continue (何もしない)​
        一致しない​
            w<- br="" tx="" w="">            index <- 1="" br="">end​

Javaではリンクのようになります。 Rでは下記になります。

次に50個の座標を線形分離してみます。今回はy = -x +1 の上下で分離します。​
y > -x + 1の時 flag = 1​
y < -x + 1の時 flag = -1​
利用したファイル
このファイルをRStudioで​アップロードしておきます。

[Perceptron.2R]

参考
 http://smrmkt.hatenablog.jp/entry/2013/11/06/223221

2017年11月6日月曜日

Javaプログラミング(1) 行列計算

Javaで行列計算をやります。
(1) 内積と行列の積の計算




この内積計算の関数をまず作成します。


行列計算を実施する場合、この内積計算を呼び出します。ただし、Javaで内積を計算する時に、行ごとしか呼び出せず、列ごと呼び出すことができません。そのため転置行列作成をしておきます。



これを使って、行列の積を計算します。


エクセル計算(1) 線形計画法

エクセルで線形計画法を解いてみます。
(1) 環境設定
Solverと分析ツールをインストールします。
ツール->エクセルアドイン->Solverと分析ツールを選択し、OKを押します。
 データのところにソルバーがあれば利用可能です。

(2) 線形計画法を解く
今回は基本情報技術者試験平成25年春午前問76を利用します。

製品Aの生産量をx, 製品Bの生産量をyとします。図のような表を作成します。
色がついているところが、計算で変わる部分です。

緑の部分には初期値として0を入れておき、黄色とオレンジに関係式を入れておきます。
ソルバーのボタンを押し、図のように設定します。
準備ができたら、解決ボタンを押すと計算されます。

今回は利益が22と出て来ました。
 エクセルファイル
https://sistkanri-my.sharepoint.com/personal/mizuno_shinya_sist_ac_jp/_layouts/15/guestaccess.aspx?docid=03973f250867d47ae8ad92967454ebbb6&authkey=ATodb139UFIWvpkxEuhfO80&e=82d53e1faad744e686ae1e75b5d03efb

2017年11月2日木曜日

音声感情プログラム(Empath APIを利用)

音声から感情を読み取るAPIを試して見ました。
(1) APIの準備
https://webempath.net/lp-jpn/
からアカウントを作成しておきます。契約はフリープランにしておきました(月300回まで)。
適当な名前をつけてAPI Keyを発行しておきます。

(2) 情報取得の確認 (PHPで実施)
Empath WebAPI 仕様書 (version 1)  のサンプルコードを使って確認して見ました。
POSTMANでやってみると図のようになります。
これをPHPコードでエクスポートして、コントローラに設定しました。


テーブルは次を利用しています。


(3) 動作確認
実際に音声をアップロードしてやってみると、こんな感じでした。


実際はAndroidアプリで録音し、そこで評価。評価したものをアップロードしてテーブルに格納するのが良さそうです。