見出し画像

ニューラルワークスPredictを用いたアプリケーション開発(Excel VBA編)

ここのところ、 「Excel上でPredictエンジンを使い、学習から予測までワンクリックで行なえるアプリケーションを開発したい」とのお問い合わせを多くいただいております。 そこで、今回は予測アプリケーション開発者向けの話題とさせていただきたく思います。

さて、Predictは、Excelメニュー上から、ウィザードに従って容易にモデルが作れるように設計されてはおりますが、初級ユーザー様からは
 「途中の手間を省いて、ボタンのワンクリックで学習から予測まで、一括で!」
や、上級ユーザー様からは
 「さまざまな初期パラメータ条件下でのモデル性能の総合評価を一括で行ないたい」
との要求も寄せられております。
(後者の要求に対しては、Excelで扱いきれないデータ処理向けにNeuralSightがご用意されています。)

上記の場合は、Excel VBAプログラミングに基づき、外部アプリケーション実行用の関数から、Predictエンジンを呼び出すプログラムを作成することで実現できます。

以下は、その関数呼び出し部分のサンプルです。
==================================================‘ Win32API関数宣言 外部アプリケーション(Predict)呼び出しの為の
 ‘プロセス起動
 Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
 (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
 ByVal lpParameters As String, ByVal lpDirectory As String, _
 ByVal nShowCmd_ As Long) As Long

 ' コマンドプロンプトを非表示にして、他のウィンドウをアクティブにします。
 Private Const SW_HIDE = 0
 Public Sub Predict_CommandLine_Execute()
 ‘ Predictのコマンドファイル(sample.npc)へのパス
 Dim cmdfile_path As String
   cmdfile_path = "c:\sample"

 ' 実行するコマンド
 Dim cmd_com_str As String
 cmd_com_str = "/c start ""aaa"" /B ""C:\Program Files\NeuralWare
\NeuralWorks\Predict\PredictCL.exe"" sample.npc"

 Dim retVal As Integer
 retVal = ShellExecute(0, "open", "cmd.exe", cmd_com_str, cmdfile_path, _
SW_HIDE)

 End Sub
==================================================

上記サンプルでは、外部アプリケーションを呼び出すWin32APIのShellExecute関数を使用して、Predictの実行プログラム(PredictCL.exe)に、引数としてPredictの実行コマンドを記載するファイル(sample.npc)を指定しています。

アプリケーションの全体の処理フローは、
[1] Excelシート上の学習および予測用データ領域をCSVファイルへ出力
[2] 上記Predict_CommandLine_Execute()の実行
  (sample.npcの中で、[1]のCSVファイルを参照する)
[3] Predictエンジンによる学習および予測結果の出力(CSV)
[4] [3]のCSVデータの読み出し
[5] Excelシートセルへの反映
となりますね。

※弊社では、データ分析プロジェクトにまつわる様々なご相談に、過去20年以上に渡るプロジェクト経験に基づき、ご支援しています。社内セミナーの企画等、お気軽にご相談いただければ幸いです。

製品カタログ


この記事が気に入ったらサポートをしてみませんか?