成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用Python預測比特幣價格

開發 后端
比特幣是所有加密愛好者普遍使用的加密貨幣之一。即使有幾種突出的加密貨幣,如以太坊,Ripple,Litecoin等,比特幣也位居榜首。

[[399626]]

本文轉載自微信公眾號「區塊鏈研究實驗室」,作者鏈三豐。轉載本文請聯系區塊鏈研究實驗室公眾號。

在本文中,我們將討論與比特幣價格預測有關的程序。

涉及的主題:

1.什么是比特幣

2.如何使用比特幣

3.使用深度學習預測比特幣價格

什么是比特幣?

比特幣是所有加密愛好者普遍使用的加密貨幣之一。即使有幾種突出的加密貨幣,如以太坊,Ripple,Litecoin等,比特幣也位居榜首。

加密貨幣通常用作我們貨幣的加密形式,廣泛用于購物,交易,投資等。

它使用對等技術,該技術背后是,沒有驅動力或任何第三方來干擾網絡內完成的交易。此外,比特幣是“開源的”,任何人都可以使用。

功能:

  • 快速的點對點交易
  • 全球支付
  • 手續費低

使用的原理-密碼學:

加密貨幣(比特幣)背后的工作原理是“加密”,他們使用此原理來保護和認證協商,并控制加密貨幣新組件的建立。

如何使用比特幣?

  • 保護錢包:應該更安全地保護比特幣錢包,以便輕松順利地進行交易
  • 比特幣價格易變:比特幣價格可能會波動。價格可以根據通貨膨脹率,數量等幾個因素而增加或減少。

使用深度學習預測比特幣價格

1. 數據收集:

導入CSV文件數據集。

  1. import pandas as pd 
  2. import numpy as np 
  3. import matplotlib.pyplot as plt 

現在,使用pandas和numpy導入數據集。Numpy主要用于python中的科學計算,

  1. coindata = pd.read_csv(‘Dataset.csv’) 
  2. googledata = pd.read_csv(‘DS2.csv’) 

