よっしーの私的空間

機械学習を中心に興味のあることについて更新します

Pythonのf-stringsを使ったPandas.DataFrameの列名の動的設定

変数を使用してPandas.DataFrameの列名を動的に設定する方法についてまとめます。 Pythonにはフォーマット済み文字列リテラル(f-strings)という記法が存在するのですが、今回はそれを使用します。 1.フォーマット済み文字列リテラル(f-strings)とは 文…

pandasでデータ抽出する際の速度の比較(loc対query)

Pandas Dataframeに対して、locで抽出した方が良いのか、queryで抽出した方が良いのか。 可読性はqueryの方が良さそうですが、今回は性能面で比較してみようと思います。 1.データダウンロード データはsklearnの「カリフォルニア住宅価格」を使用しました…

foliumを使ってハザードマップを重ねる

1.概要 Pythonの地図ライブラリ「folium」を使ってハザードマップを重ね合わせたいと思います。 ハザードマップは国土交通省国土地理院が公開しているのですが、APIも公開しているので、色々自分でカスタマイズすることもできます。ハザードマップAPIにつ…

Pythonで株価データや金融データを取得する方法(pandas_datareader)

pandas-datareaderというpythonライブラリを使用して株価データや金融データを取得する方法についてまとめます。pandas-datareaderとはウェブ上の様々なデータソースにアクセスするライブラリです。今回は以下にアクセスします。 アクセス先 概要 Stooq ポー…

Seleniumエラー:Element is not clickable at point (xxx, xxx)について

Selenium使用時に「Element is not clickable at point (xxx, xxx)」というエラーが出て色々調べたので、その内容についてまとめます。 1.結論 2.事象再現 3.解決方法 4.ソース一式 1.結論 最初に結論だけ述べると、、 エラー原因:画面外のelemen…

タスクスケジューラで陥りやすいトラブル集

タスクスケジューラ関連で個人的に躓いたポイントとその解決策についてまとめておきたいと思います。 1.予定時刻になってもタスクが実行されない問題 ① 事象 以下のように繰り返し実行のタスクを作成するが、予定時刻になってもタスクが実行されないという…

競馬データのスクレイピング

netkeibaから競馬データをスクレイピングする方法についてまとめます。既に同様の記事は世にたくさん出回ってますが、少し改良して効率化してみました。 1.既出のスクレイピング方法の問題点 2.どうやって効率化するか 2.1.開催レース一覧ページから…

SHAPを使用した回帰問題の機械学習モデルの局所解釈方法

shapライブラリを使用して、回帰問題を解いた機械学習モデルの大局的解釈を行う。 1.SHAPとは SHAP(SHapley Additive exPlanations)は、機械学習モデルの局所的な解釈可能性を提供するためのフレームワークです。SHAPは、個々の特徴量が予測にどのように…

PDP/ICEを使用した回帰問題の機械学習モデルの大局的解釈方法

pdpboxライブラリを使用して、回帰問題を解いた機械学習モデルの大局的解釈を行う。 1.データセット 今回はsklearnのボストン住宅価格データセットを例に実装してみる。データセットの概要は以下の通り。 目的変数:ボストンの地域別住宅価格 説明変数:以…

Pandasでグループ毎に過去データを集約する方法

PythonのPandasを用いて、任意のカラム毎にグルーピングして、過去データを集約する方法についてまとめます。調べても意外と情報が少なくて苦戦しました。見つけても、複数カラムでグルーピングできなかったり、自信のデータを除外できなかったりと。これら…

競馬のレーティングをしてみた(Elo Rating)

前回はGlicko2 Rating Systemを使用してレーティングを行いましたが、今回はElo Ratingを使用してみました。今回は競走馬だけではなくジョッキーやトレイナーについてもレーティングを行っています。Elo Ratingは通常チェス等の1対1の対戦において使用される…

競走馬をレーティングしてみた(Glicko2 Rating System)

競走馬の強さを評価するために競走馬のレーティングをしてみました。レーティングはGlicko2 Rating Systemというのを使用してみました。Glicko2の概要やPythonでの実装方法については以下の記事にまとめたので、良ければ見てください。 book-read-yoshi.hate…

多人数対戦におけるレーティング方法(glicko2 rating systemを用いて)

競走馬の強さをレーティングをしたくて、レーティングシステムについて調べたところ、glicko-2 rating systemというのが良さそうでした。本記事ではこれの直感的な理解やPythonによる実装方法についてまとめます。Glicko-2 rating systemの計算式について知…

Tensorflow-EfficientnetでGradCAMを実装してみた

前々から気になってたGrad-CAMを実装してみました。実装に当たって以下を参考としてます。 EfficientNet-Keras-GradCam-Visualization/inference_example.ipynb at master · lvisdd/EfficientNet-Keras-GradCam-Visualization · GitHub上記は訓練済みのEffic…

ImageDataGeneratorでデータ拡張してみた

