16#ifndef TIMESERIESDATASETS
17#define TIMESERIESDATASETS
24#include "Statistics.hh"
36 #define arcs_assert(a) (assert(a))
39 #define EventLogVar(a)
49template <
size_t N,
size_t K,
size_t T,
size_t W,
size_t M>
59 TimeStamp(), InputMat(), TrainMat(), StdInputMat(), StdTrainMat(),
60 xbarIn(), sigmaIn(), xbarTr(), sigmaTr()
70 TimeStamp(), InputMat(), TrainMat(), StdInputMat(), StdTrainMat(),
71 xbarIn(), sigmaIn(), xbarTr(), sigmaTr()
79 InputMat = tp(InputDataBuf);
80 StandardizeDataset(InputMat, xbarIn, sigmaIn, StdInputMat);
81 VectorizeInputData(StdInputMat,
InputData);
86 TrainMat = tp(TrainDataBuf);
87 StandardizeDataset(TrainMat, xbarTr, sigmaTr, StdTrainMat);
88 VectorizeTrainData(StdTrainMat,
TrainData);
94 : TimeStamp(r.TimeStamp), InputMat(r.InputTimeData), TrainMat(r.TrainMat),
95 StdInputMat(r.StdInputMat), StdTrainMat(r.StdTrainMat),
97 xbarIn(r.xbarIn), sigmaIn(r.sigmaIn), xbarTr(r.xbarTr), sigmaTr(r.sigmaTr)
110 x = (x - xbarIn) % sigmaIn;
116 printf(
"\nTime Series Input And Train Data :\n");
117 for(
size_t i = 1; i <= W; ++i){
119 printf(
"t = %zu :\n", i);
124 printf(
"Standardization Info :\n");
135 void WriteInputPlot(
const double Min,
const double Max,
const std::string& FileName){
138 CuiPlot Plot(FG, 0, 0, GRAPH_WIDTH, GRAPH_HEIGHT);
145 for(
size_t i = 1; i <= N; ++ i){
146 Plot.
DrawLegend(i,
"Variable_i", FGcolors::CYAN);
147 Plot.
Plot(tp(TimeStamp), tp(getrow(StdInputMat,i)), CuiPlotTypes::PLOT_LINE, FGcolors::CYAN);
158 void WriteTrainPlot(
const double Min,
const double Max,
const std::string& FileName){
161 CuiPlot Plot(FG, 0, 0, GRAPH_WIDTH, GRAPH_HEIGHT);
168 for(
size_t i = 1; i <= K; ++ i){
169 Plot.
DrawLegend(i,
"Variable_i", FGcolors::CYAN);
170 Plot.
Plot(tp(TimeStamp), tp(getrow(StdTrainMat,i)), CuiPlotTypes::PLOT_LINE, FGcolors::MAGENTA);
182 static constexpr int GRAPH_WIDTH = 1000;
183 static constexpr int GRAPH_HEIGHT = 500;
206 for(
size_t i = 1; i <= T; ++i){
207 buff = (getcolumn(RawData, i) - Mean) % Std;
208 setcolumn(StdData, buff, i);
215 static void VectorizeInputData(
const Matrix<T,N>& MatData, std::array<Matrix<M,N>, W + 2>& VecData){
216 for(
size_t i = 1; i <= W; ++i){
224 static void VectorizeTrainData(
const Matrix<T,K>& MatData, Matrix<M,K>& VecData){
#define PassedLog()
イベントログ用マクロ(ファイルと行番号のみ記録版)
Definition ARCSeventlog.hh:26
#define PrintMat(a)
行列要素表示マクロ(フォーマット指定なし版)
Definition Matrix.hh:36
constexpr void getvvector(const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &y, const size_t m, const size_t n)
指定位置から縦ベクトルを抽出する関数 (引数渡し版)
Definition ArcsMatrix.hh:3759
フレームグラフィックスクラス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 FrameGraphics.hh:91
void SavePngImageFile(const std::string &FileName)
PNG画像ファイルを保存する関数
Definition FrameGraphics.hh:200
行列/ベクトル計算クラス(テンプレート版)
Definition Matrix.hh:44
static void MeanRow(const Matrix< N, M > &U, Matrix< 1, M > &y)
行列Uの横方向の平均を計算して縦ベクトルを出力する関数
Definition Statistics.hh:57
static void StandardDeviationRow(const Matrix< N, M > &U, Matrix< 1, M > &y)
行列Uの横方向の標準偏差を求めて縦ベクトルを出力する関数
Definition Statistics.hh:254
機械学習用 時系列データセットクラス
Definition TimeSeriesDatasets.hh:50
Matrix< M, K > TrainData
ベクトル配列版の標準化済み訓練データ(範囲 t = 1 … W, t = 0 と W + 1 の分も確保)
Definition TimeSeriesDatasets.hh:54
void WriteTrainPlot(const double Min, const double Max, const std::string &FileName)
標準化済み入力データの時間波形をPNGファイルに書き出す関数
Definition TimeSeriesDatasets.hh:158
TimeSeriesDatasets(TimeSeriesDatasets &&r)
ムーブコンストラクタ
Definition TimeSeriesDatasets.hh:93
TimeSeriesDatasets(const std::string &InputFile, const std::string &TrainFile)
コンストラクタ
Definition TimeSeriesDatasets.hh:68
void WriteInputPlot(const double Min, const double Max, const std::string &FileName)
標準化済み入力データの時間波形をPNGファイルに書き出す関数
Definition TimeSeriesDatasets.hh:135
~TimeSeriesDatasets()
デストラクタ
Definition TimeSeriesDatasets.hh:103
void DispInputAndTrainData(const size_t DispNum)
標準化済み入力&訓練データを表示する関数
Definition TimeSeriesDatasets.hh:115
TimeSeriesDatasets(void)
空コンストラクタ
Definition TimeSeriesDatasets.hh:57
void StandardizeInput(Matrix< 1, N > &x)
入力データの標準化
Definition TimeSeriesDatasets.hh:109
std::array< Matrix< M, N >, W+2 > InputData
ベクトル配列版の標準化済み入力データ(範囲 t = 1 … W, t = 0 と W + 1 の分も確保)
Definition TimeSeriesDatasets.hh:53