相対タイムのモデル学習に苦戦中です。だからってか、まあ、いつも通りに独自に。
穴予想は変わらないけど、これ、実はこのレース的には過去に三連単二百万馬券が出てるって表示になってるので無茶ではない(笑)
そろそろ当てたい。
自分の記録用
相対タイムのモデル学習に苦戦中です。だからってか、まあ、いつも通りに独自に。
穴予想は変わらないけど、これ、実はこのレース的には過去に三連単二百万馬券が出てるって表示になってるので無茶ではない(笑)
そろそろ当てたい。
ホームベーカリー購入して早半年が過ぎました。ここまで色々焼いてみてます。しかし、当初は焼きたてを切るのが大変で、パン切ガイドなるものの存在を知るも、パン切包丁はその昔に結婚時に実家にあったものを母がくれたやつを長年当たり前にってか、まあ、ホームベーカリー購入前は、子供たちがまだ小さくて誕生日ケーキやクリスマスケーキを切る時の位しか使わずにいました。
パン切ガイド使っても切るのは簡単ではなかったんですが、ふと、これ、切れ味悪いから切るのが大変なのではって事でamazonで検索。まあ、価格的にも色々とあるけどコスパ的に選んだのが今回の製品です。
まあ、そもそも、このホームベーカリー関連は全てポイントで済ませてるので今回のもAmazonギフトの残りを使って出費もしてないので。
ノイズを削るって話と、精度を上げるって話。そんな中でちょっとJRA-VANの闇というか、まあ、時代の仕業なんだけど、そんなのを目の当たりにしてちょっと余分な時間を掛けてしまった。もうあまり気が進まない特徴量の追加なんですが、そろそろ今回を一旦区切りとしてってか、そもそもGWが本日までなので、朝から晩までコーディングな生活は終わりです。
まあ、そんなギリギリのGW最終日に新たな特徴量追加してCSV出力、まずはAutoMLで6時間学習して得た\(R^{2}\)値は0.2543で、
| 3,455R | 1点 | 芝(1,689R) | ダート(1,646R) | 障害(120R) | 8頭以下(219R) | 9~12頭(809R) | 13頭以上(2,427R) | 多点 |
| 単勝 | 26.11% (78.16%) |
24.99% (76.18%) |
26.97% (79.00%) |
30.00% (94.58%) |
34.70% (79.73%) |
28.06% (77.38%) |
24.68% (78.28%) |
55.66% (76.40%) |
| 複勝 | 58.12% (83.90%) |
57.67% (83.90%) |
57.90% (82.89%) |
67.50% (97.75%) |
70.78% (90.82%) |
63.29% (84.97%) |
55.25% (82.92%) |
88.57% (81.08%) |
| 枠連 | 14.05% (74.37%) |
12.85% (73.46%) |
14.42% (72.90%) |
25.25% (110.81%) |
-- (--) |
16.44% (76.71%) |
12.36% (68.88%) |
30.14% (77.34%) |
| 馬連 | 11.00% (68.10%) |
10.18% (62.04%) |
11.42% (73.83%) |
16.67% (74.92%) |
22.83% (72.51%) |
13.23% (69.79%) |
9.19% (67.14%) |
23.88% (68.25%) |
| ワイド | 25.33% (78.87%) |
25.10% (75.91%) |
25.15% (81.42%) |
30.83% (85.67%) |
45.21% (83.20%) |
30.04% (77.53%) |
21.96% (78.93%) |
46.80% (76.69%) |
| 馬単 | 6.11% (68.47%) |
5.39% (59.09%) |
6.50% (76.47%) |
10.83% (90.67%) |
10.96% (72.37%) |
7.05% (69.59%) |
5.36% (67.74%) |
23.88% (65.52%) |
| 三連複 | 6.22% (72.57%) |
7.10% (76.59%) |
5.47% (70.10%) |
4.17% (49.92%) |
16.44% (71.42%) |
8.28% (75.13%) |
4.61% (71.83%) |
16.58% (68.21%) |
| 三連単 | 1.74% (95.18%) |
1.95% (116.29%) |
1.58% (78.37%) |
0.83% (28.75%) |
4.11% (160.68%) |
2.60% (120.27%) |
1.24% (80.91%) |
16.58% (65.00%) |
| 総合 | 59.28% (77.50%) |
58.97% (78.03%) |
58.87% (76.89%) |
69.17% (78.42%) |
74.89% (90.10%) |
64.40% (81.42%) |
56.16% (74.58%) |
88.86% (68.59%) |
昨年を検証してみるとかなり頑張ってはいるんですが、もう一つ上に行ききれない。今はModel Builderで24時間学習させてるので、明日仕事終わった後の結果待ちです。
追記 2026.5.6 20:02
Model Builderの24時間学習で得たのは\(R^{2}\)値0.2651で、
| 3,455R | 1点 | 芝(1,689R) | ダート(1,646R) | 障害(120R) | 8頭以下(219R) | 9~12頭(809R) | 13頭以上(2,427R) | 多点 |
| 単勝 | 23.13% (80.47%) |
22.20% (75.14%) |
24.18% (86.76%) |
21.67% (69.33%) |
31.51% (80.50%) |
25.46% (90.14%) |
21.59% (77.25%) |
51.61% (75.55%) |
| 複勝 | 54.15% (86.83%) |
54.35% (86.29%) |
53.58% (87.33%) |
59.17% (87.50%) |
68.04% (90.91%) |
60.07% (92.22%) |
50.93% (84.66%) |
87.26% (81.26%) |
| 枠連 | 12.30% (75.10%) |
11.50% (70.97%) |
12.45% (75.77%) |
21.21% (123.33%) |
-- (--) |
13.97% (70.52%) |
10.96% (71.86%) |
26.64% (79.08%) |
| 馬連 | 9.09% (61.55%) |
8.29% (53.17%) |
9.54% (67.01%) |
14.17% (104.67%) |
16.89% (56.12%) |
10.75% (62.56%) |
7.83% (61.71%) |
20.69% (69.63%) |
| ワイド | 22.17% (80.09%) |
22.20% (74.79%) |
21.63% (84.06%) |
29.17% (100.17%) |
41.55% (80.55%) |
27.19% (82.01%) |
18.75% (79.41%) |
42.00% (76.43%) |
| 馬単 | 4.37% (53.58%) |
3.67% (41.27%) |
5.04% (60.76%) |
5.00% (128.42%) |
6.85% (37.53%) |
4.94% (61.03%) |
3.96% (52.55%) |
20.69% (67.70%) |
| 三連複 | 5.56% (67.63%) |
6.57% (71.80%) |
4.50% (56.82%) |
5.83% (157.25%) |
18.26% (97.03%) |
7.79% (86.60%) |
3.67% (58.65%) |
14.65% (63.61%) |
| 三連単 | 1.10% (75.90%) |
1.07% (56.85%) |
1.15% (53.07%) |
0.83% (657.25%) |
2.28% (34.61%) |
1.48% (146.45%) |
0.87% (56.11%) |
14.65% (60.59%) |
| 総合 | 55.22% (72.61%) |
55.60% (66.19%) |
54.43% (71.42%) |
60.83% (179.72%) |
73.06% (68.18%) |
60.82% (86.44%) |
51.75% (67.78%) |
87.55% (66.42%) |
という感じ。妙に障害が得意?(笑)
追記 2026.5.8 18:47
過去走には1~4コーナーの順位を入れてます。Copilot曰く、これもノイズなので例えば3コーナーのみとか、4コーナーのみを試してみてって事で、AutoMLで4コーナーのみを試すと\(R^{2}\)値が0.2604とかで最高値になるもモデルファイルが86.3MBでロード時にエラーになる使えない奴だったけど、Model Builderで同様の学習させるとこちらは逆に\(R^{2}\)値が0.2589と落ち込んで
| 3,455R | 1点 | 芝(1,689R) | ダート(1,646R) | 障害(120R) | 8頭以下(219R) | 9~12頭(809R) | 13頭以上(2,427R) | 多点 |
| 単勝 | 24.11% (82.15%) |
22.32% (75.90%) |
26.00% (89.96%) |
23.33% (62.92%) |
33.79% (90.41%) |
25.96% (85.78%) |
22.62% (80.19%) |
52.56% (77.37%) |
| 複勝 | 55.14% (85.97%) |
54.77% (85.35%) |
55.22% (86.76%) |
59.17% (84.00%) |
67.12% (89.45%) |
60.82% (90.23%) |
52.16% (84.24%) |
87.15% (82.44%) |
| 枠連 | 12.26% (71.10%) |
11.07% (68.42%) |
12.90% (72.69%) |
19.19% (84.04%) |
-- (--) |
14.09% (64.03%) |
10.88% (68.95%) |
26.74% (73.56%) |
| 馬連 | 9.46% (59.30%) |
8.70% (57.16%) |
9.84% (60.47%) |
15.00% (73.50%) |
21.46% (70.41%) |
11.12% (57.70%) |
7.83% (58.83%) |
21.13% (66.52%) |
| ワイド | 22.95% (81.59%) |
23.62% (82.99%) |
21.93% (79.90%) |
27.50% (85.17%) |
46.58% (88.81%) |
27.56% (78.41%) |
19.28% (82.00%) |
43.79% (81.04%) |
| 馬単 | 4.52% (49.22%) |
3.43% (38.52%) |
5.53% (60.40%) |
5.83% (46.58%) |
9.13% (54.11%) |
4.82% (50.48%) |
4.00% (48.36%) |
21.13% (64.34%) |
| 三連複 | 6.05% (70.07%) |
6.63% (57.52%) |
5.41% (74.63%) |
6.67% (184.25%) |
19.18% (87.17%) |
9.02% (95.72%) |
3.87% (59.98%) |
14.85% (66.43%) |
| 三連単 | 1.39% (55.93%) |
1.42% (46.56%) |
1.40% (68.92%) |
0.83% (9.58%) |
4.11% (86.71%) |
1.98% (68.86%) |
0.95% (48.84%) |
14.85% (62.15%) |
| 総合 | 56.41% (69.39%) |
56.07% (63.96%) |
56.44% (74.22%) |
60.83% (78.64%) |
73.06% (81.01%) |
61.56% (73.90%) |
53.19% (66.42%) |
87.53% (67.00%) |
となり数値とはうらはらに的中率は微々たるものだけど上がってますね。もう少しなにかが必要なのかもですが、出来る事は試していきます。
追記 2026.5.9 5:34
AutoMLで6時間またやってみると今回は\(R^{2}\)値は0.2579と低いけど、15.3MBなので
| 3,455R | 1点 | 芝(1,689R) | ダート(1,646R) | 障害(120R) | 8頭以下(219R) | 9~12頭(809R) | 13頭以上(2,427R) | 多点 |
| 単勝 | 25.99% (77.15%) |
24.63% (73.13%) |
27.04% (80.51%) |
30.83% (87.58%) |
37.44% (86.99%) |
26.58% (72.56%) |
24.76% (77.79%) |
56.85% (77.55%) |
| 複勝 | 58.55% (84.36%) |
58.26% (84.85%) |
58.14% (83.57%) |
68.33% (88.42%) |
73.52% (92.88%) |
62.18% (82.18%) |
56.00% (84.32%) |
88.94% (82.32%) |
| 枠連 | 14.54% (76.72%) |
13.84% (76.11%) |
14.49% (75.58%) |
25.25% (103.54%) |
-- (--) |
16.07% (70.06%) |
13.10% (74.07%) |
30.63% (77.17%) |
| 馬連 | 11.32% (72.21%) |
10.66% (64.61%) |
11.48% (79.32%) |
18.33% (81.83%) |
21.46% (71.46%) |
12.98% (63.13%) |
9.85% (75.31%) |
25.04% (73.78%) |
| ワイド | 25.59% (79.15%) |
25.70% (76.91%) |
24.97% (81.20%) |
32.50% (82.67%) |
47.49% (87.99%) |
30.28% (78.79%) |
22.04% (78.48%) |
47.90% (79.95%) |
| 馬単 | 5.76% (66.34%) |
5.03% (53.56%) |
6.20% (78.46%) |
10.00% (79.83%) |
11.87% (77.49%) |
5.56% (43.42%) |
5.27% (72.97%) |
25.04% (71.96%) |
| 三連複 | 6.54% (74.03%) |
7.34% (79.52%) |
5.71% (68.30%) |
6.67% (75.25%) |
18.26% (71.92%) |
8.90% (83.21%) |
4.70% (71.16%) |
16.56% (73.38%) |
| 三連単 | 1.42% (59.84%) |
1.42% (55.89%) |
1.40% (62.51%) |
1.67% (78.75%) |
3.20% (44.38%) |
1.98% (62.48%) |
1.07% (60.35%) |
16.56% (72.78%) |
| 総合 | 59.62% (73.68%) |
59.44% (70.45%) |
59.11% (76.18%) |
69.17% (84.31%) |
78.08% (76.16%) |
63.04% (69.48%) |
56.82% (74.31%) |
89.18% (74.35%) |
と的中率が微増でした。これ、何回か回す必要がありそうです。が、一旦またModel Builderで24時間スタート。
追記 2026.5.10 6:44
やはりModel Builderには向かない様で\(R2{2}\)値は0.2571と更に低く、
| 3,455R | 1点 | 芝(1,689R) | ダート(1,646R) | 障害(120R) | 8頭以下(219R) | 9~12頭(809R) | 13頭以上(2,427R) | 多点 |
| 単勝 | 23.59% (81.22%) |
22.91% (80.48%) |
23.82% (81.71%) |
30.00% (85.08%) |
32.88% (90.46%) |
26.82% (94.18%) |
21.67% (76.07%) |
52.01% (76.77%) |
| 複勝 | 54.21% (86.06%) |
54.71% (87.38%) |
53.10% (84.27%) |
62.50% (92.17%) |
66.67% (89.54%) |
60.07% (91.55%) |
51.13% (83.92%) |
86.95% (82.99%) |
| 枠連 | 12.30% (76.58%) |
11.50% (79.92%) |
12.64% (73.81%) |
18.18% (72.93%) |
-- (--) |
14.46% (72.37%) |
10.80% (73.12%) |
26.18% (76.96%) |
| 馬連 | 9.09% (62.79%) |
8.64% (63.30%) |
9.36% (62.55%) |
11.67% (58.92%) |
20.09% (72.42%) |
10.75% (62.46%) |
7.54% (62.03%) |
21.13% (74.27%) |
| ワイド | 22.14% (82.02%) |
22.74% (83.40%) |
21.26% (81.40%) |
25.83% (71.08%) |
44.75% (91.92%) |
26.95% (82.21%) |
18.50% (81.07%) |
43.15% (84.19%) |
| 馬単 | 4.69% (59.27%) |
4.20% (55.69%) |
5.10% (63.48%) |
5.83% (51.92%) |
10.05% (67.76%) |
5.32% (62.32%) |
4.00% (57.49%) |
21.13% (71.50%) |
| 三連複 | 5.85% (70.83%) |
6.99% (67.83%) |
4.74% (70.16%) |
5.00% (122.25%) |
21.46% (99.09%) |
8.03% (79.32%) |
3.71% (65.45%) |
14.79% (69.70%) |
| 三連単 | 1.04% (67.41%) |
1.12% (47.50%) |
0.97% (88.66%) |
0.83% (56.08%) |
4.11% (78.04%) |
1.36% (50.90%) |
0.66% (71.95%) |
14.79% (63.96%) |
| 総合 | 55.60% (73.23%) |
56.19% (70.49%) |
54.37% (75.77%) |
64.17% (76.38%) |
72.15% (84.17%) |
61.19% (74.41%) |
52.25% (71.39%) |
87.18% (69.90%) |
Model Builderでは元のままの方が無難と感じました。で、AutoMLで6時間×10回をスタートさせました。
もう2年も経つのに未だにまだまだなのは自分の力の無さを実感させられますね。それでも、頭が回る限りは開発継続してもって良いものに仕上げられればと思う反面、仕上げきる前に何らかの理由で、まあ、それは衰えとか他の障害の不安もあるけど、やり切れない事に対する不安が無い訳じゃない。
根本的に頼りにしているAIによる予測。この進化も未知。自分がそれをフルに使いきる理解が出来、それをコードで記述しきる能力があるかも微妙なんですが、それすらAIに頼ってます。コーディングは間違いなく楽に出来る世の中になってます。しかも、あまり知識が無い状態でも可能な時代に入ってます。似たようなアプリもある中、少しでも必要とされるアプリの1つに少しでも早く仕上げられるように努力は続けます。
一時はさらだ64構想でWinUI3使ったものを進めてたけど、多分JRA-VANは64bit版JV-Linkは出さない。まあ、出して来た時には対処出来る頭の回転が維持出来ていれば対処したい。でも、それは一旦封印しないとそもそものアプリの作業がおろそかになりそうなので^^;
ただ、単勝的中率3割、複勝的中率6割を目標にしてるんですが、壁が厚いです。いや、まあ、そんな簡単に行くものではないのも理解してますけど、その昔からある予想アプリはそれに近いものが存在してたと記憶してます。現時点での相対タイムの学習モデルでもAutoMLなら随分と近くはなってます。でも、次の1歩がなかなかなんですよね。
GWも明日までで、また仕事が始まる。その昔、仕事辞めてアプリ開発に専念した方とかもいましたが、今の自分にはその選択は無い。限られた時間を有効に使って開発したいとAIに頼って、逆に数日無駄にする(笑) この繰り返しを少なく出来る工夫は必要で、ソースの世代管理をうまく出来る方法を早急に見つけなきゃいけないと思ってます。
先日から導入している相対タイムは単純に\(\frac{走破タイム}{平均タイム}\)でした。しかし、これではノイズが多過ぎるって話から\(\frac{走破タイム}{基準タイム}\)に変更する事にしました。既にコーディングは済ませ、CSV出力して昨夜Model Builderで24時間学習スタートさせてます。この修正前に同じくModel Builderで24時間学習させたモデルは\(R^{2}\)値 0.2614で
| 3,455R | 1点 | 芝(1,689R) | ダート(1,646R) | 障害(120R) | 8頭以下(219R) | 9~12頭(809R) | 13頭以上(2,427R) | 多点 |
| 単勝 | 22.17% (72.16%) |
21.43% (69.27%) |
23.03% (76.52%) |
20.83% (53.00%) |
33.33% (85.34%) |
25.34% (73.41%) |
20.11% (70.55%) |
51.66% (77.06%) |
| 複勝 | 53.14% (83.40%) |
53.94% (83.94%) |
52.13% (83.27%) |
55.83% (77.58%) |
69.86% (94.20%) |
58.96% (84.05%) |
49.69% (82.20%) |
87.38% (83.10%) |
| 枠連 | 12.30% (78.40%) |
11.92% (83.28%) |
12.39% (73.58%) |
16.16% (85.66%) |
-- (--) |
13.72% (66.50%) |
11.04% (77.39%) |
26.96% (80.55%) |
| 馬連 | 9.44% (76.89%) |
9.24% (80.61%) |
9.36% (73.86%) |
13.33% (66.08%) |
22.83% (94.75%) |
10.38% (52.90%) |
7.91% (83.27%) |
20.67% (69.73%) |
| ワイド | 22.72% (85.32%) |
23.74% (89.26%) |
21.45% (82.10%) |
25.83% (74.00%) |
50.23% (102.24%) |
26.58% (74.65%) |
18.95% (87.35%) |
42.58% (81.30%) |
| 馬単 | 4.83% (63.26%) |
4.85% (70.91%) |
4.80% (57.39%) |
5.00% (36.08%) |
13.24% (111.96%) |
4.94% (43.42%) |
4.04% (65.47%) |
20.67% (68.61%) |
| 三連複 | 5.62% (81.04%) |
6.34% (72.21%) |
4.80% (87.15%) |
6.67% (121.58%) |
18.72% (149.04%) |
7.42% (78.01%) |
3.83% (75.92%) |
14.70% (69.06%) |
| 三連単 | 1.30% (68.64%) |
1.12% (60.04%) |
1.40% (71.16%) |
2.50% (155.08%) |
5.48% (315.71%) |
1.73% (80.53%) |
0.78% (42.38%) |
14.70% (65.17%) |
| 総合 | 54.56% (76.11%) |
55.54% (76.04%) |
53.34% (75.64%) |
57.50% (83.59%) |
74.89% (136.18%) |
59.83% (69.19%) |
50.97% (73.07%) |
87.73% (69.84%) |
という昨年の検証結果を出してますが、これがどこまで伸びるか今晩遅くにはここに追記しますね。現時点で13時間程度過ぎた所ではまだ\(R^{2}\)値は0.2611までです^^;
追記 2026.5.4 23:12
\(R^{2}\)値は0.2619で
| 3,455R | 1点 | 芝(1,689R) | ダート(1,646R) | 障害(120R) | 8頭以下(219R) | 9~12頭(809R) | 13頭以上(2,427R) | 多点 |
| 単勝 | 23.82% (84.28%) |
22.79% (81.17%) |
25.03% (89.10%) |
21.67% (62.00%) |
31.05% (78.68%) |
24.72% (80.80%) |
22.87% (85.95%) |
52.33% (76.87%) |
| 複勝 | 54.33% (85.33%) |
53.76% (83.42%) |
54.86% (87.59%) |
55.00% (81.25%) |
67.58% (89.27%) |
59.33% (87.96%) |
51.46% (84.10%) |
87.12% (83.32%) |
| 枠連 | 13.21% (81.20%) |
12.92% (84.10%) |
13.09% (77.45%) |
19.19% (99.39%) |
-- (--) |
14.34% (66.77%) |
11.99% (80.85%) |
27.03% (77.65%) |
| 馬連 | 10.13% (71.96%) |
10.07% (68.15%) |
9.90% (76.42%) |
14.17% (64.50%) |
21.00% (64.20%) |
11.00% (60.38%) |
8.86% (76.52%) |
21.13% (70.12%) |
| ワイド | 22.75% (80.68%) |
23.80% (80.94%) |
21.51% (80.95%) |
25.00% (73.17%) |
45.21% (81.64%) |
26.45% (78.85%) |
19.49% (81.20%) |
43.21% (80.24%) |
| 馬単 | 5.15% (72.60%) |
4.62% (57.04%) |
5.71% (90.56%) |
5.00% (45.25%) |
9.13% (51.14%) |
3.83% (38.90%) |
5.23% (85.77%) |
21.13% (68.64%) |
| 三連複 | 5.76% (76.97%) |
6.99% (86.79%) |
4.50% (60.20%) |
5.83% (168.75%) |
18.26% (88.26%) |
8.28% (98.36%) |
3.79% (68.82%) |
14.93% (62.53%) |
| 三連単 | 1.27% (46.32%) |
1.30% (38.47%) |
1.22% (52.98%) |
1.67% (65.67%) |
3.65% (33.29%) |
1.48% (52.68%) |
0.99% (45.38%) |
14.93% (61.44%) |
| 総合 | 55.43% (74.83%) |
54.83% (72.26%) |
55.89% (76.90%) |
57.50% (82.12%) |
70.32% (69.50%) |
60.20% (70.59%) |
52.49% (76.07%) |
87.47% (67.26%) |
と数値通りわずかに的中率が上がってはいる感じだが微妙なブレがある感じだ。
$$ x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a} $$
Bloggerで記事内に数式を簡単に入れられるMathJaxを入れてみました。
累計: \(R^{2}\)
分数]: \(\frac{b}{a}\)
どたばたとGWもコーディングしまくって学習もさせてな日々。相変わらずチェック甘くて新バージョンリリースするも即バグ修正版のリリースorz ユーザー様にはご迷惑お掛けしてます。今年のGWは若干短めの7連休のみ。いや、例年ならもう少し長いのですが曜日の並び的になのか、休んでられない状況なのかは不明ですがこれも仕方ないですね。正社員とかなら合間の出勤日埋めて連休長くするのも有りとは思うけど、肩身の狭い派遣社員では我慢ですね。
取敢えず昨日から学習させていたModel Builderのモデルをリリースバージョンに添付しました。どうもAutoMLに比べて高めのR2値が出るものの的中率は低く回収率はは高めってのがModel Builderの現状ですね。この特徴量ではまだそれ程学習させてないので色々試していくしかないし、それでもダメならまた特徴量を増やす事も検討します。
前置きが長くなりましたが、当然独自に予想しました。
当たり前に穴狙いです。秋には牝馬の記憶はあるけど、春は牝馬って来れるのかな? まあ、そんなのも気になるけど狙ってみます。今回の相対タイム追加はCopilotの助言から色々とやり過ぎた感があり、GWで時間的に余裕があるからと作業進めたものの調子に乗ってCopilotの話を真に受け過ぎた(笑) 反省してここの所でかなり追加した相対タイム用の特徴量を削除してやり直す判断したものの、削除し過ぎて少し復元。そんな状態で今やっとAutoMLの6時間学習中なんですが、R2が0.255とかが欲しいのに2時間近く学習させてもR2 0.2457とちと不安はある。もし、0.25超えない様だと更に特徴量を復元する必要もありそうで😖 今週末の競馬には間に合うと思ってたのに厳しいかも。
ガンガンと突き進めたので、どんな順番で何追加したらどの程度とかが分からないのが辛い。まあ、アプリの更新記録には項目が書いてあったりするけど...ああっ、過去馬体重まで入ったのを前回リリースしてたんだな。って事はここまでは復元必要かorz 面倒だけど、やるしかないか。
追記 2026.5.2 6:07
昨夜6時間学習させて得たR2 0.2522は決してこれまでに得られた最適R2には届いてないけど、
| 3,455R | 1点 | 芝(1,689R) | ダート(1,646R) | 障害(120R) | 8頭以下(219R) | 9~12頭(809R) | 13頭以上(2,427R) | 多点 |
| 単勝 | 25.93% (77.89%) |
25.16% (75.76%) |
26.79% (80.69%) |
25.00% (69.50%) |
37.90% (92.65%) |
27.44% (75.72%) |
24.35% (77.28%) |
56.27% (77.27%) |
| 複勝 | 57.71% (83.92%) |
57.79% (84.45%) |
57.35% (83.61%) |
61.67% (80.67%) |
73.97% (94.98%) |
61.68% (82.51%) |
54.92% (83.40%) |
89.12% (81.55%) |
| 枠連 | 14.44% (78.69%) |
13.34% (78.02%) |
14.55% (75.91%) |
28.28% (132.32%) |
-- (--) |
15.45% (68.81%) |
13.19% (76.99%) |
30.24% (76.76%) |
| 馬連 | 11.00% (69.37%) |
10.54% (65.16%) |
10.87% (72.21%) |
19.17% (89.92%) |
21.00% (55.94%) |
12.11% (58.76%) |
9.72% (74.12%) |
24.20% (69.60%) |
| ワイド | 24.86% (77.25%) |
25.04% (75.46%) |
23.94% (77.93%) |
35.00% (93.08%) |
47.03% (89.41%) |
28.92% (76.06%) |
21.51% (76.55%) |
47.44% (74.24%) |
| 馬単 | 5.64% (61.82%) |
5.27% (60.27%) |
5.71% (62.11%) |
10.00% (79.75%) |
10.96% (45.21%) |
6.67% (56.40%) |
4.82% (65.13%) |
24.20% (66.78%) |
| 三連複 | 5.82% (69.78%) |
6.99% (65.17%) |
4.80% (74.42%) |
3.33% (71.00%) |
18.26% (75.94%) |
6.92% (56.92%) |
4.33% (73.51%) |
16.64% (70.49%) |
| 三連単 | 1.36% (57.07%) |
1.54% (46.22%) |
1.22% (68.27%) |
0.83% (56.08%) |
3.20% (23.52%) |
1.73% (32.29%) |
1.07% (68.36%) |
16.64% (65.15%) |
| 総合 | 58.93% (71.88%) |
59.03% (68.62%) |
58.57% (74.39%) |
62.50% (82.96%) |
77.17% (68.23%) |
62.79% (63.43%) |
56.00% (74.42%) |
89.41% (68.99%) |
現在はModel Builderでも学習中でこちらは12時間で今日の競馬には間に合う時間には終わるけど、現時点でR2 0.2562が残り時間でどこまで伸びるか。前回Model Builderで学習させた時はAutoMLに比べ高いR2値の割に精度が低い印象なので、出来たものを実際に検証してみない事には何とも言えないんだよね。
昨夜↑の学習後、再度AutoMLで12時間行くかModel Builderで行くかは悩んだんだが、本来両方行ければ良いけど、それやると多分64GBでもメモリ的にもきついし、CPUももっと最先端でGPU的になAIマシンなら可能なんだとは思うけど、次のマシンは何時になったら組めるかなぁ。数年前に128GBが5~6万円だった記憶なのに今は5倍程度の25万円以上だしorz 自分は64GBを3万円弱で増設してたのは幸いなんだが、このマシンも今年はいよいよ丸8年になる。最近は起動時に画面出力がいかれて再起動とかチョイチョイあるからグラボが怪しくなってきてると思うし^^;
追記 2026.5.2 9:06
Model BuilderはR2 0.2579で、
| 3,455R | 1点 | 芝(1,689R) | ダート(1,646R) | 障害(120R) | 8頭以下(219R) | 9~12頭(809R) | 13頭以上(2,427R) | 多点 |
| 単勝 | 23.15% (81.15%) |
21.79% (72.40%) |
24.79% (92.00%) |
20.00% (55.50%) |
35.16% (91.60%) |
24.85% (83.55%) |
21.51% (79.41%) |
51.46% (78.00%) |
| 複勝 | 54.18% (85.74%) |
53.76% (84.48%) |
54.43% (86.76%) |
56.67% (89.50%) |
69.41% (95.66%) |
58.10% (86.79%) |
51.50% (84.50%) |
87.79% (83.74%) |
| 枠連 | 11.84% (80.42%) |
10.50% (68.72%) |
12.58% (90.98%) |
19.19% (79.09%) |
-- (--) |
13.23% (80.58%) |
10.63% (75.27%) |
26.25% (76.92%) |
| 馬連 | 8.94% (74.47%) |
8.29% (67.19%) |
9.11% (81.87%) |
15.83% (75.42%) |
23.29% (104.20%) |
9.89% (49.69%) |
7.33% (80.05%) |
20.84% (71.97%) |
| ワイド | 22.84% (86.33%) |
23.68% (87.04%) |
21.57% (85.32%) |
28.33% (90.33%) |
48.40% (98.13%) |
26.82% (79.16%) |
19.20% (87.66%) |
42.69% (80.51%) |
| 馬単 | 4.34% (64.56%) |
4.09% (72.91%) |
4.43% (56.31%) |
6.67% (60.17%) |
11.42% (91.51%) |
4.33% (37.17%) |
3.71% (71.26%) |
20.84% (70.35%) |
| 三連複 | 5.35% (64.70%) |
5.68% (57.35%) |
5.10% (70.32%) |
4.17% (91.17%) |
14.16% (76.85%) |
7.54% (79.25%) |
3.83% (58.76%) |
14.56% (73.05%) |
| 三連単 | 1.10% (58.27%) |
1.18% (56.42%) |
1.03% (63.73%) |
0.83% (9.58%) |
3.65% (126.62%) |
1.36% (35.28%) |
0.78% (59.77%) |
14.56% (71.73%) |
| 総合 | 55.40% (74.38%) |
55.00% (70.86%) |
55.59% (78.34%) |
58.33% (68.62%) |
72.60% (97.80%) |
59.21% (66.43%) |
52.58% (74.58%) |
88.08% (73.63%) |
やはり、R2値的には高くても的中率はそれ程ではないのはModel Builderの特性なのかな。取敢えずAutoMLで12時間スタートするしか選択肢はなさそうなので。
System.Data.SQLiteがVersion 2.x.x以降は本体にはSQLiteを含まずにSourceGear.sqlite3を個別にNuGetで入れる事を薦めながら、作者本人は適度に更新はするけどと言いつつ半年放置。フォーラムでそれ突かれると、別に自分でビルドしたりプリコンパイルダウンローとして使えば?って塩対応。そんな面倒はって反応に、有料なら最新バージョン手に入るよ?ってorz
それ程最新SQLiteが気になる訳じゃないけど、流石に採用しているVersion 3.50.4.5ってSQLiteでいうところのVersion 3.50.4で、これは2025.7.30リリースです。最新版Version 3.53.0は今月9日にリリースされてます。流石にこれを"適度に更新"っておかしいよねって投稿者には賛同しますね。
LightGBMとかはソースから自分でビルドしたりもしましたが、そこまで必要ないかなって事で本家が用意している
DLL for Windows x86 (32-bit), SQLite Version 3.53.0
をダウンロードして解凍。sqlite3.dllとsqlite3.defが出てくるのでdllの方をe_sqlite3.dllとリネーム。Copilotにこれプロジェクトにどうすれば良いの?って質問してもまともな回答は出来ないので、Geminiにも質問。これまたダメ(笑) まあね、所詮はAIなんてネット上に具体的な話とかピンポイントで見つけられないとダメなんだよね。で、これは
C:\Users\<ユーザー>\.nuget\packages\sourcegear.sqlite3\3.50.4.5\runtimes\win-x86\native\e_sqlite3.dll
にNuGetでインストールしたSourceGear.sqlite3が入れたものがあるのでこれを上書きしなきゃダメですね。
追記 2026.4.29 11:44
どうせModel Builderで12時間学習中で時間あるのでフルセットアップしてみました。うらで学習させている割には
まあ、早い感じですかね。
そのうち試さなきゃとは思ってたんですが、昨夜1時間程度試して問題ない事を確認後に6時間学習させるとあっさりとR2 0.2618が出た。
| 3,455R | 1点 | 芝(1,689R) | ダート(1,646R) | 障害(120R) | 8頭以下(219R) | 9~12頭(809R) | 13頭以上(2,427R) | 多点 |
| 単勝 | 22.17% (77.81%) |
20.78% (73.59%) |
23.33% (82.25%) |
25.83% (76.25%) |
30.59% (76.48%) |
25.22% (84.29%) |
20.40% (75.77%) |
51.64% (77.62%) |
| 複勝 | 52.65% (84.56%) |
52.34% (82.59%) |
52.37% (86.36%) |
60.83% (87.50%) |
65.30% (84.84%) |
59.46% (90.11%) |
49.24% (82.68%) |
86.98% (82.99%) |
| 枠連 | 12.20% (77.85%) |
11.71% (76.59%) |
12.26% (77.90%) |
18.18% (95.15%) |
-- (--) |
14.34% (70.52%) |
10.71% (75.36%) |
26.05% (75.89%) |
| 馬連 | 9.03% (65.00%) |
8.94% (72.57%) |
8.81% (57.40%) |
13.33% (62.67%) |
19.18% (60.18%) |
11.37% (71.59%) |
7.33% (63.23%) |
20.32% (68.67%) |
| ワイド | 21.56% (81.16%) |
22.44% (83.00%) |
20.17% (77.10%) |
28.33% (111.08%) |
42.47% (80.18%) |
27.81% (89.77%) |
17.59% (78.38%) |
42.20% (79.61%) |
| 馬単 | 4.40% (63.47%) |
4.03% (69.13%) |
4.62% (57.62%) |
6.67% (64.08%) |
9.59% (48.22%) |
5.44% (79.51%) |
3.58% (59.50%) |
20.32% (67.45%) |
| 三連複 | 5.41% (63.63%) |
6.16% (65.87%) |
4.62% (58.27%) |
5.83% (105.50%) |
18.72% (92.92%) |
7.54% (77.16%) |
3.50% (56.48%) |
13.75% (64.50%) |
| 三連単 | 0.96% (42.08%) |
1.01% (52.64%) |
0.85% (30.47%) |
1.67% (52.75%) |
1.83% (23.52%) |
1.61% (46.85%) |
0.66% (42.17%) |
13.75% (61.37%) |
| 総合 | 54.21% (69.33%) |
54.11% (71.90%) |
53.58% (65.86%) |
64.17% (81.58%) |
71.23% (66.62%) |
60.82% (76.22%) |
50.47% (66.70%) |
87.32% (67.05%) |
悪い訳じゃないけど、AutoMLの方が的中率は全然よかった。R2値だけでは見えない部分かな。初回の学習なので、もう少し継続する必要はあるのかな^^; まあ、取敢えず12時間スタート。
ここの所取り組んでいた作業で、やっとその成果が確認出来る所まで来ました。学習し始めた時にはRMSEで異常な位低い値で何か間違えてたかって感じでしたが、それは単にこれまでの走破タイム予測と今回の相対タイム予測では単位というかスケールの違いからって話と、評価指数として今回の学習にはRMSEは不向きでR2(R二乗)の方がって事で、数日前に得たR2が0.20236ってモデルを検証してみる事にしました。
| 3,455R | 1点 | 芝(1,689R) | ダート(1,646R) | 障害(120R) | 8頭以下(219R) | 9~12頭(809R) | 13頭以上(2,427R) | 多点 |
| 単勝 | 24.02% (73.77%) |
22.62% (72.50%) |
25.64% (75.87%) |
21.67% (62.75%) |
31.05% (67.81%) |
25.59% (71.67%) |
22.87% (75.01%) |
54.41% (77.27%) |
| 複勝 | 55.60% (82.30%) |
54.41% (82.02%) |
56.38% (82.79%) |
61.67% (79.67%) |
66.67% (83.38%) |
59.70% (79.70%) |
53.23% (83.07%) |
88.74% (81.70%) |
| 枠連 | 13.85% (78.71%) |
13.13% (78.99%) |
14.04% (76.93%) |
21.21% (102.93%) |
-- (--) |
16.19% (73.73%) |
12.20% (75.37%) |
28.46% (75.95%) |
| 馬連 | 10.54% (74.04%) |
9.83% (64.34%) |
11.00% (84.02%) |
14.17% (73.67%) |
22.83% (68.13%) |
12.36% (64.54%) |
8.82% (77.74%) |
22.63% (69.79%) |
| ワイド | 24.31% (78.97%) |
23.98% (76.47%) |
24.42% (81.91%) |
27.50% (73.83%) |
49.32% (91.42%) |
27.81% (70.94%) |
20.89% (80.53%) |
45.90% (74.49%) |
| 馬単 | 5.56% (76.16%) |
5.21% (61.61%) |
5.95% (93.82%) |
5.00% (38.92%) |
10.96% (50.09%) |
6.06% (53.78%) |
4.90% (85.98%) |
22.63% (68.88%) |
| 三連複 | 5.47% (52.80%) |
6.28% (49.05%) |
4.74% (57.46%) |
4.17% (41.83%) |
15.07% (67.12%) |
7.66% (54.94%) |
3.87% (50.80%) |
15.57% (65.68%) |
| 三連単 | 1.13% (31.77%) |
1.36% (29.53%) |
0.85% (33.05%) |
1.67% (45.75%) |
2.28% (22.74%) |
2.22% (61.53%) |
0.66% (22.66%) |
15.57% (59.30%) |
| 総合 | 56.90% (68.43%) |
55.95% (64.00%) |
57.41% (73.21%) |
63.33% (64.07%) |
72.60% (64.38%) |
60.57% (66.36%) |
54.26% (68.89%) |
89.03% (65.96%) |
これは的中率的には随分とい感じなんですが、まあ、欲を言えばもう少しって感じですね。ああ、これ、学習データが2004年~2024年なので2025年の1年通しての検証結果です。
回収率的に言えば、何も考えずに買い続けて儲けが出るのは障害の枠連のみと、寂しい結果なんですが、元々ワイドが基本だった馬券スタイルなので、そのワイドがやっとこのレベルまで的中率が上がった事が、今後に期待出来るかなぁと思ってます。
まだまだ始めたばかりの新たな学習モデルなので、ここから更に精度が上げられればと期待して、更に進めてみます。
追記 2026.4.24 18:50
更にCopilotにアドバイス頂きながら改良して得たR2が0.2514ってモデルで検証すると
| 3,455R | 1点 | 芝(1,689R) | ダート(1,646R) | 障害(120R) | 8頭以下(219R) | 9~12頭(809R) | 13頭以上(2,427R) | 多点 |
| 単勝 | 25.04% (75.10%) |
23.74% (69.83%) |
25.82% (78.77%) |
32.50% (98.92%) |
35.62% (82.92%) |
27.56% (77.13%) |
23.24% (73.71%) |
55.86% (77.36%) |
| 複勝 | 56.85% (83.03%) |
55.18% (79.86%) |
58.02% (86.07%) |
64.17% (85.83%) |
70.32% (88.36%) |
61.56% (82.50%) |
54.06% (82.72%) |
89.09% (81.58%) |
| 枠連 | 13.21% (71.87%) |
12.63% (68.67%) |
13.02% (73.04%) |
24.24% (98.59%) |
-- (--) |
16.32% (68.21%) |
11.33% (68.52%) |
29.23% (76.79%) |
| 馬連 | 10.27% (64.71%) |
9.77% (57.81%) |
10.33% (71.25%) |
16.67% (72.08%) |
23.74% (75.11%) |
13.47% (70.98%) |
7.99% (61.68%) |
23.56% (68.88%) |
| ワイド | 23.88% (73.80%) |
24.10% (72.10%) |
23.09% (75.65%) |
31.67% (72.42%) |
51.60% (103.97%) |
30.28% (78.55%) |
19.24% (69.49%) |
46.45% (74.89%) |
| 馬単 | 5.59% (64.72%) |
5.33% (61.75%) |
5.53% (65.81%) |
10.00% (91.50%) |
14.61% (82.01%) |
7.29% (78.42%) |
4.20% (58.59%) |
23.56% (66.42%) |
| 三連複 | 5.99% (77.25%) |
6.93% (72.99%) |
5.16% (84.20%) |
4.17% (41.83%) |
15.53% (79.41%) |
8.28% (69.42%) |
4.37% (79.66%) |
16.56% (72.36%) |
| 三連単 | 1.39% (80.25%) |
1.36% (64.52%) |
1.46% (97.84%) |
0.83% (60.42%) |
2.28% (28.31%) |
2.60% (126.07%) |
0.91% (69.67%) |
16.56% (65.89%) |
| 総合 | 58.03% (73.87%) |
56.78% (68.44%) |
58.81% (79.11%) |
65.00% (77.23%) |
75.80% (77.16%) |
61.93% (81.41%) |
55.13% (70.51%) |
89.49% (69.47%) |
って感じで、確実に改善してきてますね。ただ、じぶんの好みのワイドの的中率が1点だと下がったのが少し気にはなるけど、まだまだ、これからだと期待して進めます。
追記 2026.4.25
幻になるR2 0.2554なモデルが今日出たんですが、実質記念に検証しただけで既に最新バージョンでは更新続けてたので使えません(笑)
| 3,455R | 1点 | 芝(1,689R) | ダート(1,646R) | 障害(120R) | 8頭以下(219R) | 9~12頭(809R) | 13頭以上(2,427R) | 多点 |
| 単勝 | 26.28% (78.71%) |
25.75% (78.00%) |
26.73% (80.26%) |
27.50% (67.50%) |
35.62% (82.88%) |
27.44% (74.14%) |
25.05% (79.86%) |
55.98% (76.74%) |
| 複勝 | 58.00% (83.30%) |
57.49% (83.27%) |
57.96% (83.08%) |
65.83% (86.67%) |
71.23% (89.73%) |
62.30% (82.60%) |
55.38% (82.95%) |
88.65% (80.59%) |
| 枠連 | 14.54% (76.89%) |
14.34% (77.91%) |
13.98% (73.60%) |
26.26% (114.75%) |
-- (--) |
17.68% (77.70%) |
12.57% (71.75%) |
30.27% (78.53%) |
| 馬連 | 11.20% (70.70%) |
10.95% (67.67%) |
10.87% (72.45%) |
19.17% (89.25%) |
22.83% (74.89%) |
14.34% (70.90%) |
9.11% (70.25%) |
24.17% (71.74%) |
| ワイド | 25.99% (82.35%) |
26.29% (80.62%) |
25.27% (84.03%) |
31.67% (83.58%) |
50.23% (98.36%) |
32.26% (90.43%) |
21.71% (78.21%) |
47.00% (74.81%) |
| 馬単 | 5.96% (71.12%) |
5.68% (69.28%) |
5.83% (70.81%) |
11.67% (101.33%) |
13.24% (86.16%) |
7.42% (64.10%) |
4.82% (72.11%) |
24.17% (70.27%) |
| 三連複 | 5.99% (64.30%) |
7.10% (70.89%) |
5.10% (61.04%) |
2.50% (16.08%) |
16.44% (81.83%) |
7.66% (56.92%) |
4.49% (65.18%) |
16.56% (68.83%) |
| 三連単 | 1.22% (30.13%) |
1.48% (37.36%) |
0.91% (21.77%) |
1.67% (43.17%) |
4.11% (59.82%) |
1.85% (39.63%) |
0.74% (24.29%) |
16.56% (64.64%) |
| 総合 | 59.42% (69.59%) |
59.03% (70.47%) |
59.23% (68.35%) |
67.50% (74.41%) |
76.71% (81.95%) |
63.29% (69.55%) |
56.57% (68.07%) |
89.00% (69.20%) |
これ以上のものがこの後のバージョンで出てくれる事に期待してます。
相対タイム導入でひたすら作業してたんですが、本日午前中にGeminiに愛想つかしてGeminiにダメ出し後に自力で動くコードに戻す。相変わらずAIの頑固な考えには呆れます。そんなメソッドはそのクラスには無いよって言ってるのに何度も同じコードを提示するとかはさ、人間の世界では完全にNGですよね。リアルな会社で上司に間違い指摘され、更に同じミスを何度もした場合、まあ、現代の日本ではモラルなんかで守られているとはいえ、自分の時代の学校で先生に「1+1=3」ですって回答して、それ間違ってるよね? 正しい答えは? って言われ、再度「1+1=3」ですって回答して、これ多分数回続けたら殴られるか校長室に連れていかれるよね。
まあ、なんにしても、そんな作業を含め昨日は全く競馬してない(笑) 流石に時間的に一旦競馬しておこうかとね、独自予想です。
相変わらずです。
シンプルに穴狙いで行きます。でまあ、作業に戻ります。連日コーディングに明け暮れてます。最近はCopilotだけではなくGeminiも以前と比べやり取りが増えてます。そもそもどちらもAIなんですが、それぞれの企業の味が出てるって事なのかは分かりませんが、どちらも同じネット上の情報を元にしているにしては結構違いがある。
ああっ、前にGeminiに移行を考えてChromeへの乗り換えも検討した時に垂直タブ未対応で断念したChromeに確か最近垂直タブが実装されたようだけど、まだ試してないな。今はそんな余裕が無いってのもありますけどね。
モデル学習が壁にぶち当たってる感が半端なくて、まあそりゃ昨年8月辺りからだから、下手すれば1年経ってしまいそうな危機感で色々とやってきてました。で、たどり着いたのが今の作業です。ここまで基本3つの学習モデルに予想を託してきました。
しかし、ここ最近ってか昨年8月から行っている作業ではRMSE 1.4の壁どころか1.45辺りにも壁が出来た感じがしてたんですよ。そこでまあ色々と試してきました。ここ最近はUbuntuでの学習とかね。でも、それも良い結果は得られず初心に帰った訳じゃないけど、そもそものAutoMLの使い方の改善。いや、実際にはML.NETのバージョンアップ関連での改善なのか改悪なのかは不明だけどRMSE 1.38とかは幻と化した。CopilotにもAutoMLの使い方の改善を相談したり、Geminiにも同様に相談した。
そんな中でGeminiがそもそも走破タイムの予測自体がAI的(AutoML)に限界まで改善はしての結果だから予測を変えた方が良いのでは?って提案をしてきたんです。それが相対タイム。その実装でひたすらコーディングしてるんですが、ここ数日、厳密には水曜日辺りからその学習用CSV出力をまず取り掛かって一応これまで同様にCKの有無で2種類。で、その過程でこれまでの走破タイム予測モデルの学習用CSV出力を参考にちょっと変えれば出来る話なのでと思いながら、でも、これってこれまで2~3時間掛かる処理だったけど、これも最適化しておいてからマネして作る方が無難と判断。巨大化した機械学習用のクラスを分割して
internal class MLTime : IDisposable
としてたクラスを
public partial class MLTime : IDisposable
として、追加するクラスを
public partial class MLTime
としながらプロパティやメソッドをそちらに分けて書く。なんとなく、自分的に分かりやすくする為に元々"MLTime.cs"ってファイル名だったので、追加のクラスのファイル名は"MLTime.SouhaCKCsv.cs"とする事で同じクラスだと認識しやすくしてみた。
で、Copilotに振り回され木曜夜は0時過ぎまで、昨夜はってか今朝方3時までやっても上手く動かず、今朝も朝からやって、いや、ほぼマジでCopilotに切れて文句言いながら修正させてたどり着いたのが15分ちょっとで2004年から2024年までの21年分出力が可能になった^^ まあ、先日もフルセットアップが改善して1時間掛からなくなったりしてたので期待はしてたけど、今朝やっとコンパイルエラーとか諸々なくなり走らせてみると終了予想が2,000分以上とかで、Copilotに「やっと走ってるっていうより、老人が歩いてるよ」って言いながらたどり着けた結果です。
自分自身はあまり理解してないけど、新たなC#の技法(いや、単に自分が知らないだけなんだが)は
// CK 用:列インデックス → SCSrc の PropertyInfo private bool _ckMapInitialized; private Action<SCSrc, int>[] _ckSetters;
を定義しておいて
private string ColumnToProperty(string col)
{
// 例: "D2428C1" → "D2428Chaku1"
// "J01T3" → "J01TChaku3"
// "KT5" → "KTChaku5"
// 数字部分を抽出(末尾の数字が着順)
int len = col.Length;
int pos = len - 1;
// 末尾の数字を探す
while (pos >= 0 && char.IsDigit(col[pos]))
pos--;
// col = prefix + number
string prefix = col.Substring(0, pos + 1); // 例: "D2428C"
string numStr = col.Substring(pos + 1); // 例: "1"
// prefix の末尾が 'C' なら削除(D2428C → D2428)
if (prefix.EndsWith("C"))
prefix = prefix.Substring(0, prefix.Length - 1);
// プロパティ名は prefix + "Chaku" + number
return prefix + "Chaku" + numStr;
}
これはまあ特になんじゃなく単に今回のASでの定義してる名前を処理しやすくする為とかでCopilotに言われて入れたけど、実際の使い方は
private void ReadCkStats(DateTime kaisaibi, string jouCD, byte rno, long ketto, ref SCSrc scSrc)
{
_cmdSTCK.Parameters["@KAISAI"].Value = kaisaibi;
_cmdSTCK.Parameters["@JOUCODE"].Value = jouCD;
_cmdSTCK.Parameters["@RACENO"].Value = rno;
_cmdSTCK.Parameters["@KETTO"].Value = ketto;
using var rd = _cmdSTCK.ExecuteReader();
if (!rd.Read())
return;
// ★ 最初の1回だけ setter delegate を作る
if (!_ckMapInitialized)
{
int count = rd.FieldCount;
_ckSetters = new Action<SCSrc, int>[count];
var scType = typeof(SCSrc);
for (int i = 4; i < count; i++)
{
string col = rd.GetName(i);
string propName = ColumnToProperty(col);
var prop = scType.GetProperty(propName);
if (prop == null)
continue;
// setter メソッドを取得
var setMethod = prop.GetSetMethod();
if (setMethod == null)
continue;
// ★ setter をコンパイル済み delegate に変換
var setter = (Action<SCSrc, int>)Delegate.CreateDelegate(
typeof(Action<SCSrc, int>),
null,
setMethod,
throwOnBindFailure: false
);
if (setter != null)
{
_ckSetters[i] = setter;
}
else
{
// short プロパティ用のラッパー
if (prop.PropertyType == typeof(short))
{
_ckSetters[i] = (sc, v) => prop.SetValue(sc, (short)v);
}
else
{
_ckSetters[i] = (sc, v) => prop.SetValue(sc, v);
}
}
}
_ckMapInitialized = true;
}
// ★ 以降は delegate 呼び出しだけ(超高速)
for (int i = 4; i < rd.FieldCount; i++)
{
var setter = _ckSetters[i];
if (setter == null)
continue;
int value =
rd.IsDBNull(i) ? 0 :
rd.GetFieldType(i) == typeof(int) ? rd.GetInt32(i) :
rd.GetInt16(i);
setter(scSrc, value);
}
}
こんな感じらしい。これ見てもあまり理解してない自分が情けないけど^^;