江崎? ライフログをまとめた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で開かれる。
1.ライフログcsvファイルから行のラベルを作って読み込む
2.csvファイルのうちGSR、心拍、マイクラベル、時刻のリストを作成
3.デンドログラム制作。マイクラベルがある要素にはそのマイクラベルも表示
4.コマンドプロンプトに各データのクラスター番号を出力(数字はデンドログラムの表示順)
ユーグリッド距離2000で仕分けている。2000以内は同じグループとみなす。
このクラスター番号は行動ごとに与えられた番号と認識しておいてください
5.変数にテキトーな文字列を入れてテキストファイルを作成
6.デンドログラムを表示。テキストファイルを埋め込んだhtmlをedgeで開く
最終的に以下を処理
3人組で分かれて7つの変数を出力させる。残りの一人は手法を考え、stateの値次第で違うpngをファイルhtml内に表示させててください。(そして教えてください)
| 担当 | A | B | B | A | C | C | A | D |
| コード変数 | now_time | location | situation | total_time | stress_data | state | cope | figure |
| html | Today | 場所 | 状況 | 経過時間 | ストレス予測値 | 状態 | 指令 | 画像 |
datatimeは時間を扱うライブラリ。
group(クラスター番号)配列は時系列なのでどの行動がどれだけ続いているかが分かる。
ライフログからはだいたい2分くらいと思われる。
行動経過時間(total_time)はgroup配列をもとに行動が開始された時刻(start_time)と最新の時刻(now_time)を単純に引き算すれば求められる
コーピングに関しては本来はストレス予測値も参考にするが経過時間をもとにコーピング内容を変える
今回は基準を「1分」とし経過時間(total_time)が1分以上だった場合指令(cope)を発動する(未満だったら「なし」と表示)
ちなみにtotal_time.total_seconds()で秒単位になる
指令は「経過時間が○○で、行動は○○なので、○○しなさい」の形式で、○○の部分はif文で細かく仕分け。
今回のライフログの直近の行動は「パソコン作業」なのでそれに応じたストレス対策法をググってひょうじさせる
◎余裕があったら現在の行動よりひとつ前の行動に対しても同じ処理をしてみる
クラスター番号から最新の行動が何か調べる
1.group配列をさかのぼり,最新のクラスター番号と一致する、かつ、マイクラベルが存在する時
2.そのマイクラベルを出力し、locationとsituationに分割する。(マイクラベルは必ず2単語になるようにしてある)
この際,マイクラベルにはほとんどがnanというfloat型の値が入っている(というか値がない)
予測に使うのはGSRと心拍、そして自己評価のストレス値(1,5,8)
まずpipでsklearnをインストールし、決定木を可視化するためにgraphvizをインストールする必要がある。
http://ruby.kyoto-wu.ac.jp/info-com/Softwares/Graphviz/
まずdecision_tree.pyのpathを指定後、実行する。同じフォルダにtree.pngという決定木画像が作られる
このコードを関数として編集し直し、引数(最新のGSR、心拍)に対し予測値(ストレス値)を出力するようにする
processing_data_1.pyではGSRと心拍のデータをリスト化してあるのでその値を関数にぶっこむ
これで最新値の(=現在)のstress_dataがわかる
stress_dataに応じてstateを決定する。(1だったら”健康”みたいな)
人間は文字羅列よりわかりやすいロゴを見せられた方が危険度を認知しやすい。
そこでコーピング文章の最後に予測値によって違う図(3種を)見せる。
方法1.コード内でhtmlを直接編集(テキストファイルを経由しない)
方法2.テキストを作る前に図を作成。もしくは名前変更。etc.
方法3.他にもググったらあるかも
(例)
3人とも実行できたら誰か1人3人分のコードをコピペしてまとめて実行し,最初の図のような全表示のhtmlを表示させる。
それができたら以下の通りISSで設定し別端末でもみれるようにする。
1.収集したデータをもとに表示する文字を作成(選択)
2.pyでtxtに書き込む。mode指定により毎度書き直すことが可能.まず白紙に数値以外の文字(項目)を書き,データ数値の変数を置き換える形でかきこむ(以下のようにhtmlを編集するならtxtとhtmlは同じファイルに入れる)
3.htmlの中でtxtを埋め込み,変更しない部分はここで編集する.
4.PC(Windowsの場合)htmlがある📁のパスを通す.
Internet Information service (IIS)のDefault WebSiteの「機能ビュー」の「詳細設定」で📁物理パスを設定.
さらに「既定のドキュメント」に追加.
5.こうするとPCと同一Wi-Fi内でのみ「http://(PCの物理アドレス)」でグラスにhtmlが表示される.(図の最後はUnityとなっているがこれは自身が掲げた最終目標)
・IISの設定