GoogleアナリティクスでクライアントIDとアクセス時刻(秒単位)を取得
1.クライアントIDを取得(クッキー)
プリンシプルさんのサイトを参考に設定。
2016年の新定番!ユーザーエクスプローラーをもっと活用するための簡単な方法 | 株式会社プリンシプル
2.クライアントIDを取得(customTask)
清水誠さんのサイトを参考に設定。
GTMでGoogleアナリティクスのClient IDを取得する一番確実で楽な方法(2018年版) - 清水誠メモ
3.アクセス時刻(分単位)を取得(customTask)
Dimensions & Metrics Explorer | Analytics Reporting API v4 | Google Developers
4.アクセス時刻(秒単位)を取得(customTask)
清水誠さんのサイトを参考に設定。
GTMでGoogleアナリティクスのアクセス時間を計測しよう - 清水誠メモ
(1)ページタイトル・ページビューのデータを、クライアントID・タイムスタンプ付で取得。
(2)外部リンクのクリックイベントのカテゴリ・アクション・ラベル・イベント値を、クライアントID・タイムスタンプ付で取得。
Googleアナティクスのデータを基に協調フィルタリングによるレコメンドをAzureMLで試す
1/11(金)
1/12(土)
到着
1/13(日)
1〜3、7章まで一読・ハンズオンを通じて、サンプルデータを基にモデル作成。
早速、スプレッドシートに取得済みのGoogleアナリティクスデータ(ユーザ毎、ページ毎のページビュー数)を加工して、AzureMLにアップロードし、データを差し替えてモデルを実行。
1回目はエラー(同一ユーザが同一ページを別セッションでビューすると、評点が複数あることになり、AzureMLのレコメンダーではエラー)
2回目は上記エラーが発生するはずの30件のデータに絞って実行してあえてエラーを出し、エラー解消を目指すつもりが、通ってしまった。
また、このページを見た人はあのページも見たをやりたかったのに、あなたへのお薦めになってしまった。
1/14(月)
・あなたへのお薦めでなく、類似する商品をお薦めするようにAzureMLで設定
・30件のデータから1万件のデータに
・同一ユーザによる同一ページのPV数をスプレッドシート上で合計
・類似商品のレコメンドの評価はAzureML上でエラー
・WebサービスのPythonコードで発生したエラーをPython3向けに修正して解消、JupyterNotebookで実行
残った課題
・トップページなどを対象から外す
・ページビューが発生しなかったページのお薦め→ページの類似性データを作成?
・評点データをページビューから滞在時間などにしてみる
朝日カルチャーセンターが、日本マイクロソフトの機械学習機能を活用し、講座のレコメンデーションを提供開始 - News Center Japan
Azure Machine Learningによるレコメンデーションの設計&実装を公開!~朝日カルチャーセンターの事例から~
・Pythonコードをサーバに実装
・実装時のシステム構成
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
Tableau Extensions APIセミナーのまとめ
に参加。
公式レポートはこちら。
https://techplay.jp/eventreport/701438
以下、参加直後の備忘録。
事前準備として、
・各種ファイルのダウンロード
・ローカルサーバーの起動
ローカルサーバーの起動は、以下の2つの記事
pythonでローカルwebサーバを立ち上げる - Qiita
を参考に
$ python3 -m http.server 8000
を実行。
最初は失敗したが、各種ファイルをダウンロードしたディレクトリに移動してから再度実行したら成功。
ブラウザに
http://localhost:8000
と入力したら、URLが
http://localhost:8000/extensions-api-master/
となり、ディレクトリが表示された。
以降、チュートリアルに入る。
Part0のtrexファイルをエディタで開き、<source-location>タグの<url>タグ内を、以下のように上書き修正。
<url>http://localhost:8000/extensions-api-master/Tutorial/Part_0/MarksSelection.html
ここで、Tableau DeskTop 2018.3を起動し、
データソースは適当にサンプルストアを選択し、
適当にワークシートを作成し、
ダッシュボードで適当にワークシートを表示し、
「拡張子」を選択。
拡張ボタンからtrexファイルを選択し、
「許可」ボタンを選択すると、htmlの内容がダッシュボード内で表示された!
Part1-6も同様。
次に、デバッグモードを起動した。
ダウンロードしたディレクトリ直下のreadme.texを参照し、
$ open /Applications/Tableau Desktop 2018.3.app --args --remote-debugging-port=8696
を実行。
ただし、最初は失敗。
再度、
Applications ユーザー名$ open -a /Applications/Tableau Desktop 2018.3.app --args --remote-debugging-port=8696
と実行したら成功。
ブラウザで
としたらデバック画面へ。
(≒Tableauをサーバーに見立て、ブラウザからアクセス)
改めてExtensions APIとは?
・呼び出すためのおまじないは一手間かかるが、覚えて慣れればそんなに難しくない。
→Tabpyみたいなもの。
・Tableauのダッシュボード画面をHTML/CSS/JavaScriptで自由に動的に作れる。
→HTML/CSS/JavaScriptの知識は必要。
→アイデアも必要。ギャラリーを見て何ができるかつかみながら考えていく。
・「Webページ」と「拡張子」の違い。
→外部のWebページを呼び出してそのまま表示するのでなく、作ったものを表示できる。≒スマホアプリで言うところの、WebViewとハイブリッドモバイルアプリの違いみたいなものと理解。
→ダッシュボード内で「Webページ」は一つしか表示できないが、「拡張子」は複数表示できる。
・Tableauの機能を使っていて物足りなくなってきたら使いたくなる?
Nature RemoのテレビプリセットのWeb APIでリモコンアプリ(HTML/CSS/JavaScriptのMonaca)を作ってみた
1.Nature Remo APIをコマンドラインから叩いてテレビを操作する
2.Nature Remo APIをスマホアプリに設置したボタンから叩く
3.Nature Remoのリモコンボタンを連続して複数回操作する(2019.2.3追記)
4.Nature RemoのテレビプリセットのAPIでリモコンアプリ(HTML/CSS/JavaScriptのMonaca)を作ってみた(2019.1.27追記)
1.Nature Remo APIをコマンドラインから叩いてテレビを操作する
NatureRemo の Cloud API を使って Google Home からテレビを HDMI4 に変更する - おともだちティータイム
を参考とした。
Nature Remoは購入済みで、純正アプリもインストール済みだったので、まずはこれが動作することを確認した。
その後、http://home.nature.global/
にメアドを入力して、トークンを取得。
に貼り付けて実行したら、レスポンスが得られた。
もレスポンスが得られた。
ここで、JSONを見やすくするためのjqをインストールした。
まずbrewをインストールした。
macOS 用パッケージマネージャー — macOS 用パッケージマネージャー
を参考に、
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
を実行。
その後、
を参考に、パスを追加。
$ echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile
$ source ~/.bash_profile
$ brew doctor
も無事動作。
ここで、
を参考に、
$ brew install jq
でjqをインストール
を参考に、
コマンド|jq
としたら、JSONが読みやすくなった。
NatureRemo の Cloud API を使って Google Home からテレビを HDMI4 に変更する - おともだちティータイム
に戻り、
も実行できた。
2.Nature Remo APIをスマホアプリに設置したボタンから叩く
Monacaでアプリを作った。
jQueryライブラリをインストール。
ajaxからAPIをたたく方法は以下を参考にした。認証ヘッダーも送信可能。
jqueryのajaxから認証用のauthorization bearerヘッダーを送信する - システム開発・構築の神様
3.Nature Remoのリモコンボタンを連続して複数回操作する(2019.2.3追記)
setTimeoutで時間差をつけながら実装。
パナソニックのテレビでDlife(BS258)にチャンネルを切り替える場合の例。
4.Nature RemoのテレビプリセットのAPIでリモコンアプリ(HTML/CSS/JavaScriptのMonaca)を作ってみた
20191.21に下記記事が公開されたので試してみる。
を開く。
POST /1/appliances/{appliance}/tv
のことのようだ。
Try it outボタンを押す。
Appliance ID ID
Button name power
と仮に入力して、Executeボタンを押す
以下のcurlコマンドが出た。
curl -X POST "https://api.nature.global/1/appliances/ID/tv" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -d "button=power"
curlコマンドをajaxに変換するのに、以下のサイトを参考にした。
jQuery - curlコマンドをjqueryのajaxで実行する方法|teratail
ハイブリッドモバイルアプリ開発環境Monacaでリモコンアプリを作り、ボタンクリックでNature RemoのテレビプリセットのAPIが呼び出せた!
謝辞
参考にさせていただいたサイトの皆様、ありがとうございました。
「Pythonで学ぶあたらしい統計学の教科書」
11/15木のセミナー
【応募多数のため増枠しました!】【実践講習】現役データサイエンティストが語る R・Pythonのデータ解析活用セミナー@六本木ヒルズ|IT勉強会ならTECH PLAY[テックプレイ]
で、状態空間モデルについて話を聞いた。
参加後、Amazonでぽちっとして、11/16金到着。
11/19月のセミナー
Pythonで学ぶ時系列データ解析入門|IT勉強会ならTECH PLAY[テックプレイ]
参加に当たり、11/18日にpandas, numpy, statsmodelの動作確認を兼ね、P72-97, P280-285まで学習。
Jupyter Notebook, Python, numpy, pandasの基本を学び、単回帰分析の入口までやってみた。
→予習しておいたので、何となく付いていけた気がする。
ProphetというFacebookのツールがあると聞いた。プロモーションなどのイベントに当たりが付いている場合にいいらしい。
ネットでざっと調べると、R/Pythonのライブラリがあり、専門家でなくても使えるツールらしい。
11/20のセミナーでは、
散布図にして相関を見ては?
とヒントをもらった。
11/21
Qiitaで、時系列データの相関、
という記事を見つけた。
https://qiita.com/takubb/items/286916434ce44889d0fd
時系列の話は想定していなかったが、Python連携の話題で、時系列の紹介。Prophetが5年に一度の変革として紹介された。
なお、時系列解析は、期間を固定して回帰を適用するか、変数を流入元チャネルに絞って時系列解析のどちらか、といったアドバイスをもらえた。
11/29Prophetの事例
https://www.kdnuggets.com/2018/11/sales-forecasting-using-prophet.html
12/8
https://susishushi.github.io/site/post/crqa1/
非線形時系列解析
ネットとテレビデータにも応用できるか
WordPressサイトにPHPでJSONデータを取得/ウェブスクレイピング
作業中メモ
1-1.まずはPHPでJSONデータを取得する方法を調べて試す。
PHPの環境作りから始める
→練習用サイトがそのまま使えた!
別サブドメインのディレクトリ内にあるJSONファイルを読み込むにはどうしたらいいか
・JSONファイルを一旦練習用サイトに移す?→できた
・JSONファイルを一旦ニフクラにインポート?
・サーバ側のアクセス権設定又は認証?APIへ?→サーバ上のJSONファイルはアクセス権が設定されていなかったので、URLで指定できた!
配列の番号を指定することで、データを取り出す方法はわかった。
他方、取り出したいデータの配列の番号が分からず、
データに付けられたIDを指定するにはどうしたらよいか?
案1:IDを順に読み込んで、取り出したいID番号と一致するまでループを回す?
その配列番号のデータを取り出す?
案2:データのIDを指定することで、ループを回さずにデータを取り出す。
案2の方法が以下の記事に載っていた。
PHP多次元配列、特定キーの値を検索しindexを取得する(ループ不要) - 現役プログラマのWordPressカスタマイズ相談
→できた! ただし、同じIDで複数の値がある場合に、複数の中から選び出す処理が要る。。
JSONファイル形式が変わらない限り、変更不要。
【php】webサイトから、欲しい情報を3行で取得する方法 - Qiita
→
スクレイピング用の「phpQuery-onefile.php」を所定のディレクトリにあpアップロード
できた!スクレイピングの方が簡単かつ確実かもしれない(?)。
ただし、3つの値がHTML上で連結して表示されているため、文字列の処理が要る
ウェブデザインが変更された時に、PHPコードの変更が必要。。
2.次に、WordPress管理画面でPHPコードを埋め込む方法を調べて試す。
以下のショートコードを使う?
WordPressの記事内でPHPを実行した結果を表示する方法 | tipLog
WordPressの投稿内で任意のPHPコードを実行できる「ショートコード」を自分で作成する方法と呼び出し方。引数の受け渡しも簡単! | WEMO
→1-2のPHPによるスクレイピングコードをfunction.phpに追記し、ショートコードを定義
→投稿記事内にショートコードを記載することで、1-2のスクレイピングの結果を表示できた!
ただし、投稿記事の中でも、日付フォーマット指定されている入力欄では、ショートコードが反映されなかった。
このやり方だと、IDの分だけショートコードを定義する必要がある
入力文字制限を解除する
https://plusers.net/wordpress_custom_post