まずは蝋の翼から。

学んだことを書きながら確認・整理するためのメモブログ。こういうことなのかな?といったことをふわっと書いたりしていますが、理解が浅いゆえに的はずれなことも多々あると思うのでツッコミ歓迎

purrrを使って、関数の引数を変えて適用したDFを結合していく

やりたいこと 関数の引数を変えて適用したDFを結合したい。 以下のように、指定した列colに対してunder_value以下となるdfを抽出して、そのunder_valueをfiltered_values列に追加する関数filtered_under_valueで考える。なお、見た目上わかりやすいためhead…

ggplotで他の変数を基準に並び替える

数値で並び替える場合 以下のようなグラフで考える。 library(tidyverse) data(diamonds) # データ作成 df = diamonds %>% group_by(clarity, cut) %>% summarise(n = n()) %>% ungroup() # わかりやすいものだけ抽出 df_filtered = df %>% filter(clarity %…

map2を使ってサブサンプルに分けた各データに対して複数モデルを適用する

表題通り、サブサンプルに分けた各データに対して複数モデルを適用したい。 より具体的に書くと、以下のdropoutさんの記事では 複数のモデルを当てはめる場合 diamondデータに対して、3モデルを適用 サブサンプルに分けて分析する場合 diamondデータをclarit…

ggplotのfacet日本語テキストを折り返す

