2017-04-13 61 views
0

我使用的是带有Tensorflow神经网络的Anaconda。我的大部分数据都与pandas存储在一起。
我试图预测加密货币市场。我知道很多人可能会这样做,而且这很可能不会很有效,我主要是通过它来熟悉Tensorflow和Anaconda工具。
我对此很新,所以如果我做错了什么或不理想,请让我知道。我该如何清理标准化数据,然后再“非标准化”呢?

这里是我的AQUIRE和处理数据:从quandl.com

  1. 下载数据集到大熊猫DataFrames
  2. 从每个下载的数据集
  3. 串联的DataFrames
  4. 下拉菜单中选择所需的列合并后的所有NaN DataFrame
  5. 将每列(独立)标准化为0.0-1.0DataFrame使用的代码
    df = (df - df.min())/(df.max() - df.min())
  6. 饲料的归一化数据到我的神经网络
  7. Unnormalize的数据(这是我还没有实现的部分)

现在,我的问题是, ,我该如何干净地标准化,然后对这些数据进行非规范化处理?我意识到如果我想对数据进行非规范化处理,我将需要存储最初的df.min()df.max()值,但这看起来很丑并且感觉很麻烦。
我知道我可以使用sklearn.preprocessing.MinMaxScaler来标准化数据,但据我所知我不能使用这个来对数据进行非标准化。

这可能是我在这里做了一些根本性的错误,但是如果没有一种干净的方法来规范化和使用Anaconda或其他库进行非规范化的数据,我会非常惊讶。

+0

如果不存储最小值和最大值,则不可能不正常。我会在函数中归一化归一化,并返回最大值和最小值(以及标准化数据)以供后续使用。 – Robbie

+0

@Robbie这就是我打算做的事情,看起来很奇怪,像这样的东西没有实现。我接近这个错误吗?我是否应该正常化?我正在使用这个网络进行加密货币市场分析 – PizzaFrog

+2

您不必对数据进行标准化即可将其用于神经网络,尽管这是由于各种原因完成的(请参阅http://www.faqs.org/faqs/ai-faq/神经网/第2部分/)。 – Robbie

回答

3

sklearn.preprocessing中的所有缩放器都有inverse_transform专为此设计的方法。

例如,规模和未扩展您的DataFrameMinMaxScaler你可以这样做:

from sklearn.preprocessing import MinMaxScaler 
scaler = MinMaxScaler() 
scaled = scaler.fit_transform(df) 
unscaled = scaler.inverse_transform(scaled) 

只要记住了transform函数(fit_transform以及)返回一个numpy.array,而不是pandas.Dataframe

+0

正是我在找什么,谢谢 – PizzaFrog