盆暗の学習記録

データサイエンス ,エンジニアリング,ビジネスについて日々学んだことの備忘録としていく予定です。初心者であり独学なので内容には誤りが含まれる可能性が大いにあります。

モーメント法と最尤推定法の関連性についてメモ

メモしようとしたんですがはてなブログは単純な数式しかサポートしてなくて書けなかったのでzennに書きました。 zenn.dev ざっくり導入だけ書くと、難波明生『計量経済学講義』にて、 最尤推定量は, (7.7)式を直交条件として用いたGMM推定量であると考える…

React+TypeScript+ViteでChrome拡張機能を作るときの構成

React + TypeScript + ViteでGoogle Chrome拡張機能を作る方法をメモしておきます。 なお、以下の環境下での話になります。 // 環境 "vite": "^5.2.0", "typescript": "^5.2.2" TypeScriptでプロジェクトを作る @types/chromeを入れる manifest.jsonを追加す…

Linux OSの起動時にプログラムを自動実行する

最近よく使うので簡単にメモします。 私の環境 Ubuntu 20.04(WSL) 手順 /etc に rc.local というファイルを作成する sudo vim /etc/rc.local rc.local の中身はシェルスクリプトで、ここに実行したいプログラムを書く。 (shebangも書かないとうまくいかな…

pythonで数値微分するときはnumdifftoolsが便利そう

scipy.optimize.approx_fprime 先日、フィッシャー情報量を対数尤度の2次の導関数から計算してみようと思い、ChatGPTに「pythonで数値微分するコードの例を出して」と尋ねてみました。 するとscipyの approx_fprime という関数が提案され、2次の導関数につい…

書籍の情報を検索して参考文献のフォーマットで取得できるChrome拡張機能を作ってみた

表題の通りのものを作りました Book Searcher もし同じニーズのある方がいらっしゃいましたらお使いください 背景 機能 どうやって作っているのか 書籍データ・検索システム 参考文献のフォーマットへの整形 名前のパース フロントエンド・UI 既知の問題 そ…

seabornのkdeplotでhue引数を使うときはcommon_norm=Falseを検討しよう

TL; DR seaborn.kdeplotでクラスごとに分布を描くとき、デフォルト引数のままだとクラスごとのサンプル数が違うと分布の大きさも違ってしまう kdeplotではデフォルトではcommon_norm=Trueになっており、全クラスの分布の面積の合計が1になるように分布が調整…

Plotlyで地図上に散布図を描く

ドラッグしたりズームできるようなマップ上に散布図などを描きたいとき、FoliumだけでなくPlotlyも使えることを知ったのでメモしておきます。 環境 python:3.11のDocker Imageの下で、以下のバージョンのライブラリで試しました。 jupyterlab==4.0.10 plotly…

stliteを試してみる

Streamlitを静的サイトで動かせるstliteというライブラリがあるらしいです。 github.com 簡単に試してみたのでメモしておきます。 Streamlitとは StreamlitはPythonだけで簡単にWebアプリを作るライブラリです。 よくある使い方としてはダッシュボードとして…

[R]summarytoolsパッケージがデータをざっくり見るのに便利そう

タイトル通りです。なんか便利そうなの見つけたので何ができるか簡単にメモしておきます メソッド紹介 {summarytools}はRにおいてデータの要約統計量や分布などを簡単に一覧で見られるメソッドたちを提供するパッケージです。 freq() 度数分布表を出してくれ…

モニターの輝度を一括・自動で調整するアプリを作った

①輝度を自動操作したい(朝は明るく、夜は暗くしたい)、②複数のモニターの輝度を一括で操作したい、という自分の要望を叶えるためのアプリを作りました

順序尺度にピアソンの積率相関係数を使うと相関を過小評価するおそれがある

最近、因子分析を勉強しています。 そのなかで順序尺度の相関係数という話題があったのでメモ。 例 順序尺度の相関係数 カテゴリ数がいくつだったら積率相関係数を使っていいのか ポリコリック ポリシリアル 参考文献 例 たとえば、こんなデータがあったとし…

[Javascript]HTMLや画像をコピーさせる

最近まで知らなかったのでメモ。 テキストのコピーの場合 そもそもコピーはどう実装するのか、文法の基礎を確認していきます。 以前であればdocument.execCommand("copy")を使っていたのですが非推奨になったようです。今はnavigator.Clipboardを使うようで…

Electron + TypeScript + React の環境構築手順のメモ

Web開発の知識をそのままデスクトップアプリ開発に使えるということで、Electronが面白そうだな~と思っています。 jsに慣れている方であれば環境構築に悩むことはなさそうですが、筆者はReactもElectronも初心者なので環境構築の手順をメモしておきます 環…

[OpenCV + tkinter]電子書籍の自作のための画像編集を行うアプリをPythonで作る

作業効率化のため、自分用に↑のようなアプリを作ってみました。 背景 画像の処理 ロジック 表紙の処理について 表紙だけ処理を分ける理由 表紙の判別ロジック 文字の色を濃くする処理について コード アプリ化 背景 私はとても狭い部屋に住んでいるため(&…

SHAP valuesの論文を読んだのでメモする

Lundberg, S. M., & Lee, S. I. (2017). A unified approach to interpreting model predictions. Advances in neural information processing systems, 30. 2017年の論文なので今更ですが読んだのでメモします。 沢山の内容を10ページに詰め込んだような全…

CSVとFeather, Parquetを比較してみる

最近Parquetというファイルフォーマットを知りました。S3にデータを置いてDWHを作ったりする際などに使うようです。 pyarrowパッケージをインストールしていればpandasからFeatherやParquetにお手軽に保存できることに気づいたので試してみてCSVと比較してみ…

note.comを読みやすくするChrome拡張機能を作った

皆さんはnote.comを使っていますか? 最近は利用者がどんどん増えていて記事数も多いため、なにか興味深い記事を見かけた際にアクセスする機会も増えているのではないでしょうか。少なくとも私はそうです。 noteはいいサービスだなと思う一方で、記事を読み…

「150 successful machine learning models: 6 lessons learned at booking. com」を読んだ

KDD19で発表されて一時期話題になっていたBernardi et al. (2019) 150 Successful Machine Learning Models: 6 Lessons Learned at Booking.comを読みました。 これは宿泊施設を検索して予約できるウェブサイト「Booking.com」における機械学習の活用事例と…

『データ分析と意思決定理論』を読んだ

『データ分析と意思決定理論』を読みました。 マンスキー データ分析と意思決定理論作者:チャールズ・マンスキーダイヤモンド社Amazon この本は経済学者が書いた一般向け(非専門家向け)の本で、第1部がデータ分析、第2部が意思決定理論という構成になって…

NGBoostの理論のまとめ

NGBoost: Natural Gradient Boosting for Probabilistic Predictionの論文を読んだのでメモしておきます。 ざっくり要約すると以下のような感じでした。 NGBoostは予測を点ではなく分布で予測するための機械学習アルゴリズム 勾配ブースティングの枠組みで最…

pystanの環境構築で詰まったときのメモ

変なつまり方をしたのでメモ まとめ dockerのpython:3.9をベースイメージに環境を作ろうとしていたが、動かなくて困っていた pystan 3.0 は gcc ≥ 9.0 が必要であるにも関わらず、python:3.9のイメージに入っているgccはver.8系だったのが原因と思われる ubu…

[python]loggerの出力が重複するのを防ぐ

pythonのloggingを使うときのメモ 背景 loggerインスタンスにStreamHandlerやFileHandlerを設定する処理は使いまわしたいので、関数にしたい。 その際、単純にその処理を関数にまとめると、その関数が複数回呼ばれて同じ名前のloggerが複数回参照された場合…

LightGBMの理論のまとめ

今更ながらLightGBMの論文を読んだのでその時のメモを残しておきます。 ※GPUでの計算への適応など、計算機での活用に関する技術については省略しています。 要約 LightGBMが使う既存の技術 pre-pruning early stopping問題 best-first (leaf-wise) tree hist…

LightGBMの「No further splits with positive gain」というwarningの意味

LightGBM関連の論文やソースコードを読んでいてわかったことをメモ 概要 LightGBMを使っているとたまに No further splits with positive gain, best gain: -inf のようなwarningが表示されることがある。 これはLightGBMが内部で決定木を成長させている際に…

scikit-learn Pipelineの基本の使い方

個人的に業務ではよく使うのでもっと多くの人に認知されてほしいという想いを込めてメモ Pipelineとは scikit-learnにはPipelineというclassがある。これは複数の前処理用クラスと予測モデルをまとめて一つのオブジェクトにすることができるもの。 例えば、S…

データの前処理で並列処理を使う

pythonのmultiprocessingパッケージについてのメモ。 docs.python.org コード例 ProcessクラスとPipeクラスを使う場合 Poolクラスを使う場合 なぜmultiprocessingなのか コード例 こう書けば良いんじゃないかな、と思った実装例を載せていきます。 以下では…

unittestでかかった時間を計測する

前にどこかで見かけたやり方をメモ。 unittestでは、各テストの前にはsetUp()が実行され、テストの後にtearDown()が実行される。 なのでその前後でtime()を呼んで、その差分を表示させる。 from time import time import unittest class TestStringMethods(u…

LightGBMにおける欠損値の扱い

Githubでの議論などを見てわかったことをメモしておきます。 前提 学習時の欠損値の取り扱い numerical featureの欠損値 categorical featureの欠損値 予測時の欠損値の取り扱い numerical featureの欠損値 categorical featureの欠損値 まとめると 考察 ゼ…

FlaskとAjaxを使って非同期にサイトの表示を変える

FlaskとjQueryとsqliteについて少し勉強したのでメモ。 シンプルな例 まず、シンプルに文字を書き換えるだけの場合について。 バックエンド flaskでサーバー側の処理を書きます。 ページを表示するための index() と、フロントエンドからのAjax通信に対して…

なぜバギングは予測誤差を減らすのか

機械学習の分野では、バギング(bagging)というアンサンブル学習の方法があります。 なぜバギングは予測誤差を下げるのか?という点について少し学んだのでメモしておきます。 ※記事全文はGithubに載せています 2日ほどはてなブログでの数式の記述(はてなT…