これはなにか ggplotのfacet内の文字を任意の文字数で折り返し(改行)をしたい。 どういうことかというと、下記のようにirisベースでテキトーにSpeciesを日本語化して文字数を増やしたもので考える。 library(dplyr) iris2 = iris %>% mutate(Species_jp = ca…

リーダブルコード俺俺メモ①第一部 表面上の改善

最近コードを量産することが多いので、リーダブルコードを読む。 コードは今まで我流だったし、コードを書く機会がそこまで多くなかったので会社でレビューを受けた回数も少ないため一回ちゃんとしないとなぁというのがモチベーション。 自己認識としては、…

テキトーに予測したベースラインを作成するDummyRegressorとDummyRegressorを試す

DummyClassifier/DummyRegressorとは 過去記事(3. ベースラインを定める)にも書いたが、機械学習モデルを作成した際の評価は何かしらのベースラインと比較しなければその値が良いのか悪いのかわからない。 単純な比較対象として、「テキトーに予測した」結果…

sklearn.pipelineを試す

sklearn.pipelineとは sklearn.pipeline とは、前処理用のScaler(変換器)や機械学習モデルを一括で処理するためのオブジェクトを生成する。 これをおこなうことで、管理が容易になったり処理コード部分を簡潔に書くことができる。 実装 データはボストン住宅…

ggchartsを試す

ggchartsとは Rのggplot2のラッパーで、aes + geom_xxxの形式ではなく、pythonのseabornやplotly_expressみたいにグラフ関数を用いて表現をすることができる。ラッパーなので、通常の書き方を組み合わせることができるので、ggplot2の機能が追加されただけと…

plotly expressを試す

plotly expressとは 可視化ライブラリplotlyのラッパー。 plotlyはグラフに対してドラッグ選択すると拡大ができたり、マウスポインタを合わせると詳細な数値をポップアップしてくれる。 そのplotlyをより簡単に記載することができるのがplotly express。 plo…

tqdmでプログレスバーを出す

pythonのtqdmライブラリを試す。 tqdmとは 何かしらの処理に対する進捗をプログレスバーとして表示するライブラリ。 github.com loop処理 基本的な使い方として、繰り返し処理の1loop毎にプログレスバーを更新することができる。 イメージとしては、通常の繰…

Permutation Importanceについての俺俺メモ

Permutation Importanceについて、以下のデータロボットさんの記事を改めて読んで、所見のときはちゃんと理解してなかった部分があったのでメモ。 blog.datarobot.com Permutation Importance自体の解説は上記記事もわかりやすいですが、以下の記事では更に…

DataGripのショートカットキーなど俺俺メモ

もともとSQLはSublime Textで書いて、クエリ投げるのはDataGripだったんですがいいかげん1つに完結させるためにDataGripをちゃんと使えるようにする。 ちなみにDataGripってどんなん?っていう部分は以下の記事が端的でわかりやすい qiita.com キーボードシ…

Jupyter Labのショートカットキー俺俺メモ

Jupyter Lab(Notebookは一部違うが概ね同じっぽい?)をなんとなく使ってて、インデント系と実行系くらいしかショートカットキーを知らなかったのでちゃんと調べて使いそうなやつをメモ。ちなみにMacです。 公式ドキュメントに見当たらないが、有志によるチー…

assertrでRの中間データをチェックする

データを加工するときに、未加工と最終加工結果は値がおかしくないかチェックすることがわりかしあると思うが、最終結果に至る途中段階をチェックすることは手間がかかる。 そのようなとき、assertrではRのパイプラインの途中に入れることで、その段階におい…

pandasのstyleでテーブル出力をわかりやすくする

JupyterにおけるPandasのテーブルデータの出力に色をつけてわかりやすくしたい。 そのためには、pandasのstyle周りをいじれば良いみたい。 基本的にドキュメントのUser Guideベースで書いていく。 pandas.pydata.org pandas.pydata.org styleのいじり方は2つ…

機械学習モデルを構築するときに考えることと、全体の流れ

初の機械学習プロジェクトを仕事でおこなった。その際に、各プロセスでこういう部分をみたり考えたりした方が良さそうだと思ったことをまとめる。 なお、機械学習プロジェクトの話は「仕事ではじめる機械学習」をはじめとして既に色々なところで議論されてい…

Python, RでDBに接続するときのパスワードをコードに直打ちしない

Python, RともにDBに接続するときにパスワード情報をソースに直打ちすると、gitなどにアップするときに色々とヤバいので直打ちしない方法をメモ。 json設定ファイルから 以下のようなpassword管理用のjsonファイルを作る。 { "redshift": { "id": "myID", "p…

lemonパッケージでggplotをいい感じに見せる

ggplotをきれいに見せるパッケージlemonを動かしたので紹介。 基本的に公式ベース github.com facetしたときの軸目盛りの明示 以下のようなデータがあるとする。 library(tidyeval) g = mtcars %>% # ggplot(aes(wt, mpg)) + ggplot(aes(wt, mpg, color = fa…

seaborn(matplotlib)がまったくわからんからメモ

Rのggplot2を普段使っているため、Pythonのseaborn(matplotlib)がまじでよくわからん。俺たちは雰囲気でseabornをやっている。 中途半端にググってやりたいことに即したコードをコピペして・・・みたいなくそみたいなアンチパターンばかりしていていい加減効…

効果検証入門 5章回帰不連続デザイン 俺俺メモ

効果検証入門を買った。因果推論系はあまりちゃんと手を動かしていないので、気になったところのみ自分なりにまとめる。 効果検証入門〜正しい比較のための因果推論/計量経済学の基礎作者:安井 翔太発売日: 2020/01/18メディア: 単行本(ソフトカバー) gith…

効果検証入門 4章DID(とCausal impact) 俺俺メモ

効果検証入門を買った。因果推論系はあまりちゃんと手を動かしていないので、気になったところのみ自分なりにまとめる。 効果検証入門〜正しい比較のための因果推論/計量経済学の基礎作者:安井 翔太発売日: 2020/01/18メディア: 単行本(ソフトカバー) gith…

効果検証入門 3章傾向スコア 俺俺メモ

効果検証入門を買った。因果推論系はあまりちゃんと手を動かしていないので、気になったところのみ自分なりにまとめる。 効果検証入門〜正しい比較のための因果推論/計量経済学の基礎作者:安井 翔太発売日: 2020/01/18メディア: 単行本(ソフトカバー) gith…

効果検証入門 1,2章 俺俺メモ

効果検証入門を買った。因果推論系はあまりちゃんと手を動かしていないので、気になったところのみ自分なりにまとめる。 効果検証入門〜正しい比較のための因果推論/計量経済学の基礎作者:安井 翔太発売日: 2020/01/18メディア: 単行本(ソフトカバー) gith…

Rのrowwriseでmap関数を使わずに行ごと関数適応をおこなう

今まではsapplyやpurrr::mapを用いて行ごとの処理をおこなっていたが、rowwiseを用いて同様の処理を簡潔におこなえるようになった模様。 dplyr.tidyverse.org いったん、簡単な例として、集約関数で試す。 なお、2020/04/12時点ではdplyrの開発版から可能。 …

acrossを用いて、Rで列ごとに別の集約関数をまとめて適応させる

dplyr1.0.0から追加されるacrossで条件に当てはまる列に対して個別に集約関数の適用ができるようになった。 今までもsummarise_atでもできたがこの場合は1条件にしか適用できなかったが、acrossでは複数条件での適用が可能。 例 summarise_atではSepalで始ま…

{{ }}を用いると、普段のdplyrの書き方を関数内でもほぼできるようになった模様

dplyrではNSEなどの関係で、関数内で普段通りのdplyr的な書き方はできなくて色々とややこしかったのが、rlang 0.4.0からは{{ }}を使って直感的な書き方ができるようになったらしい。 www.tidyverse.org www.r-bloggers.com 関数を使わないでコピペを繰り返す…

ggplotの軸の桁表示を制御する

ggplotで、桁数が大きいと自動でe+n表示へと変わる。 自分で分析する場合はいいが、この表示に慣れていない人に見せる際にわかりづらいので制御する。 まずはデフォルトでの表示。デフォルトでは107以降が存在する場合e+nの表示になる。 library(tidyverse) …

ggplotのでいちいちbreaks+seqを使わずに目盛りの刻み幅を指定する

ggplotではX軸の目盛り幅を指定するときはscale_x_continuousに対してbreaksオプションに対してseqを用いて刻み幅nでX軸に値を表示します。 ただし、seqでの指定だと breaks = seq(xmin, xmax, n)といったようにxの表示最大値と最小値を意識して使わないとい…

pythobnでpprintを使ってリスト・辞書をきれいに出力する

割と常識っぽいが知らなかったのでメモ。 リスト・辞書は通常のprintでは1行にすべて表示されるがpprint.pprintを使うときれいに表示される。 以下のようなデータでおこなう。 import pprint hoge = [[1,2,3,4,5,6,7,8,9,10],[1,2,3,4,5,6,7,8,9,10],[1,2,3,…

Rで任意の範囲でヒストグラムを作りたい

問題 ggplotではgeom_histgramを用いるとヒストグラムを作成できる。また、オプションとしてbinwidthを指定するとビン幅を決めることができる。 library(tidyverse) data <- c( -1, 1, 11, 27, 31) data %>% tibble() %>% ggplot(aes(x = .)) + geom_histogr…