技術屋にゃん兵衛のてくてくらぼ by データウィズ [DataWith]

気の向くままソフトについて書いてます。バリバリエンジニアではないのであくまでも初心者目線で。

Wolfram EngineをVisualBasicで使う(9:機械学習の簡単な実装)(はみだし)

今回は、前回分を少し掘り下げて説明することにします。

 

        Dim ml As IKernelLink = MathLinkFactory.CreateKernelLink("-linkmode launch -linkname 'C:\Program Files\Wolfram Research\Wolfram Engine\13.3\WolframKernel.exe'")

        ml.WaitAndDiscardAnswer()

 

ボタンをクリックするとMathLinkFactory.CreateKernelLink()で、"launch"を指定することで、後ろでWolfram Kernelを起動します。

Wolfram Engineというものはなく、かなりややこしい。

C:\Program Files\Wolfram Research\Wolfram Engine\13.3\

の中を見ると、

math.exe

MathKernel.exe

wolfram.exe

WolframKernel.exe

WolframPlayer.exe

WolframScript.exe

の6つのexeがあります。

ネットで少し調べたら、

mathematica.stackexchange.com

が見つかりました。

これによると、

math.exe = wolfram.exe

MathKernel.exe = WolframKernel.exe

とあります。確かにファイルサイズサイズが同じなんですよね。

なぜ、同じものなのに名前が違うのか。調べてみると次の記事が見つかりました。

github.com

 

これによると…

「2015年4月6日のv3.1.0にmath.exeをよりモダンな名前wolfram.exeに変えた」

とあります。Kernelのほうはこの記事にはありませんでしたが、おそらく同じタイミングだったのではないかと思います。

後方互換を残すためにあえて古いものを残しているんでしょうね。たぶん。

 

では、math.exeとMathKernel.exeの違いはというと、起動してみるとわかります。

 

math.exeを起動すると。。。

math.exeを起動したところ

 

一方、MathKernel.exeの場合は。。。

MathKernel.exeを起動したところ

 

math.exeは、Windowsのコマンドプロンプトライクに起動しますが、MathKernel.exeの場合、「File」「Edit」などのメニューがある(大したことはありませんが)GUI付きのプログラムだということがわかります。これが90KBほどのサイズの違うということなのでしょう。

 

プログラムの本体は「SystemFiles」フォルダの下にあります。これは4GB以上のサイズがあります。

WolframPlayer.exeは、Mathematicaを使ったことがる人にはなじみがあると思います。Mathematicaで作ったノートブックファイル(.nb)を再生するものです。

起動すると次のようなトップ画面が表示されます。

WolframPlayer.exeを起動したところ

 

そして、またややこしいのがWindowsのスタートメニュー。フォルダー名は「Wolfram Engine」と書かれながらも、中の項目は「wolframscript (Wolfram Engine)」となっています。

この、メニューに行きつく先が「wolframscript.exe」です。

 

さて、話がそれてきているので、もどします。

2つ目の関数ですが、前にも話した通り、出力が文字列か画像かで"Evaluate***"の関数名が変わります。

 

        Dim result As String = ml.EvaluateToOutputForm("trainingset = {" + TextBox1.Text + "}; p = Predict[trainingset, Method -> ""LinearRegression""]; p[" + TextBox2.Text + "]", 0)

        TextBox3.Text = result

 

中のWolfram言語の3行は、簡単にいうと、

  • テキストボックスの内容をトレーニングセットに代入
  • トレーニングセットと方法を指定して予測
  • テキストボックスの新しい入力値に対する出力を予測

です。

 

「はみだし」終了。