中野智文のブログ

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

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…

正規分布の分位数(標準正規分布)を python で求める

背景 あの Z=1.96 などの数値は、正規分布の分位数とか、分位点とか、パーセントを使っている場合には、パーセント点とか、百分位点とか、パーセンタイル とかよばれる。 さてこの正規分布の分位数であるが、計算環境が十分でない状況では標準正規分布表とい…

ValueError: y_true contains only one label (0). Please provide the true labels explicitly through the labels argument. というエラー

背景 GridSearchCV をすると、 ValueError: y_true contains only one label (0). Please provide the true labels explicitly through the labels argument. というようなエラーに遭遇することがある。 これは「評価用のデータに1つの正解ラベルしか含まれ…

iOS のUU数を調べる

背景 クッキーが全て取得できない場合でも UU 数を知りたい。 iPhone などのiOSのブラウザでは第三者クッキー(別ドメインのクッキー)が焼けないようになっている。 これは、広告を運用する上では非常に大きな問題である。 なぜなら広告のドメインは広告が…

ある確率未満であることを確認するのに必要なサンプルサイズ

背景 ある確率未満であることを確認するのに、どれだけサンプルサイズが必要だろうか。 例えば、0.5% 以上のクリック率(CTR)の広告枠にしか広告を出したくないという話を考えよう。 一度その広告枠に広告を出せば、0.5% 未満であること自体は信頼上限の計…

scikit learn の 確率推定のクラスの順序はソートされている。※ただしバイナリクラスの重みは…

背景 liblinear libsvm の重みや、確率推定の配列は、訓練データのクラスラベルの出現順で、決まるという恐ろしい仕様。 出現順というのは、1行目の事例のほうが2行目の事例より前、という出現順。 もちろん学習後、その順序が参照できるように、モデルの出…