中野智文のブログ

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

bigquery の int64 への cast は切り捨てではない

すなわち、 select cast(1/2 as int64) は切り捨てではなく、丸められ 1 となる。 (今更ながら知る。。。) 切り捨ては、floor を使おう。 参考 標準 SQL 関数と演算子 | BigQuery | Google Cloud

Mozc の日本語入力モードへの切り替えが ctrl space だと、 emacs で困ってしまう人の設定

背景 Mozc の日本語入力モードの切り替えが ctrl space だと、emacs (terminal)で使うときに mark set したいときに、 デフォルトのキーバインドとかぶって困ってしまう。 対策 Mozc の日本語入力モードへの切り替えのキーを ctrl \ にする。

bigquery で日本語の曜日のJOIN用テーブルを作成する

背景 毎度日本語で曜日を表示するためのJOIN用テーブルを作成に時間がかかるので、 コピペ用のコードが欲しい。 (JOIN用テーブルでなくifで作ったほうががテンプレートしては使いやすいかも。) そのクエリ #standardSQL WITH _weekday_list AS ( SELECT SP…

colaboratory で、pycodestyle を使う

次のように、colaboratory 上に書いて実行(python3.6で確認) !pip install flake8 pycodestyle pycodestyle_magic %load_ext pycodestyle_magic あとは、 %%pycodestyle # ... ここにコード と書いて実行。チェックの必要がなくなれば、コメントにしてしま…

PACモデルで十分な事例数とその使い方

PACモデルで十分な事例数 ここで、は学習事例数、 は仮説空間、エラー率以内の概念モデルを の確率で学習すること(Tom Mitchell 著 Machine Learning 7章より)。 使い方 次の様な質問に即答できる。 データが倍になったら何がうれしいか? エラー率が半分…

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 をイ…