成人免费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-01-12 16:07:37

比特幣礦工投資

2021-02-10 16:50:35

比特幣加密貨幣貨幣

2020-12-15 20:00:09

比特幣加密貨幣區塊鏈

2020-12-29 09:00:00

比特幣區塊鏈安全

2021-02-05 14:28:13

比特幣疫情數據

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

比特幣區塊鏈礦工

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

比特幣加密貨幣區塊鏈

2021-03-10 09:12:16

比特幣區塊鏈加密貨幣

2022-01-05 22:56:49

比特幣加密貨幣貨幣

2020-05-20 20:00:46

比特幣數字貨幣區塊鏈

2018-07-05 15:37:46

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 激情视频一区 | 亚洲综合二区 | 人人看人人干 | 黄色大片免费观看 | 精品一二区| 国产精品毛片一区二区三区 | 国产一区二区三区在线看 | av一级久久 | 欧美嘿咻| 狠狠躁夜夜躁人人爽天天高潮 | 伊人精品在线视频 | 日韩精品久久久久 | 久久国产一区二区三区 | 国产精品久久片 | 免费观看成人鲁鲁鲁鲁鲁视频 | 久久99久久久久 | 欧美中文在线 | 中文字幕久久精品 | 亚洲精品视频一区 | 国产精品国产三级国产aⅴ原创 | 中文字幕视频在线 | 亚洲欧美一区在线 | 欧美日韩成人 | 粉嫩国产精品一区二区在线观看 | 中文字幕在线免费观看 | 国产中文视频 | 少妇久久久久 | 国产精品二区三区 | 成人性视频免费网站 | 中文字幕在线精品 | 亚洲精品乱码久久久久久蜜桃 | 精品欧美一区二区精品久久久 | 久久毛片网站 | 午夜精品一区二区三区免费视频 | 国产成人精品久久二区二区91 | av黄色在线观看 | 精品国产91乱码一区二区三区 | 91视频在线观看 | 国产专区在线 | 国产极品粉嫩美女呻吟在线看人 | 91深夜福利视频 |