TOP
ログイン 新規登録
【競馬予想プログラムソフト#2】コピペOK!ベース前処理ver 0.1 2 テクノロジー

競馬予想プログラムソフトの開発をしている者です。ここではメインモデル作成に向けて、すべてのモデルで共通するベース前処理部分の実装コードです。

実装箇所事態はNotebookレベルで個人サイトに公開されていますが、ここでは個人サイトで公開されている内容をモジュール化したものです。

0.全ソースを公開しました!

以下記事で、競馬データのスクレイピングから、データの前処理、機械学習モデルの作成、モデル分析用WEBアプリの4機能を有したソースを全て公開しました!
https://bookers.tech/post/d0aa21b5-1dea-4a61-a0ae-079499f694d9
こちらの記事を購入される場合は、全体ソースを入手して頂く方が、今後も全体ソースのバージョン更新予定なので、ぜひご検討ください。

1.はじめに

私は、競馬予想プログラムソフト開発を通して、データサイエンスの勘どころを掴みつつソフト開発の経験もできる教材を目指している者です。
今回は、その競馬予想プログラムソフト開発の第二弾となる、ベース前処理部分の実装となります。
なぜベース前処理が必要になるのかについては、以下の動画シリーズを参照ください。
https://youtube.com/playlist?list=PLru9t7T3rNmHqdHWZyFAskDuvQTHRYoao&si=Va51Vs3GXqGCco4c

2.前提事項

2.1, 2.3について

基本は前回公開した2.1節~2.4節と同じです。購入される場合は、事前に環境と競馬データ2010年から2023年分をご用意してください。
前回記事↓
https://bookers.tech/post/82ee8cf4-e95d-4f67-8cef-c038dbe0c957/

2.2 ソースコードのコアな部分は共有済

今回もソースコードの根本的なアイデアになっている部分は別サイトで公開しています。私が管理運営しているさいとなので、よければ立ち寄ってください。
サイトURL:
上記のサイト記事を参考に自力でできる場合は、ご自身で作成ください。上記サイトと本記事の違いは、モジュール化されているかの違いだけです。
つまり、個人サイトの方で共有されている内容は、Notebookを逐一起動しないと使用できませんが、本記事のものは「import DataPreProcessor」とすればどのプログラムからでも呼び出せるようになります。

2.4 必要なPythonパッケージ

前回の2.4節で挙げているものに加えて以下のものを追加でインストールしてください。インストールされていない方は今のうちにお願いします。

  • loguru==0.7.2
※購入された方で、パッケージのバージョン依存によるコマンドエラーが起きた場合は対応出来かねますので、なるべく揃えていただけると問題があった際にフォローしやすいかと思います。。。

3.プログラム仕様

3.1 フォルダ構成

以下プログラム動作時に前提となるフォルダ構成です。事前に記載のあるフォルダは作成していただくようお願いします。
また、「※」がついているファイル/フォルダが今回新規で作成されるものです。それ以外のものは、前回分のソースで作成されたものです。前提となるファイルもあるため、ご注意ください。
中括弧「<>」でくくられているのがフォルダ名。それ以外はファイル名です。また、<any-dir>任意のフォルダ名です。作業用フォルダなので、お好きな名前にしてください。有料記事部分では、この各種ファイル(※1~※5)の中身を上から順番に列挙しています。ソース内にコメントを残していたりいなかったりしていますが、なるべく1機能1メソッド単位で作成しているので、内容を理解したい方はぜひ読み込んでみることをおすすめします。

3.2 サンプルプログラム

今回のソースはモジュールであるため、どのようにimportして使用すれば良いかを以下に示します。
コマンドラインで実行する際には、カレントディレクトリを必ず<any-dir>で定めたフォルダにしてください。
サンプルコード

3.3 実行したらどうなる?

上記のサンプルコードを実行すると、変数: df2にベース前処理を施した結果が入ります。以下に実行時に出力されるログのイメージを示します。
ベース前処理実行時ログイメージ
Select an Image
各ログの出力を見ると、前処理1~前処理8までを実行していることが分かります。

3.4 ベース前処理:DataPreProcessor(is_checkpoint=True)について