ImageDataGeneratorを使って画像拡張を色々試してみます。使う画像は実家のワンコ(小次郎君)の写真です。 1.画像の水増し ① 回転(rotation_range) ② 横にずらす(width_shift_range) ③ 縦にずらす(height_shift_range) ④ 明るさを変える(brightnes…

ImageDataGeneratorにおいてfeaturewise系のオプションがうまく機能しない問題

tensorflow.kerasの画像拡張用モジュールImageDataGeneratorを使ってデータ拡張する際に、featurewise系のオプションの使用方法で躓いていたのですが、解決策が分かったのでまとめます。結論は至極シンプルで、しかも公式ドキュメントにちゃんと書かれている…

機械学習における不均衡データへの対処方法(Over Sampling, Under Sampling)

機械学習における不均衡データへの対処方法としてアンダーサンプリングやオーバーサンプリングについてまとめます。不均衡データとは目的変数のクラスの度数が極端に偏っているデータのことです。今回はKaggleで公開されている「Credit Card Fraud Detection…

pandas-datareaderで株価データを取得する際に日付を指定できない問題

※2021/11/4現在において「日付を指定できない問題」が解消していることを確認しました。 ※同様の事象が再発した場合の参考になるかもしれないので、本記事は残しておきます。株価データを取得する際に、多くの人がpandas-datareaderを使ってStooq(各種経済…

LightGBMでOptunaを使用するときの再現性確保について

Optunaとはハイパーパラメータチューニングを自動で実施してくれる大変便利なフレームワークで、LightGBMを使う人は良く使うんじゃないかなと思います。今回はそんなOptunaを使用するときの再現性の確保方法についてまとめます。私が使用しているパッケージ…

TensorFlowとPytorchにおける画像のデータ構造の違いと変換方法について

本記事では以下についてまとめます。 TensorFlowとPytorchにおける画像のデータ構造の違いについて解説 データ構造の相互に変換する方法について解説 1.TensorFlowとPytorchの画像のデータ構造の違い 1.1.概要 1.2.具体例を使ってデータ構造の違い…

Pythonで株の銘柄コード一覧を取得する方法

Python上で銘柄コード一覧を取得して、Pandas.DataFrameに格納する方法についてまとめます。手っ取り早くソースコードを見たい方は本記事最下段の参考まで飛んでください。 1.概要 2.JPXから銘柄コード一覧をダウンロード 3.ダウンロードしたExcelをPa…

TensorflowによるBiT(Big Transfer)の実装

2019年にGoogle Brainから発表された画像認識モデルBiT(Big Transfer)をファインチューニングする方法についてまとめます。BiTにかかわる解説は以下が良くまとまっていました。 パラメータ数10億!最新の巨大画像認識モデル「BiT」爆誕 & 解説 - Qiita簡単…

横持ちデータを縦持ちデータに変換する方法(Pandas)

PythonのPandasで横持ちデータを縦持ちにデータに変換する方法についてまとめます。 縦持ちデータを横持ちデータに変換する方法については過去記事にまとめています。 1.実施内容(概要) Pandasの以下のような横持ちデータを 氏名 数学 国語 英語 ドイツ…

横持ちデータを縦持ちデータに変換する方法(SQL)

SQLで横持ちデータを縦持ちにデータに変換する方法についてまとめます。 縦持ちデータを横持ちデータに変換する方法については過去記事にまとめています。 1.実施内容(概要) SQLで以下のような横持ちデータを 氏名 数学 国語 英語 ドイツ語 アラビア語 A…

機械学習による株価予測(LightGBM)

LightGBMを使用して株価予測をしていきたいと思います。ソースの全文は本記事の末尾に載せました。忙しい人は1.概要と末尾のソースで十分かもしれません。 1.概要 1.1.予測対象 1.2.説明変数 1.3.分析期間 1.4.予測結果 2.株価データ…

縦持ちデータを横持ちデータに変換する方法(SQL)

前回はPythonのPandasで縦持ちデータを横持ちにする方法についてまとめましたが、今回はSQLです。PostgreSQLで実行した方法ですが、たぶんOracleやMySQLでも動くと思います。動かったなかったらごめんなさい。 縦持ちデータを横持ちデータに変換する方法につ…

縦持ちデータを横持ちデータに変換する方法(Pandas)

データを縦持ちから横持ちに変換する方法について解説します。 横持ちデータを縦持ちデータに変換する方法についてはこちらでまとめています。 1.そもそも縦持ちと横持ちとは 縦持ちとは縦に長いデータで以下のようなデータのことです。 氏名 科目 点数 A…

ViTモデルロード時のエラー(ValueError: Unknown layer: ClassToken)について

ViT(Vision Transformer)を使用して学習したモデルをロードしようとしたところ、(ValueError: Unknown layer: ClassToken)というエラーが出ました。本記事ではこのエラーに対する対処方法についてまとめました。

ViTとEfficientnetをCIFAR-10で試してみた

ViT(Vision Transformer)とEfficientnetをCIFAR-10で試してみて、分類精度や処理速度の違い等を比較しました。

TensorflowによるEfficientNetの実装

EfficientNetの概要を紹介するとともに、TensorflowによるEfficientNetの実装方法についてまとめました。qubvel/efficientnet(tfkeras)を使用しています。