ARCS6 AR6-REV.24062600
読み取り中…
検索中…
一致する文字列を見つけられません
CurrencyDatasets.hh
[詳解]
1
10//
11// Copyright (C) 2011-2020 Yokokura, Yuki
12// This program is free software;
13// you can redistribute it and/or modify it under the terms of the FreeBSD License.
14// For details, see the License.txt file.
15
16#ifndef CURRENCYDATASETS
17#define CURRENCYDATASETS
18
19#include <cassert>
20#include <array>
21#include <string>
22#include <ctime>
23#include "Matrix.hh"
24#include "BatchProcessor.hh"
25#include "CsvManipulator.hh"
26#include "FrameGraphics.hh"
27#include "CuiPlot.hh"
28
29// ARCS組込み用マクロ
30#ifdef ARCS_IN
31 // ARCSに組み込まれる場合
32 #include "ARCSassert.hh"
33 #include "ARCSeventlog.hh"
34#else
35 // ARCSに組み込まれない場合
36 #define arcs_assert(a) (assert(a))
37 #define PassedLog()
38 #define EventLog(a)
39 #define EventLogVar(a)
40#endif
41
42namespace ARCS { // ARCS名前空間
46template <size_t D, size_t M>
48 public:
49 // データセット情報の定義
50 static constexpr size_t N = 1;
51 static constexpr size_t C = 1;
52 static constexpr size_t FinalMinbatNum = D/M - 1;
53
54 // 為替データ
57 std::array<std::string, D> TimeString;
58
62 CurrencyDatasets(const std::string& CurrencyFileName, const std::string& TimedataFileName)
64 {
65 PassedLog();
66 CsvManipulator::LoadFile(CurrencyData, CurrencyFileName); // 為替データを行列として読み込み
67 CsvManipulator::LoadFile(TimeString, TimedataFileName); // 時間データを文字列配列として読み込み
68 //ConvTimeStringToData(); // 時刻文字データをUnix時間に変換
70 }
71
79
84
87 void DispCurrencyData(const size_t DispNum){
88 printf("\nCurrency Data:\n");
89 for(size_t i = 0; i < D; ++i){
90 if((i % DispNum) == 0) printf("%s : %10.0f : %7.3f\n", TimeString.at(i).c_str(), TimeData[i+1], CurrencyData[i+1]);
91 }
92 }
93
95 void WritePngCurrencyPlot(const double Min, const double Max, const std::string& FileName){
96 FrameGraphics FG(GRAPH_WIDTH, GRAPH_HEIGHT);
97 CuiPlot Plot(FG, 0, 0, GRAPH_WIDTH, GRAPH_HEIGHT);
98 Plot.SetAxisLabels("Time Index", FileName);
99 Plot.SetRanges(0, D, Min, Max);
100 Plot.SetGridLabelFormat("%5.0f", "%3.0f");
101 Plot.DrawAxis();
102 Plot.DrawLegend(1, "USDJPY", FGcolors::CYAN);
103 Plot.Plot(TimeData, CurrencyData, CuiPlotTypes::PLOT_LINE, FGcolors::CYAN);
104 FG.SavePngImageFile(FileName);
105 }
106
107 /*
111 void GetCurrectBatchData(const size_t i, Matrix<M,N>& Y){
112 arcs_assert(i <= FinalMinbatNum); // ミニバッチ番号の範囲チェック
113 Y = BatchProcessor::GetMiniBatchData<N,D,M>(MeasuredData, i); // データセットを切り出してミニバッチにする
114 }
115 */
116
117 private:
118 CurrencyDatasets(const CurrencyDatasets&) = delete;
119 const CurrencyDatasets& operator=(const CurrencyDatasets&) = delete;
120
121 // 学習曲線グラフの設定
122 static constexpr int GRAPH_WIDTH = 1000;
123 static constexpr int GRAPH_HEIGHT = 500;
124
126 void ConvTimeStringToData(void){
127 struct tm TimeBuff; // 時刻構造体バッファ
128 time_t UnixTime; // Unix時間
129
130 // 1回目がなぜかおかしくなるので空回ししておく
131 strptime(TimeString.at(0).c_str(), "%Y.%m.%d.%H:%M", &TimeBuff); // 文字列をパースして時刻構造体に変換
132 UnixTime = mktime(&TimeBuff);
133
134 // 全時刻データをUnix時間に変換
135 for(size_t i = 0; i < D; ++i){
136 strptime(TimeString.at(i).c_str(), "%Y.%m.%d.%H:%M", &TimeBuff); // 文字列をパースして時刻構造体に変換
137 UnixTime = mktime(&TimeBuff);
138 TimeData[i+1] = (double)UnixTime;
139 }
140 }
141};
142}
143
144#endif
145
ARCS イベントログクラス
#define PassedLog()
イベントログ用マクロ(ファイルと行番号のみ記録版)
Definition ARCSeventlog.hh:26
ARCS用ASSERTクラス
CuiPlot(新型きゅいプロットV2)
CSVファイル操作クラス
バッチ処理器クラス
行列/ベクトル計算クラス(テンプレート版)
フレームグラフィックスクラスV2(新型テンプレート版)
static void LoadFile(std::array< T, M > &Data, const std::string &FileName)
CSVファイルから1次元std::arrayに読み込む関数
Definition CsvManipulator.hh:72
CuiPlot(新型きゅいプロットV2)
Definition CuiPlot.hh:54
void SetRanges(double xmin, double xmax, double ymin, double ymax)
グラフの範囲を設定する関数
Definition CuiPlot.hh:130
void Plot(const double x, const double y, const CuiPlotTypes type, const uint32_t color)
1点のデータをプロットする関数(バイナリ色データ版)
Definition CuiPlot.hh:250
void SetGridLabelFormat(const std::string &xformat, const std::string &yformat)
グリッドラベルの書式を設定する関数
Definition CuiPlot.hh:153
void SetAxisLabels(const std::string &xlabel, const std::string &ylabel)
軸ラベルを設定する関数
Definition CuiPlot.hh:145
void DrawAxis(void)
グラフの軸を描画する関数
Definition CuiPlot.hh:170
void DrawLegend(size_t i, const std::string &name, const FGcolors &color)
凡例を描画する関数
Definition CuiPlot.hh:188
機械学習用 為替データセットクラス
Definition CurrencyDatasets.hh:47
static constexpr size_t N
計測データチャネル数
Definition CurrencyDatasets.hh:50
Matrix< N, D > TimeData
Unix時間ベクトル
Definition CurrencyDatasets.hh:56
CurrencyDatasets(const std::string &CurrencyFileName, const std::string &TimedataFileName)
コンストラクタ
Definition CurrencyDatasets.hh:62
static constexpr size_t C
訓練データチャネル数
Definition CurrencyDatasets.hh:51
void DispCurrencyData(const size_t DispNum)
為替データを表示する関数
Definition CurrencyDatasets.hh:87
std::array< std::string, D > TimeString
時刻文字データ
Definition CurrencyDatasets.hh:57
static constexpr size_t FinalMinbatNum
最後のミニバッチ番号
Definition CurrencyDatasets.hh:52
void WritePngCurrencyPlot(const double Min, const double Max, const std::string &FileName)
為替データの時系列プロットを表示する関数
Definition CurrencyDatasets.hh:95
CurrencyDatasets(CurrencyDatasets &&r)
ムーブコンストラクタ
Definition CurrencyDatasets.hh:74
~CurrencyDatasets()
デストラクタ
Definition CurrencyDatasets.hh:81
Matrix< N, D > CurrencyData
為替データ
Definition CurrencyDatasets.hh:55
フレームグラフィックスクラス(新型テンプレート版)
Definition FrameGraphics.hh:91
void SavePngImageFile(const std::string &FileName)
PNG画像ファイルを保存する関数
Definition FrameGraphics.hh:200
行列/ベクトル計算クラス(テンプレート版)
Definition Matrix.hh:44
static constexpr Matrix ramp(void)
単調増加の縦ベクトルを返す関数
Definition Matrix.hh:684