江崎? ライフログをまとめたcsvからhtmlを編集する

大まかな流れ 

1.センサからラズパイで生体・環境データを取得
2.生体・環境データをライフログとしてクラウドに保存
3.PCでライフログをcsvファイルに書き込み、保存
4.実行コードでcsvファイルからデータを搾取
5.とってきたデータをもとに処理
6.出力したコーピング表示テキスト及びhtmlの作成
7.htmlの公開設定
8.別端末から閲覧

1からやるとIoTから始めなければいけないので今回はライフログcsvファイルをあらかじめ用意し,4から始める。
最終的に図のhtmlが別端末からみれればOK(実際の数値や文章は違うかも)

#ref(): File not found: "1.jpg" at page "ライフログからコーピングhtmlを作成"

初期準備 

・ライフログ(3日間で研究室の各場所1分程度ぐるぐるした)
開いてみるのは大丈夫ですが絶対に書き加えないでください。絶対に上書き保存しないでください

・html(何も書き加えない.保存後htmlに変換)

・白紙のテキストファイル「opendata.txt」

・実行コード

・決定木(これを編集するんじゃなくて新規で作ったほうがいいかも)

・決定木用csvファイル


これらのファイルを保存しモジュールをpip installしまくった後,processing_data_1.pyを実行すると以下の出力とデンドログラムが得られ、htmlがedgeで開かれる。

4.JPG

コードでやってること 

1.ライフログcsvファイルから行のラベルを作って読み込む
2.csvファイルのうちGSR、心拍、マイクラベル、時刻のリストを作成
3.デンドログラム制作。マイクラベルがある要素にはそのマイクラベルも表示
4.コマンドプロンプトに各データのクラスター番号を出力(数字はデンドログラムの表示順)
ユーグリッド距離2000で仕分けている。2000以内は同じグループとみなす。
このクラスター番号は行動ごとに与えられた番号と認識しておいてください
5.変数にテキトーな文字列を入れてテキストファイルを作成
6.デンドログラムを表示。テキストファイルを埋め込んだhtmlをedgeで開く

コード書き込み 

最終的に以下を処理
3人組で分かれて7つの変数を出力させる。残りの一人は手法を考え、stateの値次第で違うpngをファイルhtml内に表示させててください。(そして教えてください)

担当ABBACCAD
コード変数now_timelocationsituationtotal_timestress_datastatecopefigure
htmlToday場所状況経過時間ストレス予測値状態指令画像


A.最新の時間と経過時間とコーピング指令 

datatimeは時間を扱うライブラリ。
group(クラスター番号)配列は時系列なのでどの行動がどれだけ続いているかが分かる。
ライフログからはだいたい2分くらいと思われる。
行動経過時間(total_time)はgroup配列をもとに行動が開始された時刻(start_time)と最新の時刻(now_time)を単純に引き算すれば求められる

コーピングに関しては本来はストレス予測値も参考にするが経過時間をもとにコーピング内容を変える
今回は基準を「1分」とし経過時間(total_time)が1分以上だった場合指令(cope)を発動する(未満だったら「なし」と表示)
ちなみにtotal_time.total_seconds()で秒単位になる
指令は「経過時間が○○で、行動は○○なので、○○しなさい」の形式で、○○の部分はif文で細かく仕分け。
今回のライフログの直近の行動は「パソコン作業」なのでそれに応じたストレス対策法をググってひょうじさせる
◎余裕があったら現在の行動よりひとつ前の行動に対しても同じ処理をしてみる

B.現在地の出力 

クラスター番号から最新の行動が何か調べる

1.group配列をさかのぼり,最新のクラスター番号と一致する、かつ、マイクラベルが存在する時
2.そのマイクラベルを出力し、locationとsituationに分割する。(マイクラベルは必ず2単語になるようにしてある)

この際,マイクラベルにはほとんどがnanというfloat型の値が入っている(というか値がない)

C.決定木分析によるストレス値予測 

予測に使うのはGSRと心拍、そして自己評価のストレス値(1,5,8)
まずpipでsklearnをインストールし、決定木を可視化するためにgraphvizをインストールする必要がある。
http://ruby.kyoto-wu.ac.jp/info-com/Softwares/Graphviz/
まずdecision_tree.pyのpathを指定後、実行する。同じフォルダにtree.pngという決定木画像が作られる

tree.PNG

このコードを関数として編集し直し、引数(最新のGSR、心拍)に対し予測値(ストレス値)を出力するようにする
processing_data_1.pyではGSRと心拍のデータをリスト化してあるのでその値を関数にぶっこむ
これで最新値の(=現在)のstress_dataがわかる
stress_dataに応じてstateを決定する。(1だったら”健康”みたいな)

D.印象イラスト(応用) 

人間は文字羅列よりわかりやすいロゴを見せられた方が危険度を認知しやすい。
そこでコーピング文章の最後に予測値によって違う図(3種を)見せる。

方法1.コード内でhtmlを直接編集(テキストファイルを経由しない)
方法2.テキストを作る前に図を作成。もしくは名前変更。etc.
方法3.他にもググったらあるかも

(例)

7.JPG

html表示方法 

3人とも実行できたら誰か1人3人分のコードをコピペしてまとめて実行し,最初の図のような全表示のhtmlを表示させる。
それができたら以下の通りISSで設定し別端末でもみれるようにする。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS