[英]What is the C# equivalent of this Python/Keras code?
我正在尝试使用 Keras.NET 将一些 Python/Keras 代码部分转换为 C#。
...
changes = df[["open_changes", "high_changes", "low_changes"]].values
X = []
Y = []
for i in range(len(changes) - 21, 0, -1):
Y.append(changes[i+20,0])
X.append(np.array(changes[i:i+20]))
X = np.array(X).reshape(-1, 20, 3)
Y = np.array(Y)
...
其中“更改”是原始 dataframe 和 3 列的另一个 dataframe。
print(changes)
[[ 2.98969072e-02 2.98969072e-02 -2.57731959e-03]
[-3.90390390e-02 -2.91291291e-02 -7.75193798e-03]
[ 0.00000000e+00 -1.02072379e-02 -1.04166667e-02]
...
[-6.93083505e-03 3.27677700e-02 1.20471767e-05]
[ 3.31993647e-02 -6.95852535e-03 2.28291249e-02]
[-8.89789548e-03 -8.07462063e-03 -3.64180300e-02]]
X 和 Y 是 LSTM model 的输入,其中 Y 包含“open_changes”(应该预测)的值,X 包含 20 个数据集(“open_changes”、“high_changes”和“low_changes”)的序列,然后从中学习
print(Y[0])
print(X[0])
-0.00889789548466735
[[ 9.06883161e-03 9.28074246e-03 1.37642130e-02]
[ 4.46459714e-03 -1.14942529e-03 6.49350649e-03]
[-1.11581823e-02 -6.24856157e-03 -6.13489736e-03]
[ 2.86784502e-03 3.50869067e-03 -1.44818063e-02]
[ 6.74642544e-03 0.00000000e+00 2.21317365e-02]
[ 1.92457074e-03 3.92337872e-03 -8.17828186e-03]
[-9.25722353e-04 7.40229885e-03 1.12581217e-02]
[ 8.32763873e-03 -1.65442015e-03 -6.25328552e-02]
[-5.59741781e-02 -3.26860878e-02 1.99875389e-02]
[ 2.37391251e-02 -4.59599003e-03 1.52222249e-02]
[-4.27878673e-04 -1.42433234e-03 -1.02286402e-02]
[-1.38168847e-02 -1.80672768e-03 -3.64741641e-02]
[ 2.42349707e-03 1.16339994e-02 4.47823344e-02]
[ 1.70678021e-02 5.29692190e-04 -1.10025483e-02]
[-4.11551834e-03 -8.23529412e-03 1.22118015e-02]
[-5.09440684e-03 -3.08422301e-03 -4.37940353e-03]
[-6.33795252e-03 -2.26082818e-03 -3.21114814e-03]
[ 5.21321321e-03 2.33750745e-03 9.08096280e-03]
[-6.93083505e-03 3.27677700e-02 1.20471767e-05]
[ 3.31993647e-02 -6.95852535e-03 2.28291249e-02]]
因为 Pandas.NET 库实际上不支持我需要的功能,所以我决定使用非常棒的 Deedle.Frame:
var df = GetPreparedDataFrame(filePath);
IEnumerable<string> columns = new List<string>() { "open_changes", "high_changes", "low_changes" };
var changes = df.Columns[columns];
其中“GetPreparedDataFrame(...)”只是读取 CSV 文件并在 Deedle.Frame 中进行一些数据操作。
但是现在,我不知道 go 怎么开。
有任何想法吗?
提前致谢。 塞巴斯蒂安。
我找到了解决方案。
我在我的项目中使用 TensorFlow.NET。 NumSharp 是它的依赖项之一,将在此处使用:
using NumSharp;
接着:
var (X, Y) = GetNpArray(changes);
X = np.array(X).reshape(-1, 20, 3);
Y = np.array(Y);
其中 GetNpArray(...) 定义如下:
private static (NDArray, NDArray) GetNpArray(Frame<int, string> dataFrame)
{
var X = new List<float[]>();
var Y = new List<float>();
for (var i = 0; i < dataFrame.RowCount - 20; i++)
{
for (var j = 0; j < 20; j++)
{
var x1 = Convert.ToDouble(dataFrame["open_changes", i + j]);
var x2 = Convert.ToDouble(dataFrame["high_changes", i + j]);
var x3 = Convert.ToDouble(dataFrame["low_changes", i + j]);
X.Add(new[] { (float)x1, (float)x2, (float)x3 });
}
var y = Convert.ToDouble(dataFrame["open", i + 20]);
Y.Add((float)y);
}
return (np.array(X.ToArray()), np.array(Y.ToArray()));
}
这正是我所需要的。
问候。 塞巴斯蒂安。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.