PredictStockPrice Sample for Microsoft de:code 2018 AI sessions
Microsoft Azure Machine Learning Studio による株価予想プログラム
Microsoft de:code 2018 で提供されるサンプル コードです。
Microsoft Azure Machine Learning Studio 上で、株価データを Python で加工し、機械学習させ、学習後のモデルから API を作成し、それを C# で呼んでみるところまでのチュートリアルです。
Azure Machine Learning Studio を使うと、簡単に機械学習を利用した API を作ることができます。 その流れをステップ・バイ・ステップで説明します。
機械学習に用いるのは、福井コンピュータホールディングス株式会社 (9790) の実際の株価データ (12年分、2,986件) です。
ファイル名 | 説明 | 使用されている章 |
---|---|---|
9790.csv | 株価データ (CSV) | 2.6 |
AzureMachineLearningScript.1.py | Microsoft Azure Machine Learning Studio で用いる Python Script | 3.13 |
PredictStockPrice.Console/Program.cs | Microsoft Azure Machine Learning Studio で作成した API を呼び出す C# のサンプル コード | 5 |
- 1. SQL データベースの作成
- 2. SQL データベースへのデータのアップロード
- 3. Microsoft Azure Machine Learning Studio によるマシーンラーニング (機械学習)
- 4. Microsoft Azure Machine Learning Studio でマシーンラーニング (機械学習) したモデルから API を作成
- 5. C# から API を呼んでみるテスト
1.1 Azure ポータル にサインインして、SQL データベースを作成します。
サーバーの構成では、サーバー管理者ログインやパスワードなどを設定します。
2.1 SQL Server Management Studio (SSMS) を起動し、SQL データベースに接続します。
先ほどの接続文字列の中のサーバー名と、サーバーの構成で設定したサーバー管理者ログインやパスワードなどを入力します。
3. Microsoft Azure Machine Learning Studio によるマシーンラーニング (機械学習)
3.1 Microsoft Azure Machine Learning Studio にサインインします。
料金プランを選びます。ここでは、「Free Workspace」を選ぶことにします。
「Launch Import Data Wizard」をクリックして、インポート データ ウィザードを起動します。
「Test Connection」で接続に成功することを確認して、次へ行きます。
下のバーの「RUN」をクリックします。
左のツール パレットの「Python Language Modules」から「Execute Python Script」を**の作図領域にドラッグ アンド ドロップします。
3.14 「Import Data」の下部の小円から「Execute Python Script」の上部の一番左の小円までをドラッグ アンド ドロップして、「Import Data」の出力を「Execute Python Script」の入力とします。
3.15 「Import Data」のときと同様、「RUN」してから「Execute Python Script」を右クリックして、「Result dataset」から「Visualize」を選んでみましょう。
この Python では、単純な株価1列だけのデータを、各行が、14日分の株価の上昇率のデータと翌日株価が実際に上昇したかどうかの教師データという、15列からなるデータに加工しています。
ツール パレットの「Data Transformation」の中の「Sample and Split」から「Split Data」を、作図領域にドラッグ アンド ドロップします。 「Execute Python Script」の出力を「Split Data」の入力とします。 「Split Data」のプロパティの「Fraction of rows in the first output dataset」の値を 0.8 にします。 これにより、データは分割され、80%が1番から 20%が2番から出力されます。
ツール パレットの「Machine Learning」の中の「Train」から「Train Modal」を、作図領域にドラッグ アンド ドロップします。
3.19 次に、ツール パレットの「Machine Learning」の中の「Initialize Model」の「Classification」から「Two Class Support Vector Machine」を、作図領域にドラッグ アンド ドロップします。
サポート ベクター マシン は、は、教師あり学習を用いたパターン認識方法で、今回は株価が上がるか否かの分類に用います。
3.21 「Two Class Support Vector Machine」の出力を「Train Model」の1つ目の入力とし、「Split Data」の1つ目の出力を「Train Model」の2つ目の入力とします。
また、「Train Model」のプロパティから「Launch column selector」をクリックします。
「WITH RULES」 - 「Include」「column names」を選び、列名として Answer と入力します。
ツール パレットの「Machine Learning」の中の「Score」から「Score Model」を、作図領域にドラッグ アンド ドロップします。 「Train Model」の出力を「Score Model」の1つ目の入力、「Split Data」の2つ目の出力 (評価用データ) を「Score Model」の1つ目の入力とします。
「Score Model」の出力を「Evaluate Model」入力とします。
上から順番に動作していき、成功すると緑のチェックが付きます。 全部が完了するまで、待ちましょう。
「Evaluate Model」を右クリックし、「Evaluation results」から「Visualize」をクリックします。
4. Microsoft Azure Machine Learning Studio でマシーンラーニング (機械学習) したモデルから API を作成
画面下部の「Predictice Web Service」をクリックします。
画面下部の「RUN」をクリックしてみましょう。 すべての実行が終わるまで待ちましょう。
API を呼び出すための「API key」が表示されます。 また、画面左下の「API HELP PAGE」 - 「REQUEST/RESPONSE」をクリックすると、作られた API の使い方を見ることができます。
例えば、呼び出すときに入力として渡す JSON の例が示されています。 ただし、この API の入力には15日分の株価を必要としますので、Values は、大きさ15の配列にする必要があります。
また、同じページの下部の方には、C#、Python、R のサンプル コードが示されています。
上述の API の使い方のページに示された C# のサンプル コードをベースに、作成したものが、本レポジトリーの中の PredictStockPrice.Console/Program.cs です。
このコード中の、
const string apiKey = "your api key"; // Replace this with the API key for the web service
の apiKey の値は、ご自身の API の使い方のページに示された「API key」を入力します。
また、
client.BaseAddress = new Uri("your api URI"); // Replace this with the URI for the web service
には、ご自身の API の使い方のページの「API HELP PAGE」 - 「REQUEST/RESPONSE」をクリックして表示されたページの中の C# のサンプル コード中の、
client.BaseAddress = new Uri("XXX");
の行をコピーしてお使いください。
- CSharpNeuralNetworkSample-AI-decode: neural network sample in C# for Microsoft de:code 2018 AI sessions (C# で機械学習の原理であるニューラルネットワークをフルスクラッチで書いてみるサンプルコードと説明)