忍者ブログ

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

機械学習 キタサンブラックのタイムを「重回帰線」で予想。

2017年12月24日 第62回有馬記念(G1) の1着 キタサンブラックのタイムを「重回帰線」で予想。


使ったデータは
http://db.netkeiba.com/horse/2012102013/
から 
今回使用するパラメータを簡単にまとめる。

斤量  距離  頭数 枠番  馬体重 タイム で予測。



ツール → 分析ツール → 回帰分析 




範囲指定 する
 入力Y範囲: 機械学習させる目的変数 この場合 タイム
        $F$4:$F$21 の範囲を機械学習させる。


 入力x範囲: 機械学習させる説明変数 この場合 頭数 斤量 枠番 距離 馬体重
        $A$4:$E$21 の範囲を機械学習させる。



分析結果は

切片 -3.412753883
X 値 1 -0.270996884
X 値 2 0.059027608
X 値 3 0.466900418
X 値 4 -0.035976977
X 値 5 0.029446148

となった。これを元に 2017/12/24 と2017/11/26
のタイムを予測

予測タイムの計算式コードに当てはめた結果。

Dim seki
Dim kyori
Dim tousu
Dim waku
Dim umataijyu

Dim b
Dim x1
Dim x2
Dim x3
Dim x4
Dim x5

Dim time

seki = 57
kyori = 2500
tousu = 16
waku = 1
umataijyu = 540

b = -3.41275388348363
x1 = -0.270996884
x2 = 0.059027608
x3 = 0.466900418
x4 = -0.035976977
x5 = 0.029446148

time = seki * x1 + kyori * x2 + tousu * x3 + waku * x4 + umataijyu * x5 + b
Cells(2, 7).Value = time


seki = 57
kyori = 2400
tousu = 17
waku = 2
umataijyu = 542

b = -3.41275388348363
x1 = -0.270996884
x2 = 0.059027608
x3 = 0.466900418
x4 = -0.035976977
x5 = 0.029446148

time = seki * x1 + kyori * x2 + tousu * x3 + waku * x4 + umataijyu * x5 + b
Cells(3, 7).Value = time








2017/12/24  は 実タイム153秒を 152.0448 秒と予測
2017/11/26  は 実タイム143秒を 146.6318 秒と予測


当たらずとも遠からず。




PR

VBA ペイント起動して画面をプリントスクリーンで貼り付ける

VBAで コマンドボタンを押したタイミングで ペイント起動し 画面をprintscreenプリントスクリーンで貼り付ける。

まず 標準モジュールを追加し、標準モジュール内で宣言。



Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Long, _
ByVal dwExtraInfo As Long)



コマンドボタンを押したら、画面をコピーして張り付けるコード。



Private Sub CommandButton1_Click()

Const VK_PrintScrn = &H2C '[PrintScrn]指定


Const KEYEVENT_EXTENDED_KEY = &H1 'キー押す
Const KEYEVENT_UP = &H2 'キー放す

'[PrintScrn] + キー押す
keybd_event VK_PrintScrn, 0, KEYEVENT_EXTENDED_KEY, 0
'[PrintScrn] + キー放す
keybd_event VK_PrintScrn, 0, KEYEVENT_EXTENDED_KEY Or KEYEVENT_UP, 0

Application.Wait Now + TimeSerial(0, 0, 2) '2秒待つ


paint = Shell("Mspaint.exe", vbNormalFocus) 'ペイント起動

Application.Wait Now + TimeSerial(0, 0, 2) '2秒待つ

'[CONTROL] キー押す
keybd_event vbKeyControl, 0, KEYEVENT_EXTENDED_KEY, 0
'[V]  キー押す
keybd_event vbKeyV, 0, KEYEVENT_EXTENDED_KEY, 0
'[V]  キー放す
keybd_event vbKeyV, 0, KEYEVENT_EXTENDED_KEY Or KEYEVENT_UP, 0
'[CONTROL] キー放す
keybd_event vbKeyControl, 0, KEYEVENT_EXTENDED_KEY Or KEYEVENT_UP, 0




End Sub



注意1 API を使う。
注意2 押したボタンは放す。KEYEVENT_UP
注意3 ペイント起動まで2秒まつ。

EXCELでWEBを開く

エクセルのコマンドボタンから GOOGLE のページを開くコード。
OBJECT 宣言しないと動かない。開いたらojbectを開放する。

Private Sub CommandButton1_Click()

Dim objIE As Object

Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.Navigate "https://www.google.co.jp/"

Set objIE = Nothing

End Sub