中野智文のブログ

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

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行目の事例より前、という出現順。 もちろん学習後、その順序が参照できるように、モデルの出…

Logistic Regression における Negative Down Sampling

negative down sampling をしたときの logistic regression の最適な方法・設定を調べる。 結論としては、negative down sampling をする前に、 を平均から求める( )。それを対数化すれば切片の重みとなる( )。negative down sampling 後のデータは class_we…

小標本における正規分布の信頼区間を Excel で求める

背景 コイン投げのようなベルヌーイ試行の確率の信頼区間は Wilson score interval を使う。 - 中野智文のブログ でいいとして、母集団が正規分布で小標本の場合は、 t 分布で求めるのが、一般的である。 母集団が正規分布に従うときで標本の大きさ(サンプ…

scikit learn で cross validation で confusion matrix を取得する。

背景 confusion matrix を取得する場合は、一部の例だけでなく cross validation で全ての事例に対して取得したい。 対応 sklearn.model_selection.cross_val_predict を使う。 例 今回は iris のデータを使う。当たり前だが、confusion matrix は普通分類問…

scikit learn で DataFrameから色々なスパースな型に変換して学習

背景 scikit learn で学習しようとすると、メモリーを使い尽くす。 色々なスパースな型に変換して学習 準備 まず、データは次のものを利用。 measurements = [ {'city': 'Dubai', 'temperature': 31.0, 'country': 'U.A.E.'}, {'city': 'London', 'country':…

oom killer に python を優先的に狙わせるワンライナー

EC2 のマシンなどで、jupyter notebook で python カーネルを起動した後、次のコマンドを実行 pgrep python | xargs -l1 -I{} sh -c 'echo +15 > /proc/{}/oom_score_adj' 原理的には、python 以外のカーネルでもOKなはず。 追記 2017/11/07 /proc/23715/oom…

sklearn の DictVectorizer を使って学習して再び重みを dict 形式にする

背景 sklearn のライブラリに、学習データがdict の配列のときに、sklearn で使えるスパース(疎)な形式に変換する DictVectorizer がある。 この DictVectorizer の説明を見ると、たしかに色々な形式に変換できるようではあるが、実際にどのような形式に変…

jupyter notebook から dataflow する超短いメモ

背景 jupyter notebook から dataflow 使いたい。 やること python2 次のチュートリアルを cloud shell とローカルのマシンで実行 TensorFlow と Cloud Dataflow を使用したバッチ予測 | ソリューション | Google Cloud Platform qiita.com ただし、utils を…

liblinear の切片を忘れていませんか?

背景 liblinear の学習で、切片を忘れているのを見た。幸いプロダクトではない。 切片とは、英語で言うと intercept (知っとるわw) このページを見に来た人は特に切片の説明自体はしなくてもよいと思う。どのように取得するのかは、 scikit-learn だと、 …

python ライブラリの gcloud(google.cloud) の storage の blob_name とは

背景 python ライブラリの gcloud(google.cloud) の storage の get_blob において、 https://googlecloudplatform.github.io/google-cloud-python/0.20.0/storage-buckets.html#google.cloud.storage.bucket.Bucket.get_blob とあるが、試してみると、googl…

sklearn にて `class_weight` が `balanced` か「なし」の探索

背景 sklearn の GridSearchCV はパラメータサーチに利用される。 sklearn.model_selection.GridSearchCV — scikit-learn 0.19.0 documentation ところが、パラメータなし、の設定例はみつからない。 sklearn.linear_model.LogisticRegression — scikit-lear…

Arduino (Uno R3互換)を Mac でLチカくらいまで。

準備 購入したもの amzn.to マニュアル CD 内の K4 というマニュアル/K4/k4 Japanese tutorial.doc ダウンロード Arduino - Software インストール 本体の準備 本体(UNO R3)をUSBケーブルで接続。緑LEDの点灯を確認。 ソフトのセットアップ 上記のファイルを…

シンギュラリティは永久機関のようなもの

背景 社員旅行の夜、シンギュラリティについて質問された。 それまであまりよく考えたことがなかったけど、このときに自分の中でかなり整理された。 無限に賢くなる? シンギュラリティの主張は、 AIがもっと賢いAIを作る。 これを繰り返す。 最終的に圧倒的…

json ぽいデータを引き抜くクソクエリ

背景 json に対応していない mysql 5.7 未満のシステムに、json で値が格納されている。 対応 クソにはクソで。 LOCATE と、SUBSTRING を駆使し、抽出を試みる。 ここに書かれているは方法は、「一般的に」JSONをパースして抽出する方法でなく、利用範囲が限…

luigi で パラメータで与えられた日付をtimedelta を使って増減させたい

背景 luigi にて、パラメータで与えられた日付に対して、固定日分前(例えば一週間など)を求めたい。 from datetime import timedelta import luigi class MyTask(luigi.Task): date = luigi.DateParameter() start_date = date - timedelta(days=7) と書く…

luigi の RangeDaily をコードで使う

背景 範囲日の繰り返し DateIntervalParameter 指定した範囲の日の処理を指定したい場合は、チュートリアルには次のようなコード例がある。 http://luigi.readthedocs.io/en/stable/example_top_artists.html#step-1b-running-this-in-hadoop def requires(s…

Julia の GaussianProcesses を jupyter notebook で表示する

背景 そろそろ jupyter notebook を使いたくなってきた。 前回、Gaussian Processes のライブラリを入れるところまではできたので(下記参照) nakano-tomofumi.hatenablog.com 今回は、jupyter notebook 上でグラフを表示するところまでやってみる。 IJulia…

BigQuery のスキーマを bq コマンドで使う形式で表示する jq

背景 ある日の空テーブルを作成しようとしたが、スキーマの文字列が必要になった。手作業だとミスが起こるから、コマンドが欲しい。 jq コマンド スキーマ文字列を取得 $ bq show --format prettyjson <既存のBQのテーブル名> | jq -r '.schema[] | map(.nam…

Julia の GaussianProcesses のライブラリを入れようとする (2)

前回はこちら nakano-tomofumi.hatenablog.com Optim の仕様変更への対応 問題のエラーは、次のようなもの julia> optimize!(gp) ERROR: MethodError: no method matching set_params!(::GaussianProcesses.GP, ::Float64; noise=true, mean=true, kern=true…

Julia の GaussianProcesses のライブラリを入れようとする

背景 連続腕バンディット(それもトンプソンサンプリング)をやってみようと思った。 ベルヌーイ分布のトンプソンサンプリングは、ベータ分布の乱数生成だけが肝だが、ライブラリを使ったり、最悪Cの関数を参考にしながら自分で実装すれば特に問題はない。 …

mac の gimp から印刷

背景 証明書写真を印刷したい。1mm もサイズが違わないように印刷したい。 結論 mac の gimp から印刷はうまくいかない。一旦、jpeg にして、jpeg を mac の previewer で詳細な印刷設定をしてうまくいく。 印刷前までの方法 ほぼ、下記の通り fanblogs.jp …

トラフィックエクスチェンジの闇

背景 ad fraud を追う間に、「トラフィックエクスチェンジ」というサービスを知ることになった。 トラフィックエクスチェンジとは、サイト間でユーザを交換しようという試みである。 まだ検索エンジンがあまり発展していなかった時代などは、サイト間のリン…

29戦中29連勝の勝率の信頼区間を求める

背景 仕事でどうしても必要になった(嘘) Wilson score interval で計算する。 早速だけど、下記の式を使ってみよう。 nakano-tomofumi.hatenablog.com 今回は、p = 0.05 で求める。標準正規分布の分位数はZ=1.96となる。 よって、 UCB: (29+1.96*1.96/2+1.…

BigQuery でテーブルを正規表現を指定して削除する

背景 BigQuery で特定のテーブルをワイルドカードで指定して削除したいことがある。ところが、CLIコマンドである bq はそのようなワイルドカード指定はできない。 データセットのファイル一覧を出して、それを egrep で抽出する 下記の <dataset_name> と、<regular expression> にそれぞれ、デ</regular></dataset_name>…

pdf を送ると、「Kindleに送信された文書に問題がありました」

症状 次の論文をchromeでダウンロードして、 https://openreview.net/pdf?id=BkJsCIcgl mail で kindle に送信すると次のようなエラーメールが届く 2017年6月19日(月) 午前 09:59(JST) に送信された以下のドキュメントは、指定されたKindle に送信できません…