ベース前処理のインスタンス作成時に指定する引数に「is_checkpoint」があります。(デフォルトFalse)
この引数にTrueを指定すると、各前処理が実行されるたびに、その時点のdfを保存してくれます。
以下の属性でアクセスできます。
  • 前処理実施前:dataPreP.dforg
  • 前処理1実施後:dataPreP.dfprep1
  • 前処理2実施後:dataPreP.dfprep2
  • 前処理3実施後:dataPreP.dfprep3
  • 前処理4実施後:dataPreP.dfprep4
  • 前処理5実施後:dataPreP.dfprep5
  • 前処理6実施後:dataPreP.dfprep6
  • 前処理7実施後:dataPreP.dfprep7
  • 前処理8実施後:dataPreP.dfprep8
意図としては、途中の前処理で何が行われているのかの差分が見れることや、前処理1から前処理5まで実施したデータが欲しいといった場合など、より柔軟なデータ処理がしたい方のための設定項目です。
デフォルトでは、保存されません。今後もバージョンアップされていくため、前処理が増えるほど、保存されるデータ数が多くなるため、メモリ圧迫の原因になります
Trueにする場合はご注意ください。

4.有料範囲の内容

有料範囲では、3.1で説明したフォルダ構成で※マークがついているファイルのソースを上から順に列挙しています。
すべてで5コードになります。
コード量は以下表を参照ください。配置先フォルダは上記フォルダ構成にあるフォルダ名に準拠しています。
Add row above
Add row below
Delete row
Add column to left
Add column to right
Delete column
配置先フォルダ
ファイル名
コードのみ行数
概要
<any-dir>/<src>/<core>/<logs>
log_manager.py
29行
ログ形式を管理する関数です。
<any-dir>/<src>/<core>/<utils>
decorator_tools.py
32行
ログ出力、チェックポイント保存をコントロールするデコレータが入っています。
<any-dir>/<src>/<data_manager>
data_loader.py
46行
DBから指定した年数期間分の競馬データを取得するクラスです。
<any-dir>/<src>/<data_manager>
dataframe_checkpoint.py
67行
各前処理の処理結果を保存管理するクラスです。
<any-dir>/<src>/<data_manager>
preprocess_tools.py
195行
ベース前処理のメイン処理を行うクラスです。
クラス定義等はオブジェクト指向フル無視のなんちゃってクラス定義になっています。
個人開発レベルのものなので特に自分は気にしない派ですが、宗教上の理由でどうしても許容できない方は適宜修正ください。

5.留意事項

有料記事を購入検討されている方へ、購入する前にご一読ください。
本記事を購入された際は以下の留意事項に同意したものとします。予めご了承ください。
  1. 本ソースは商品ではなく勉強目的で使用されることを想定して作成しました。バグ取りは十分できていないので、購入者様側でバグ対応をしていただく必要があります。
  2. 本ソースはコピーガードされていません。ご自由にコピペしてお使いください。
  3. 本ソースを使用したことによって、購入者様に不利益や違法行為があった場合でも本ソース作成者は一切の責任を負わないことご承知おきください。
  4. 基本的には写経すれば動くプログラムになっていますが、内容を理解したい場合はPythonの入門書レベルの文法を理解していることを前提としています。
 項番1については、プログラム書く以上バグは絶対に直面するものです。挫けずにバグ対応しましょう。必ず良い勉強機会になります。
 エラー内容をコピペして調べると、必ずどこかで同じ目に合っている人がいます。そしてそれを解決してくれる通りすがりのプログラマが答えやヒントを出してくれています。わからなければまずは調べることを徹底してください。頑張りましょう。

6.宣伝

これから今回のような競馬予測ソフトを開発の工程や実際のソース公開をリアルタイムで更新していきます。
YouTubeでソースのエッセンス部分の紹介、運営サイトでソースの重要な処理部分の紹介をしているので、良ければYouTubeや運営サイトも立ち寄っていただけると嬉しいです!
Twitter(自称X)もやっていますので、フォローよろしくお願いします!
また、YouTubeのチャンネル登録していただけると、1000円引きで購入できます

7.実際のベース前処理のソース:コピペOK!!

この続き:17502文字

【競馬予想プログラムソフト#2】コピペOK!ベース前処理ver 0.1
ゆっくりデータサイエンス
1500円

もしくは