繁体   English   中英

此 Python/Keras 代码的 C# 等效项是什么?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM