【问题标题】:Trying to understand the accuracy() function being applied to LSTM data in this code试图了解此代码中应用于 LSTM 数据的 accuracy() 函数
【发布时间】:2021-07-11 21:20:44
【问题描述】:

我一直在使用 LSTM 为我的机器学习课程进行股票价格预测,而且我对编程很陌生,因此感谢您的耐心等待!

无论如何,我有这个生成准确度分数的函数,我正试图更好地理解该函数的某些组件。即,数据转换和 lamda 函数服务的目的是什么?

函数如下:

  def accuracy(model, data):
        y_test = data["y_test"]
        X_test = data["X_test"]
        y_pred = model.predict(X_test)
        y_test = np.squeeze(data["column_scaler"]["Close"].inverse_transform(np.expand_dims(y_test, axis=0)))
        y_pred = np.squeeze(data["column_scaler"]["Close"].inverse_transform(y_pred))
        y_pred = list(map(lambda current, future: int(float(future) > float(current)), y_test[:-LOOKUP_STEP], y_pred[LOOKUP_STEP:]))
        y_test = list(map(lambda current, future: int(float(future) > float(current)), y_test[:-LOOKUP_STEP], y_test[LOOKUP_STEP:]))
        return accuracy_score(y_test, y_pred)

我很好奇如果我只使用这样的函数会有什么不同:

  def accuracy(model, data):
        y_test = data["y_test"]
        X_test = data["X_test"]
        y_pred = model.predict(X_test)
        return accuracy_score(y_Test, y_pred)

【问题讨论】:

    标签: python numpy tensorflow lstm


    【解决方案1】:

    好吧,您应该更好地描述您的数据和模型输出。我想数据是一个熊猫数据框,你正在使用 sklearn 来预处理你的数据。

    首先您需要规范化您的数据,所以我想在您的代码中某处您有一个 MinMaxScaler 或一些 sklearn 转换,将您的数据框的整个列映射到 0 和 1 之间的值,从您的代码看来是column_scaler。因此,您必须使用inverse_transform 将这些值非标准化为真实(现金值)。因此 0 的 y_pred 值成为您最初对数据的最低值,假设为 10,29 美元。

    然后您将价格预测转换为真假值(布尔值),检查未来价格是否高于当前价格(向前看LOOKUP_STEP)。

    使用这个仅能判断价格是否上涨的数组,您可以计算 Jaccard Score (from sklearn I suppose),它只会告诉您相对于错误的价格,您正确的 UP 价格有多少。

    如果您没有执行这些后处理步骤,accuracy_score 会给出不同的值,我不确定它是否甚至接受浮点数作为值,它会给出错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-21
      • 1970-01-01
      • 2022-12-05
      • 2018-12-29
      • 1970-01-01
      • 2021-12-01
      • 2022-10-04
      相关资源
      最近更新 更多