まずは蝋の翼から。

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

Python

atmaCup #12に参加して覚えたことメモ②lightGBM関係

これはなにか 下準備 Cross Validationをいい感じに実行する カスタムメトリクスを使う これはなにか データ分析コンペのatmaCup #12に参加して、他の人のコードを読んで覚えたことのメモです。 atma.connpass.com コンペのdiscussionで公開されているコード…

atmaCup #12に参加して覚えたことメモ①特徴量作成

これはなにか よく使う項目グループを定数化 特徴量の作成 特徴量の処理の仕方 まとめて一気に関数処理 ひとつずつ処理 集約関数のエレガントな処理 これはなにか データ分析コンペのatmaCup #12に参加して、他の人のコードを読んで覚えたことのメモです。 a…

順序付き多値分類を回帰問題で解くときの閾値をoptunaで求める

目的 データ 分類問題として解く 回帰問題として解く 連続値の予測部分 パターン1.Clipping+四捨五入でラベル化する パターン2. Optunaで閾値を探索してラベル化する 計算時に変数を用いる 対応策1.高階関数 対応策2. Objective Class+call 最適化の実行 目…

pipeを用いてpythonを極力メソッドチェーンで書く

この記事はなにか やりたいこと pipeを使わないで処理をする pipeを使って処理 余談 この記事はなにか 可読性/保守性を上げるために、できる限りメソッドチェーンで書きたい。 過去にメソッドチェーンについての記事は書いたが、どうしてもメソッドチェーン…

Jupyter noebookでデバッグをする方法

この記事はなにか 以下のTweetを見て知らなかったので、自分で手を動かした まじでマジックコマンドの"%debug"便利なのでjupyter使ってる人で知らない人いたら一度使ってみてほしい。。。「知らんかった!!」っていう人があまりにも多い。。。わざわざgif作…

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テーブルのデータで試す 参考 この記事はなにか 機械学習の特徴量を作ると…

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

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

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

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

pythonで動的にオブジェクトを作成する

目的 pythonで動的にオブジェクトを変えたい。 ユースケース 乱数を変えたランダムサンプリングデータを複数個作りたいときや、絞り込みを変えたデータを作成したいときなど。 execでのやり方 execを使うと文字列でコードを書けるので利用する。 docs.python…

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

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

sklearn.pipelineを試す

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

plotly expressを試す

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

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

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

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

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

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…

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

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

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,…

EDAでpandas_profilingを使う

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

pandasのMultiindexを整理する

この記事はなにか こういうデータフレームを こういう形にしたい。 以下の記事の「集約」という節でpandasのMultiindexをもとの形式に戻すやり方を書いたがもうちょっとわかりやすい方法があったのでメモ。ただし、メソッドチェーンで完結していない。 knknk…

tidyverseの世界からpandasの世界に入ってみた

これはなにか 最近pandasを触っているが、色々なことにモヤモヤしている。 例えば、人によっては書き方がdf[[絞りたい行条件],[列1, 列2]]みたいな書き方なので、df %>% select(列1, 列2) %>% filter(絞り込みたい行条件)に慣れた身からすると可読性が悪い。…

Kaggle初挑戦にあたり2019 Data Science Bowlを2日間やってみた記録

概要 これはなにか この3連休に12時間くらいKaggleに初挑戦(Titanic除く)をしてみたので、現在開催中に2019 Data Science Bowlをやってみたのでそのメモ。 www.kaggle.com 何故やったか 仕事で使いそう 予測系は仕事でほぼ使わないので学習コストに対するリ…

各モデルで使われる変数重要度についてまとめる

はじめに 機械学習タスクにおいて、ブラックボックス性を減らし解釈性を上げるためにどの特徴量がどれくらい効いたかを示す必要性が増えている。また、特徴量選択やフィーチャーエンジニアリングの際にも参考になる。そのため、機械学習タスクをやるにあたっ…

SHAP valueを使ってみる

SHAP valueを実際に試してみる。コードは以下の記事のものを拝借。 Shapを用いた機械学習モデルの解釈説明 - Qiita なお、データはkaggleのHouse Pricingコンペデータをテキトーに加工して作っている。SalePrice(対数化済)を目的変数として、簡易化のため変…

R(Python)のjoin条件で等号以外を使う

目的 下記のようなデータにおいて、Aのstart_dateからend_dateの期間でBをJOINしたい。 A = tibble(id = c(1,2,3), start_date = c('2018-01-01','2018-02-01','2018-03-01'), end_date = c('2018-01-02','2018-02-03','2018-03-01')) B = tibble(date = seq…

クラス分類の評価手法あれこれ

評価手法 クラス分類の評価手法について書く。 学習元は引き続き「Pythonではじめる機械学習」。 Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎作者:Andreas C. Muller,Sarah Guido発売日: 2017/05/25メディア: 単行…