見出し画像

VB.netからC#で書かれた時系列予測(AI・機械学習)の処理を呼び出す・その2

このコード、以下のWebアドレスに掲載されているものを基本にしています。
https://docs.microsoft.com/ja-jp/dotnet/machine-learning/

印刷して文章を噛み砕きながら、学びたい場合もPDFファイルがあるので参考になります。
https://docs.microsoft.com/ja-jp/dotnet/opbuildpdf/machine-learning/toc.pdf?branch=live

前回のコード、調べたけれど理解できない部分のコメントは追加していません。
特にモデルを評価する部分、正確かどうか気にしなければ無用の部分です。

私があまり正確性を気にしないのは、とりあえず動く事が目標になっているからです。
他にも、どんなに予測が正確だとしても、予測する数が未来になるほど誤差が増えて不正確になるからです。

例えば、以前に課題にしてみた明日の体重を予測する話です。
明日の体重ならば、予測結果はある程度高いでしょうけど、これが1年後ならば正確とは限らないのです。

予測したい未来までの時間が増えるほど不正確になると、我々は毎日見ているであろう天気予想で実感しています。
話が脱線しますが、天気予想が天気予測になる日は来るのでしょうか。

まず、サンプルコードを動かしたいので、何が問題になっているのか考えます。
今までの記事を読んでいただいた人ならば、学習と予想を行うためのデータが無いと気がつくでしょう。

以下のアドレスからダウンロード出来ます。
https://github.com/dotnet/machinelearning-samples/raw/master/samples/csharp/getting-started/Forecasting_BikeSharingDemand/BikeDemandForecasting/Data/DailyDemand.mdf

ダウンロードしたファイル、拡張子がmdfなのでSQL Server用のデータになります。
あんまり汎用性は無いけれど、とりあえずサンプルコードが動くように改良します。

#学習 #勉強 #AI #機械学習 #プログラミング #Visual #CSharp #BASIC #ソースコード #Windows #自動判定 #時間 #予測 #次の日の値


VB.net側のソースコードです。

Imports System.Reflection
Imports System.Windows.Forms
Imports System.IO
Imports System.Text
Imports Microsoft.VisualBasic.FileIO
Imports System.Globalization


Public Class Form1


Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

'クラスライブラリーを使う宣言
Dim ClassLibraryObject As Object = New ClassLibrary1.Class1

'作業用フォルダの指定
'このフォルダ指定は自分の環境にあったものにしてください。
Dim SpecifyWorkingFolder As String = "C:\Users\dws57\source\repos\MlTest\ClassLibrary1\data"

'C#のクラスライブラリーで機械学習を行わせる
Dim BooleanReturn As Boolean = ClassLibraryObject.SampleMachineLearning(SpecifyWorkingFolder)


End Sub
End Class


C#側のソースコード、変更した関数SampleMachineLearningの直後だけ掲載します。

public void SampleMachineLearning(string SpecifyWorkingFolder)
{

//データベースの物理的な場所
string dbFilePath = Path.Combine(SpecifyWorkingFolder, "DailyDemand.mdf");


いいなと思ったら応援しよう!