2017-04-13 94 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