中野智文のブログ

データ・マエショリストのメモ

BigQuery で、ある特定の期間の日を全て列挙する

背景 BigQuery で、ある特定の期間の日を全て列挙したくなった。 方法 generate_date_array を使う。 https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#generate_date_array 例:'2018-01-01' から '2018-12-31' ま…

FirebaseのRTDBからFireStoreに乗り換えるためにGCPのプロジェクトを作成したときのメモ

背景 GCPのプロジェクトの中では、Firebaseのストレージは、排他的で、RTBDかFirestoreのどちらしか選べないらしい。 強制的にFirestore にする手もあるが、戻れなくなるのも嫌なので、新しくGCPのプロジェクトを作ることにした。 なお、Firebaseのプロジェ…

word2vec の demo word を colaboratory で

背景 word2vec を使ってみたいが、colaboratory で試してみる方法が分からない。 方法 https://colab.research.google.com/drive/1VhlWwexI2FR0eT288Mbv_D4uWbqHo2mK 解説 demo をたぐると、次のオプションで学習しているらしい。 -cbow 1 -size 200 -window…

Cloud FunctionsとPubSubを使ってGCPの予算アラートをslackに通知

背景 GCPの予算アラートをslackに通知したいが、GCPの予算のアラートに無駄金を使わないために、GCPのサーバレスの機能を使って実現したい。 手順 PubSub を作ろう Slack で通知のためのWeb Hook を作ろう Cloud Functionsで関数を作ろう GCPのお支払いで設…

pyplot で背景とグリッドに色を付ける

背景 google colaboratory は無料で jupyter notebook を使える環境で最高なのだが、一部微妙にカスタマイズされていて困ることがある。 例えば、pyplot の背景が、グレーになっている。 具体的には、素のjupyter notebookだと、 という感じだが、colaborato…

SQLクエリのみでCREATE TABLEを使わず一時的な小さなテーブルを作る

