#author("2021-01-17T13:34:11+00:00","","") #author("2021-02-24T05:57:35+00:00","","") [[江崎]] ライフログをまとめたcsvからhtmlを編集する #CONTENTS *大まかな流れ [#qf363c43] 1.センサからラズパイで生体・環境データを取得~ 2.生体・環境データをライフログとしてクラウドに保存~ 3.PCでライフログをcsvファイルに書き込み、保存~ 4.実行コードでcsvファイルからデータを搾取~ 5.とってきたデータをもとに処理~ 6.コーピング表示htmlの作成~ 7.htmlの公開設定~ 8.別端末から閲覧~ ~ 1からやるとIoTから始めなければいけないので今回はライフログcsvファイルをあらかじめ用意し,4から始める。~ 最終的に図のhtmlが別端末からみれればOK(実際の数値や文章は違うかも)~ #ref(12.JPG,,30%) *初期準備 [#l3606587] -ライフログ(3日間で研究室の各場所1分程度ぐるぐるした)~ 開いてみるのは大丈夫ですが絶対に書き加えないでください。&COLOR(red){絶対に上書き保存しないでください}; #ref(fordend.csv) -実行コード #ref(processing_data_1.py) -実行コード(デンドログラム作るだけ、lhいらないver) #ref(processing_data_2.py) -LH/HFcsvファイル #ref(lh.csv) ~ これらのファイルを保存しモジュールをpip installしまくった後,processing_data_1.pyを実行すると以下のクラスター配列とデンドログラムが得られ、htmlがedgeで開かれる。 #ref(4.JPG,,60%) **コードでやってること [#df085f16] 1.ライフログcsvファイルから行のラベルを作って読み込む~ 2.csvファイルのうちGSR、心拍、マイクラベル、時刻のリストを作成~ 3.デンドログラム制作。マイクラベルがある要素にはそのマイクラベルも表示~ 4.コマンドプロンプトに各データのクラスター番号配列を出力(数字はデンドログラムの表示順)~ ユーグリッド距離2000で仕分けている。2000以内は同じグループとみなす。~ このクラスター番号は行動ごとに与えられた番号と認識しておいてください~ 5.変数にテキトーな文字列を入れてhtmlファイルを作成~ 6.デンドログラムを表示。htmlをedgeで開く~ **クラスター番号配列解説 [#f0c31842] -ユーグリッド距離2000で分けた結果ライフログは7つのクラスターに分けられた.デンドログラムはその7つを色分けしている.~ -デンドログラムは左からクラスターごとに,距離が近い順に並べられている.~ -クラスターの中に,マイクラベルが存在するライフログが一つは存在する.他はマイクラベルがない.~ -出力したクラスター配列は時系列である.番号はデンドログラムの左からクラスターごとに順に振り分けられる.~ つまりクラスター配列の最初の数字は7なのでデンドログラムでいう右端の緑色に当たる.~ よってライフログの序盤10個のデータは会議室のデータと分かる.~ -逆に配列の終盤は6が続いている.dん度ログラムから黒色,パソコン作業とわかる~ よって(ライフログ内では)現在コイツはパソコンパチパチしていることになる.~ さらに言うとライフログは約5秒に一回取得する.配列では6が30個以上続いているのでコイツは2分半ぐらいパチパチしていると分かる。~ ~ *コード書き込み [#jd6be7a0] 最終的に以下を処理~ 3人組(A,b,c)で分かれて8つの変数を出力させる。 今回用意したライフログで表示できたら確認用の研究用ライフログでも試す?~ ~ |担当|A|B|B|A|C|C|A|C| |コード変数|now_time|location|situation|total_time|stress_data|state|cope|figure| |html|Today|場所|状況|経過時間|ストレス予測値|状態|指令|画像| ~ -初期設定~ 現在時刻→ライフログ内での最後の時刻)~ 行動経過時間→1分15秒前の時間データから求めた~ 場所、状況、ストレス予測値、状態、指令→テキトーに値入れた~ 画像→無視~ ~ **A.最新の時間と経過時間とコーピング指令 [#qc4af9f7] datatimeは時間を扱うライブラリ。~ group(クラスター番号)配列は時系列なのでどの行動がどれだけ続いているかが分かる。~ ライフログからはだいたい2分くらいと思われる。~ 行動経過時間(total_time)はgroup配列をもとに行動が開始された時刻(start_time)と最新の時刻(now_time)を単純に引き算すれば求められる~ ~ コーピングに関しては本来はストレス予測値も参考にするが経過時間をもとにコーピング内容を変える~ 今回は基準を「1分」とし経過時間(total_time)が1分以上だった場合指令(cope)を発動する(未満だったら「なし」と表示)~ 指令は「経過時間が○○で、行動は○○なので、○○しなさい」の形式で、○○の部分はif文で細かく仕分け。~ 今回のライフログの直近の行動は「パソコン作業」なのでそれに応じたストレス対策法をググってひょうじさせる~ ◎余裕があったら現在の行動よりひとつ前の行動に対しても同じ処理をしてみる ~ ~ **B.現在地の出力 [#he9fbef0] クラスター番号から最新の行動が何か調べる~ ~ 1.group配列をさかのぼり,最新のクラスター番号と一致する、かつ、マイクラベルが存在する時~ 2.そのマイクラベルを出力し、locationとsituationに分割する。(マイクラベルは必ず2単語になるようにしてある)~ ~ この際,マイクラベルにはほとんどがnanというfloat型の値が入っている(というか値がない)~ **C.ストレス値予測と図 [#f1504f1d] いろいろあってLF/HF値が出せたのでそのまんましゅつりょくします~ はっはははhっははっははははっはっはっはっははは~ 最新のLF/HF値をstress_dataとし,その値によってstateをきめる~ LF/HF値が2.0以下だったら「良好」みたいな ~ -印象イラスト ~ 人間は文字羅列よりわかりやすいロゴを見せられた方が危険度を認知しやすい。~ そこでコーピング文章の最後に予測値によって違う図(3種を)見せる。~ ~ ※追記やり方判明した~ 1.3種の図を用意する~ 2.stateの値でstr型変数「figure」を適切な図の名前に変更する~ 3.html編集の部分で[<img src=' + figure + ' width="60">]ってかく ~ (例)ストレス予測値=158、は無視しろ #ref(7.JPG,,60%) *html表示方法 [#a3cfc019] 3人とも実行できたらCのPCで3人分のコードをコピペして一つにまとめる。&COLOR(red){合体させたらコーピング発動条件やcopeを行動経過時間とストレス値と行動識別で変化させ};る。完成したコードを実行し,最初の図のような全表示のhtmlを表示させる。~ ~ それができたら以下の通りISSで設定し別端末でもみれるようにする。 ~ 1.PC(Windowsの場合)htmlがある📁のパスを通す.~ Internet Information service (IIS)のDefault WebSiteの「機能ビュー」の「詳細設定」で📁物理パスを設定.~ さらに「既定のドキュメント」に追加.~ 2.こうするとPCと同一Wi-Fi内でのみ「http://(PCの物理アドレス)」でグラスにhtmlが表示される.~ ~ ~ ・IISの設定 #ref(11102.JPG,,50%)