已加載的原始數據集已打印,

  1. coindata = coindata.drop([‘#’], axis=1) 
  2. coindata.columns = [‘Date’,’Open’,’High’,’Low’,’Close’,’Volume’] 
  3. googledata = googledata.drop([‘Date’,’#’], axis=1) 

未使用的列將放在此處。

從硬幣數據和Google數據集中刪除兩列,因為它們是未使用的列。

從數據集中刪除未使用的列后,將為兩個數據集打印最終結果。

  1. last = pd.concat([coindata,googledata], axis=1) 

將兩個數據集(硬幣數據和谷歌數據)連接起來,并使用函數將其打印出來

  1. last.to_csv(‘Bitcoin3D.csv’, index=False

2.一維RNN:

現在將兩個數據集串聯后,將導出最終數據集。

  1. import pandas as pd 
  2. import matplotlib.pyplot as plt 
  3. import numpy as np 
  4. import math 
  5. from sklearn.preprocessing import MinMaxScaler 
  6. from sklearn.metrics import mean_squared_error 
  7. from keras.models import Sequential 
  8. from keras.layers import Dense, Activation, Dropout 
  9. from keras.layers import LSTM 

在這里使用Keras庫。Keras僅需幾行代碼即可使用有效的計算庫訓練神經網絡模型。

MinMaxScaler會通過將每個特征映射到給定范圍來轉換特征。sklearn軟件包將提供該程序所需的一些實用程序功能。

密集層將執行以下操作,并將返回輸出。

  1. output = activation(dot(input, kernel) + bias) 
  2. def new_dataset(dataset, step_size): 
  3.     data_X, data_Y = [], [] 
  4.     for i in range(len(dataset)-step_size-1): 
  5.         a = dataset[i:(i+step_size), 0] 
  6.         data_X.append(a) 
  7.         data_Y.append(dataset[i + step_size, 0]) 
  8.     return np.array(data_X), np.array(data_Y) 

將在數據預處理階段收集的一維數據分解為時間序列數據,

  1. df = pd.read_csv(“Bitcoin1D.csv”) 
  2. df[‘Date’] = pd.to_datetime(df[‘Date’]) 
  3. df = df.reindex(index= df.index[::-1]) 

數據集已加載。該功能是從Bitcoin1D.csv文件中讀取的。另外,將“日期”列轉換為“日期時間”。通過“日期”列重新索引所有數據集。

  1. zaman = np.arange(1, len(df) + 1, 1) 
  2. OHCL_avg = df.mean(axis=1) 

直接分配一個新的索引數組。

  1. OHCL_avg = np.reshape(OHCL_avg.values, (len(OHCL_avg),1)) #7288 data 
  2. scaler = MinMaxScaler(feature_range=(0,1)) 
  3. OHCL_avg = scaler.fit_transform(OHCL_avg) 

分配定標器后規格化數據集,

  1. #print(OHCL_avg) 
  2. train_OHLC = int(len(OHCL_avg)*0.56) 
  3. test_OHLC = len(OHCL_avg) — train_OHLC 
  4. train_OHLC, test_OHLC = OHCL_avg[0:train_OHLC,:], OHCL_avg[train_OHLC:len(OHCL_avg),:] 
  5. #Train the datasets and test it 
  6. trainX, trainY = new_dataset(train_OHLC,1) 
  7. testX, testY = new_dataset(test_OHLC,1) 

從平均OHLC(開高低開)中創建一維維度數據集,

  1. trainX = np.reshape(trainX, (trainX.shape[0],1,trainX.shape[1])) 
  2. testX = np.reshape(testX, (testX.shape[0],1,testX.shape[1])) 
  3. step_size = 1 

以3D維度重塑LSTM的數據集。將step_size分配給1。

  1. model = Sequential() 
  2. model.add(LSTM(128, input_shape=(1, step_size))) 
  3. model.add(Dropout(0.1)) 
  4. model.add(Dense(1)) 
  5. model.add(Activation(‘linear’)) 

創建LSTM模型,

  1. model.compile(loss=’mean_squared_error’, optimizer=’adam’) 
  2. model.fit(trainX, trainY, epochs=10, batch_size=25, verbose=2) 

將紀元數定義為10,batch_size為25,

  1. trainPredict = model.predict(trainX) 
  2. testPredict = model.predict(testX) 
  3. trainPredict = scaler.inverse_transform(trainPredict) 
  4. trainY = scaler.inverse_transform([trainY]) 
  5. testPredict = scaler.inverse_transform(testPredict) 
  6. testY = scaler.inverse_transform([testY]) 

完成了歸一化以進行繪圖,

  1. trainScore = math.sqrt(mean_squared_error(trainY[0],  
  2.                        trainPredict[:,0])) 
  3. testScore = math.sqrt(mean_squared_error(testY[0],  
  4.                        testPredict[:,0])) 

針對預測的測試數據集計算性能度量RMSE,

  1. trainPredictPlot = np.empty_like(OHCL_avg) 
  2. trainPredictPlot[:,:] = np.nan 
  3. trainPredictPlot[step_size:len(trainPredict)+step_size,:] = 
  4.                                                   trainPredict 

將轉換后的train數據集用于繪圖,

  1. testPredictPlot = np.empty_like(OHCL_avg) 
  2. testPredictPlot[:,:] = np.nan 
  3. testPredictPlot[len(trainPredict)+(step_size*2)+1:len(OHCL_avg)-1,:] 
  4.                     = testPredict 

將轉換后的預測測試數據集用于繪圖,

最終將預測值可視化。

  1. OHCL_avg = scaler.inverse_transform(OHCL_avg) 
  2. plt.plot(OHCL_avg, ‘g’, label=’Orginal Dataset’) 
  3. plt.plot(trainPredictPlot, ‘r’, label=’Training Set’) 
  4. plt.plot(testPredictPlot, ‘b’, label=’Predicted price/test set’) 
  5. plt.title(“ Bitcoin Predicted Prices”) 
  6. plt.xlabel(‘ Time’, fontsize=12) 
  7. plt.ylabel(‘Close Price’, fontsize=12) 
  8. plt.legend(loc=’upper right’) 
  9. plt.show() 

3.多變量的RNN:

  1. import pandas as pd 
  2. from pandas import DataFrame 
  3. from pandas import concat 
  4. from math import sqrt 
  5. from numpy import concatenate 
  6. import matplotlib.pyplot as pyplot 
  7. import numpy as np 
  8. from sklearn.metrics import mean_squared_error 
  9. from sklearn.preprocessing import MinMaxScaler 
  10. from keras import Sequential 
  11. from keras.layers import LSTM, Dense, Dropout, Activation 
  12. from pandas import read_csv 

使用Keras庫。Keras僅需幾行代碼就可以使用有效的計算庫來訓練神經網絡模型。sklearn軟件包將提供該程序所需的一些實用程序功能。

密集層將執行以下操作,并將返回輸出。

  1. dataset = read_csv(‘Bitcoin3D.csv’, header=0, index_col=0) 
  2. print(dataset.head()) 
  3. values = dataset.values 

使用Pandas庫加載數據集。在這里準備了可視化的列。

  1. groups = [0, 1, 2, 3, 5, 6,7,8,9] 
  2. i = 1 

將系列轉換為監督學習。

  1. def series_to_supervised(data, n_in=1, n_out=1, dropnan=True): 
  2.     n_vars = 1 if type(data) is list else data.shape[1] 
  3.     df = DataFrame(data) 
  4.     cols, names = list(), list() 
  5.     # Here is created input columns which are (t-n, … t-1) 
  6.     for i in range(n_in, 0, -1): 
  7.         cols.append(df.shift(i)) 
  8.         names += [(‘var%d(t-%d)’ % (j+1, i)) for j in range(n_vars)] 
  9. #Here, we had created output/forecast column which are (t, t+1, … t+n) 
  10.     for i in range(0, n_out): 
  11.         cols.append(df.shift(-i)) 
  12.         if i == 0: 
  13.             names += [(‘var%d(t)’ % (j+1)) for j in range(n_vars)] 
  14.         else
  15.             names += [(‘var%d(t+%d)’ % (j+1, i)) for j in 
  16.                                              range(n_vars)] 
  17.     agg = concat(cols, axis=1) 
  18.     agg.columns = names 
  19.     # drop rows with NaN values  
  20.     if dropnan: 
  21.         agg.dropna(inplace=True
  22.     return agg 

檢查值是否為數字格式,

  1. values = values.astype(‘float32’) 

數據集值通過使用MinMax方法進行歸一化,

  1. scaler = MinMaxScaler(feature_range=(0,1)) 
  2. scaled = scaler.fit_transform(values

將規范化的值轉換為監督學習,

  1. reframed = series_to_supervised(scaled,1,1) 
  2. #reframed.drop(reframed.columns[[9,10,11,12,13,14,15]], axis=1, inplace=True

數據集分為兩組,分別是訓練集和測試集,

  1. values = reframed.values 
  2. train_size = int(len(values)*0.70) 
  3. train = values[:train_size,:] 
  4. test = values[train_size:,:] 

拆分的數據集被拆分為trainX,trainY,testX和testY,

  1. trainX, trainY = train[:,:-1], train[:,13] 
  2. testX, testY = test[:,:-1], test[:,13] 

訓練和測試數據集以3D尺寸重塑以用于LSTM,

  1. trainX = trainX.reshape((trainX.shape[0],1,trainX.shape[1])) 
  2. testX = testX.reshape((testX.shape[0],1,testX.shape[1])) 

創建LSTM模型并調整神經元結構,

  1. model = Sequential() 
  2. model.add(LSTM(128, input_shape=(trainX.shape[1], trainX.shape[2]))) 
  3. model.add(Dropout(0.05)) 
  4. model.add(Dense(1)) 
  5. model.add(Activation(‘linear’)) 
  6. model.compile(loss=’mae’, optimizer=’adam’) 

通過使用trainX和trainY訓練數據集,

  1. history = model.fit(trainX, trainY, epochs=10, batch_size=25, validation_data=(testX, testY), verbose=2, shuffle=False

計算每個訓練時期的損耗值,并將其可視化,

  1. pyplot.plot(history.history[‘loss’], label=’train’) 
  2. pyplot.plot(history.history[‘val_loss’], label=’test’) 
  3. pyplot.title(“Test and Train set Loss Value Rate”) 
  4. pyplot.xlabel(‘Epochs Number’, fontsize=12) 
  5. pyplot.ylabel(‘Loss Value’, fontsize=12) 
  6. pyplot.legend() 
  7. pyplot.show() 

對訓練數據集執行預測過程,

  1. trainPredict = model.predict(trainX) 
  2. trainX = trainX.reshape((trainX.shape[0], trainX.shape[2])) 

對測試數據集執行預測過程,

  1. testPredict = model.predict(testX) 
  2. testX = testX.reshape((testX.shape[0], testX.shape[2])) 

訓練數據集反轉縮放比例以進行訓練,

  1. testPredict = model.predict(testX) 
  2. testX = testX.reshape((testX.shape[0], testX.shape[2])) 

測試數據集反轉縮放以進行預測,

  1. testPredict = concatenate((testPredict, testX[:, -9:]), axis=1) 
  2. testPredict = scaler.inverse_transform(testPredict) 
  3. testPredict = testPredict[:,0] 
  4. # invert scaling for actual 
  5. testY = testY.reshape((len(testY), 1)) 
  6. inv_y = concatenate((testY, testX[:, -9:]), axis=1) 
  7. inv_y = scaler.inverse_transform(inv_y) 
  8. inv_y = inv_y[:,0] 

通過將mean_squared_error用于train和測試預測來計算性能指標,

  1. rmse2 = sqrt(mean_squared_error(trainY, trainPredict)) 
  2. rmse = sqrt(mean_squared_error(inv_y, testPredict)) 

訓練和測試的預測集串聯在一起

  1. final = np.append(trainPredict, testPredict) 
  2. final = pd.DataFrame(data=final, columns=[‘Close’]) 
  3. actual = dataset.Close 
  4. actual = actual.values 
  5. actual = pd.DataFrame(data=actual, columns=[‘Close’]) 

最后,將訓練和預測結果可視化。

  1. pyplot.plot(actual.Close, ‘b’, label=’Original Set’) 
  2. pyplot.plot(final.Close[0:16781], ‘r’ , label=’Training set’) 
  3. pyplot.plot(final.Close[16781:len(final)], ‘g’, 
  4.             label=’Predicted/Test set’) 
  5. pyplot.title(“ Bitcoin Predicted Prices”) 
  6. pyplot.xlabel(‘ Time’, fontsize=12) 
  7. pyplot.ylabel(‘Close Price’, fontsize=12) 
  8. pyplot.legend(loc=’best’) 
  9. pyplot.show() 

目前為止,我們使用歷史比特幣價格數據集開發價格預測模型,通過使用Python中的RNN和LSTM算法來找到價格預測。

 

責任編輯:武曉燕 來源: 區塊鏈研究實驗室
相關推薦

2021-02-02 10:43:13

比特幣區塊鏈加密貨幣

2021-01-08 14:40:56

比特幣加密貨幣區塊鏈

2018-10-24 10:40:41

2021-02-10 16:50:35

比特幣加密貨幣貨幣

2021-01-12 16:07:37

比特幣礦工投資

2020-12-15 20:00:09

比特幣加密貨幣區塊鏈

2021-02-05 14:28:13

比特幣疫情數據

2020-12-29 09:00:00

比特幣區塊鏈安全

2022-09-30 14:15:07

區塊鏈比特幣虛擬貨幣

2021-02-14 00:54:20

比特幣虛擬貨幣區塊鏈

2019-11-25 00:01:25

Satan勒索病毒比特幣

2021-06-08 21:49:06

比特幣區塊鏈礦工

2021-03-10 09:12:16

比特幣區塊鏈加密貨幣

2022-01-05 22:56:49

比特幣加密貨幣貨幣

2020-12-02 16:26:45

比特幣數字資產貨幣

2021-01-26 00:50:45

DDoS勒索攻擊網絡安全

2021-02-16 23:52:58

比特幣加密貨幣數據

2021-02-19 18:47:24

比特幣加密貨幣區塊鏈

2018-07-05 15:37:46

2020-05-20 20:00:46

比特幣數字貨幣區塊鏈
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美精品三区 | 精品在线一区二区三区 | 日韩视频专区 | 成人精品免费视频 | 国产精品视频一区二区三区四蜜臂 | 欧美色性 | 久久国产视频网站 | 国产色片在线 | 日本不卡一二三 | 麻豆精品久久 | 成人在线视频一区 | 日韩欧美一级精品久久 | 黑人巨大精品欧美一区二区免费 | 一区二区三区精品视频 | 欧美精品91爱爱 | 久久久噜噜噜www成人网 | 免费观看av网站 | 久久久久久久久久一区 | 国产精品一区二区三区久久 | 天天想天天干 | 99re超碰 | 欧美日韩国产一区 | 欧美视频 亚洲视频 | 欧美日韩精品一区二区三区四区 | 日韩看片 | 免费在线观看91 | 亚洲国产高清免费 | 天天综合日日夜夜 | 免费国产一区二区 | 国产精品福利视频 | 99精品视频一区二区三区 | 亚洲成人精| 久久久久网站 | 综合久久亚洲 | jlzzjlzz国产精品久久 | 午夜视频在线观看网站 | 五月婷婷 六月丁香 | 国产欧美日韩精品在线观看 | 国产午夜精品一区二区三区嫩草 | 国产精品精品视频 | 欧美精品在欧美一区二区少妇 |