まずは蝋の翼から。

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

使い方メモ(ライブラリ)

scikit-learnの機能を拡張/変更したscikit-learn準拠モデルを作る

これはなにか scikit-learn準拠の自作予測モデルを作成する 実例 実際にリッジ回帰をおこなう場合のsklearn.linear_model.LinearRegression 自作のTransformerを使う 実例 外れ値の置き換え 特徴量追加 その他 参考 これはなにか scikit-learn APIにはない新…

Optunaを使ってみる

Optunaとは 実装1: 簡単な例 評価関数 目的関数 最適化 実装2: lightGBMでの例 実装3:閾値の最適化 その他 sample 複数アルゴリズムの使用 参考 Optunaとは ざっくり書くと、 良い感じのハイパーパラメーターを見つけてくれる ライブラリ。 ちゃんと書くと…

Classを用いて、特徴量作成を仕組み化する@ぐるぐる

これはなにか 自作関数での処理との違い 参考記事をトレス ブロックを使った特徴量作成処理(コピペ) 内部状態が更新されるブロック例・ CountEncoding 内部状態更新が行われないブロック例・StringLength 各特徴量処理ブロックをまとめて処理 内部状態更新が…

特徴量作成を楽にするライブラリいくつかまとめて試す②xfeat

この記事はなにか 何ができるか 特徴量の変換 特定型の特徴量のDFを作る 特徴量の加工 カテゴリカル変数 Label Encoding Count Encoding Target Encoding 列組み合わせ(文字列) 数値変数 集約関数 列組み合わせ(数値) Lambda処理 この記事はなにか 機械学習…

特徴量作成を楽にするライブラリいくつかまとめて試す① featuretools

この記事はなにか 何を書かないか featuretools 複数テーブルのあるデモデータで試す 1. EntitysetというER的なデータとデータ関係が入ったオブジェクトを作成 集計/変換処理をする 1テーブルのデータで試す 参考 この記事はなにか 機械学習の特徴量を作ると…

楽にEDA初手ができそうなSweetvizメモ

EDA初手としてpandas_profilingが有名だがデータ数が多いとめちゃくちゃ時間がかかるのであまり好きではない。 Sweetvizが高速かつ、データ比較もできるようなので雑に試す。 github.com 1データの場合 import sweetviz as sv my_report = sv.analyze(df) my…

Shapashで機械学習モデルの挙動を可視化する

記事の目的 前回の記事ではShapashと同様に機械学習モデルの挙動を楽に可視化するEvidentlyを紹介した。 knknkn.hatenablog.com 記事中でShapashについても軽く触れたが使用用途としては以下のような違いがある。 Evidentlyはモデルの振る舞いを、推定元デー…

Evidentlyで機械学習モデルの挙動を可視化する

背景 機械学習モデルは作成後にそのモデルがどのような振る舞いをするのか調べる必要がある。 理由としては 実運用上での注意点 例えば、「このモデルは全体としてはそこそこの精度だが、20代では精度があまり良くない」といったことを把握しておくと実運用…

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

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

sklearn.pipelineを試す

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

ggchartsを試す

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

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

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

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

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

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をやっている。 中途半端にググってやりたいことに即したコードをコピペして・・・みたいなくそみたいなアンチパターンばかりしていていい加減効…

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 関数を使わないでコピペを繰り返す…

Rで縦持ち・横持ち化する

Rでは、今まで縦持ち化するときにはtidyr::gather、横持ち化するときはtidyr::spreadを使っていたがオプションが毎回よくわからずドキュメントを読んでいたが、それはみんな同じことを思ってたみたいでdplyr1.0以降では再設計されてtidyr::gather→tidyr::piv…

EDAでpandas_profilingを使う

pandas_profilingがめっちゃ便利だった。 特徴量のEDAにおいて、一般的にはinfo()を使ってデータ量や型を見たり、describe()を使って統計量を見たり、isnull().sum() を使ってNull数を見たり、関係性や分布などを自分で可視化したりする。 pandas_profiling …

文字列からformulaを作りたい

やりたいこと リストにある文字を組み合わせて作った式をfor文で動的に変えていきたい。 問題点 以下のコードのように、felm関数のformulaに文字列で式を渡した場合エラー。 ちなみに、lfe::felmは固定効果モデルを使うときの関数。 knknkn.hatenablog.com l…

ggpointdensityでgeom_pointの重なっている部分をヒートマップで表現する

表題通り。基本的にはドキュメントレベルしかしてないのでただのメモ。 github.com ggpointdensityの特徴 散布図を作図するgeom_poin()では点が重なっている場合どれくらい重なっているかわからなかった。 対応策として、geom_density2d()や、geom_bin2d()が…

facet_gridで1軸に複数要素を指定する

めちゃくちゃしょうもない小ネタですが、以下のようにfacet_gridで軸列を指定するときに+を使うと複数指定が可能になる模様。 facet_grid(. ~ c(color, cut))とかで複数要素指定できるんかなー → できないやんけ!と思ってたら。。。。 library(tidyverse) d…

ggforce::facet_matrixを用いてfacet_grid(c(A,B,C) ~ c(D,E))的な表現を実現する

以下のツイートを見かけたので試してみた記事。 ggforce::facet_matrix 凄いわ.tidyr::gather をスキップできる…….ggplot(iris) + geom_boxplot(aes(Species, .panel_y)) + ggforce::facet_matrix( rows = vars(everything(), -Species), cols = vars(Spec…

状態空間モデルをstanでやりたかった② パネルデータに対する状態空間モデル(階層ベイズ)

前回では以下のようなModelを考えた。 tが閉店日の場合、 それ以外の場合、 knknkn.hatenablog.com だが、結果としてsamplingがおこなわなかった。そのため、今回もプロットは無しで理屈のみ。。。 前回のモデルと今回のモデルの差 前回のモデルは「ある1店…

状態空間モデルをstanでやりたかった①

注)本記事は途中で詰まったので結局モデル立てただけで結果は出てません。 状態空間モデルの勉強をしたものの、手を動かしていないので練習。 データ kaggleのrossmann-storeコンペ。 Rossmann Store Sales | Kaggle カラム名の意味とかはここにまとまって…

状態空間モデルで何を状態方程式とし、何を観測方程式とするか

疑問 割と色々な書籍、例えばアヒル本で 観測値Y[t]を要素の和に分解するのが定石 (p.235) とあるが、場合によるのでは?てかそもそも状態方程式/観測方程式どっちに何書くかの切り分けってなんだ?という疑問が湧いた。 StanとRでベイズ統計モデリング (Won…

brmsを使ってみる

brmsというStanのラッパーパッケージで遊ぶ。 概要 例えば、rstanを使う場合はStanコードを別ファイルの.stanに記述してそれを呼び出す形でbayes推定をおこなう。一方、brmsを用いるとStanコードをわざわざ書かなくてもbrmsパッケージの関数を用いればbayes…

StanのMCMC結果&パラメータ結果を可視化する② tidybayes

Stanの結果を可視化する。 今回は tidybayesについて。 前回はbayesplot shinystanパッケージだった。 knknkn.hatenablog.com tidybayesでパラメータのサンプリング結果を可視化する 今回は以下の記事と公式を参考にします。 tidybayesパッケージで推定結果…

StanのMCMC結果&パラメータ結果を可視化する① bayesplotとShinyStan

背景 最近rstan経由でStanを使ってる。rstanを用いた結果(収束診断とか事後確率分布とか)はそのままのデータでは可視化をするのが面倒。 可視化するのに便利なパッケージはないか調べてみると、ggmcmc とか bayesplot とか shinystan とか tidybayes とか色…