背景 SQLクエリのみでCREATE TABLEを使わず一時的な小さなテーブルを作りたい時がある。 例えば、{'ios': 1, 'android': 2, 'windows': 3} みたいな小さなテーブルが一時的に欲しいことはある。 それがないために、IF(os_id=1, 'ios', IF(os_id=2, 'android'…

luigi RangeDaily にて謎のエラー

背景 luigi RangeDaily の謎のエラーについて書く。 なお、RangeDaily については下記記事を参照。 nakano-tomofumi.hatenablog.com ValueError: invalid literal for int() with base 10: 'None' RangeDaily のパラメータ now が None であると怒っている。…

aws s3 のファイルを圧縮しながらストリーミングでgcsに置く

背景 早い話が、gsutil の -z オプションの挙動(静的ホスティングじゃないとき)がよくわからなかったから。 cp - Copy files and objects | Cloud Storage Documentation | Google Cloud コマンド aws s3 cp s3://your-s3-bucket/your-file.txt - | gzip -…

google cloud storage の権限は defacl でバケット単位で設定する

背景 google cloud storage を使って共有しようと思ったが、設定はどうやるのか? 方法 gsutil defacl コマンドで(バケット単位で)設定する。 既存のファイルについては、gsutil acl コマンドの -r オプションで追加する 例(user@example.comさんにread …

ec2 でシンプルな mail クライアント mailx

背景 ec2 の cron を実行したとき、標準出力に何か出ると、メールで送られてくる仕組みになっている。 多くの tips では、ハードディスクがいっぱいになるから、これを停止するものが多いが、 停止する前にエラーなどが出ていないか、確認したいものである。…

gcloud 系コマンド(gsutil bqなど)で、 which no python in ... というエラー

背景 gcloud 系のコマンドを実行すると、 which: no python2 in 自分のパス というエラーが出る。 ただエラーが出るからと言って実行できないわけではなく、 python2.7 とか、python2 とかはパス上にあるからか、結局それを見つけに行って実行される。 ちな…

luigi で resources を使ってリソース毎に同時実行数を制限する

背景 luigi は同時 workers オプションで同時 worker 数を制限できるが、CPU的には同時に16走っても問題ないが、DB的には一つしか接続したくない、という要望がある。 対応 resources を使う。 リソース毎の worker 数の設定と、それぞれのタスクがどれほど…

s3上のgzip圧縮されたファイルの中身をイテレータで取得する

背景 s3上のgzip圧縮されたファイルの中身をイテレータで取得する方法がなかなか見つからない。 コード import boto3 import tempfile import gzip import datetime as dt from typing import Iterator def s3_gz_cat(bucket: str, prefix='') -> Iterator[b…

BigTable は東京リージョンでも使える!

背景 bigtable が東京リージョンでは使えないみたいな話が古い記事で見つかったりする。 GCPで東京リージョンにて使えるサービス&使えないサービス一覧 | apps-gcp.com 本当は 使えるようになっている!!! https://groups.google.com/forum/#!topic/googl…

numpy array を aws s3 に格納する。

背景 jupyter notebook を使っていて、データをローカルのファイルシステムに保存するようにしていると、 環境が変わったときにそのデータまで一緒に持ってこないといけないが、これは jupyter の利便性を失う一つの要因となる。 例えば github でjupyter no…

ImportError: No module named '_tkinter' が出た場合

背景 毎回見る次のエラー ImportError: No module named '_tkinter' の対応だが、OSや python のバージョンにより対応が異なるので、メモする。 解決法 ubuntu (on Windows) の python3 の場合 sudo apt install python3-tk

Windows 用 github ツールにて、the repository does not seem to exist anymore

背景 Windows 用 github ツールで、次のようなエラーが出た。 the repository does not seem to exist anymore you may not have access or it may have been deleted or renamed もちろん、そのようなリポジトリは実際存在する。 なぜか? 原因と解決 自分…

Windows10 に WSL を入れようとして、The term 'Enable-WindowsOptionalFeature' is not recognized …

背景 Windows 10 に WSL を入れようとして、 PS C:\Program Files\PowerShell\6.0.2> Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux Enable-WindowsOptionalFeature : The term 'Enable-WindowsOptionalFeature' i…

東京以外のおすすめAWSリージョン

背景 東京リージョンは応答時間は早いけど、応答時間がどうでもいいなら、もっと安いリージョンがいい。 もう少し欲を言うと、AWSの最新のサービスが利用できるところがいい。 さらに欲を言うと、それでも応答時間が早いほうがいい。 リージョン比較 料金 最…

Windows PowerShell の OpenSSH でパスワードを正しく入れてもログインできない。

背景 Windows PowerShell の OpenSSH でパスワードを正しく入れてもログインできない。 原因 -v オプションをつけることで原因を見つけることができた。 read_passphrase: can't open /dev/tty: No such file or directory 入力を ' /dev/tty' から取ろうと…

AWSのMFAが灰色で有効にできない→一応解決

背景 AWSの「MFAの管理」が灰色で有効にできない。なぜなのか? 解決 灰色で有効にできない謎は未解決だが、一応できたのでメモ。 同じページのIAM リソース のユーザーをクリック。 自分の名前を見つけ出しクリック。 認証情報のタブをクリック。 すると、M…

BigQuery で base64 から uuid の形式へ変換する

背景 BigQuery で base64 から uuid への変換をUDFを使って行おうと思ったのでメモ。 経緯 atob さえあればそれほど大変ではないはず。ところが、 Google Developers Blog: Breaking the SQL Barrier: Google BigQuery User-Defined Functions によると、 No…

BigQuery の standard sql にも ROLLUP はあるよ

背景 上手いこと使うと、全体の合計と、group で指定したそれぞれの合計が同時に取得できる rollup だが、日本語のBQの標準SQLのページには記載がない(2018/03/20現在) 具体的には次のような感じ 解決法 次のように言語の設定を英語にしよう。 すると group …

データ解析のためのロジスティック回帰モデルを少し読んだ

背景 前から欲しかった本がある。Applied Logistic Regression 3rd Edition であるが、ご覧の通り、ハードカバーで1万6千円、Kindle 版でも1万円してしまう。 まず、Logistic Regression(ロジスティック回帰)であるが、深層学習ほど最新の研究成果があるわ…

Jupyter notebook (Python3) で mypy のチェックを行う

背景 python3 で導入された型ヒントだが、そのままだと静的にも動的にもアノテーション(単なるコメント)として扱われるらしく、ちょっと残念。 mypy というコマンドで型チェックを行ってくれるらしい。Jupyter notebook 上でも実行したい。 対応 mypy をイ…

「被害者が犯行可能な人を犯人の候補」とするWald法

背景 二項分布やベルヌーイ試行の確率の信頼区間を求める方法として、Wald法というものがある。 非常に気持ち悪いと思うのだが、まだ多くの人がその気持ち悪さを理解していないと思うので、自分の力不足を感じながらも書いた。 Wald 法 正規分布は のとき、…

mac が重くてたまに熱か何かで落ちたのでその時のメモ

背景 mac が重くてたまに熱か何かで落ちる。vagrant で動いているものがあるので、それが原因かと思ったが、 top で確認すると、mds_stores というプロセスが動いていた。 対応 下記のページを参考にしようとした。 blog.tottokug.com ところが、 sudo locat…

正規分布の分位点関数(パーセント点関数)の近似

背景 正規分布の分位点(パーセント点)は数値計算ライブラリの分位点関数を使えば簡単に求められる。 例えば、python だと、scipy.stats.norm の、ppt だ。 ところが、SQL には標準でないようである。 自分で関数を作ってもいいが、ここはSQLでかける近似式…

scikit learn の Kfold, StratifiedKFold, ShuffleSplit の違い

背景 scikit learn の cross validation にて、テスト事例の分割方法に Kfold, StratifiedKFold, ShuffleSplit, StratifiedShuffleSplit というのがある(他にもある)。 その違いがわかりにくい。 Kfold と StratifiedKFold の違い Kfold は知っているとい…

scikit learn の GridSearchCV で検証事例に class_weight(sample_weight) をつける

背景 GridSearchCV で検証事例に sample_weight をつけるような引数はまだ存在しない。 github.com でも使いたい。(使わないとうまく行かねー) metrics 関数自体は sample_weight に対応しているんだよね〜。 対応 対応した metrics 関数をつくり、make_sc…