Download Model1.py from Project2024/prediction: direct link, hf CLI and curl.
- Browser
- Download file 5.22 kB
-
https://huggingface.co/Project2024/prediction/resolve/main/Model1.py
- Command line
-
hf download hf://Project2024/prediction/Model1.py
-
curl -L -o Model1.py https://huggingface.co/Project2024/prediction/resolve/main/Model1.py
5.22 kB
| import pandas as pd | |
| import numpy as np | |
| import time | |
| import requests | |
| import matplotlib.pyplot as plt | |
| from sklearn.preprocessing import MinMaxScaler | |
| import tensorflow as tf | |
| from keras.models import Sequential | |
| from keras.layers import Dense,Dropout,Bidirectional | |
| from keras.layers import LSTM | |
| data=requests.get('https://api.twelvedata.com/time_series?symbol=BTC/INR&timezone=Asia/Kolkata&start_date=2023-03-01 00:00:00&end_date=2023-03-20 00:00:00&order=ASC&interval=5min&outputsize=5000&apikey=e76157c75c3a42649e168c5c206e88ca').json() | |
| #print(data) | |
| data_final=pd.DataFrame(data['values']) | |
| #print(data_final) | |
| scaler=MinMaxScaler(feature_range=(0,1)) | |
| scaled_data=scaler.fit_transform(data_final['close'].values.reshape(-1,1)) | |
| timeinterval=24 | |
| prediction=1 | |
| x_train=[] | |
| y_train=[] | |
| for i in range(timeinterval,len(scaled_data)-prediction): | |
| x_train.append(scaled_data[i-timeinterval:i,0]) | |
| y_train.append(scaled_data[i+prediction,0]) | |
| x_train=np.array(x_train) | |
| y_train=np.array(y_train) | |
| x_train=np.reshape(x_train,(x_train.shape[0],x_train.shape[1],1)) | |
| model=Sequential() | |
| model.add(Bidirectional(LSTM(256,return_sequences=True,input_shape=(x_train.shape[1],1),activation='relu'))) | |
| model.add(Dropout(0.3)) | |
| model.add(Bidirectional(LSTM(128,return_sequences=True,activation='tanh'))) | |
| model.add(Dropout(0.2)) | |
| model.add(Bidirectional(LSTM(64,activation='relu'))) | |
| model.add(Dropout(0.1)) | |
| model.add(Dense(1,activation='sigmoid')) | |
| model.compile(loss='mean_squared_error',optimizer='adam',metrics=['accuracy']) | |
| model.fit(x_train,y_train,epochs=15,batch_size=100) | |
| predict=[] | |
| exchange=[] | |
| i=0 | |
| while(i<6): | |
| testapi='https://api.twelvedata.com/time_series?symbol=BTC/INR&interval=5min&outputsize=3000&timezone=Asia/Kolkata&order=ASC&apikey=e76157c75c3a42649e168c5c206e88ca' | |
| testdata=requests.get(testapi).json() | |
| testdatafinal=pd.DataFrame(testdata['values']) | |
| bitcoinprice=pd.to_numeric(testdatafinal['close'],errors='coerce').values | |
| testinputs=testdatafinal['close'].values | |
| testinputs=testinputs.reshape(-1,1) | |
| modelinputs=scaler.fit_transform(testinputs) | |
| x_test=[] | |
| for x in range(timeinterval,len(modelinputs)): | |
| x_test.append(modelinputs[x-timeinterval:x,0]) | |
| x_test=np.array(x_test) | |
| x_test=np.reshape(x_test,(x_test.shape[0],x_test.shape[1],1)) | |
| prediction_price=model.predict(x_test) | |
| prediction_price=scaler.inverse_transform(prediction_price) | |
| """plt.plot(bitcoinprice,label='Bitcoin Prices') | |
| plt.plot(prediction_price,label='Predicted Prices') | |
| plt.title('Predicting Bitcoin Price') | |
| plt.xlabel('5min Interval') | |
| plt.ylabel('Price') | |
| plt.legend() | |
| plt.show()""" | |
| exchangeapi='https://api.twelvedata.com/exchange_rate?symbol=BTC/INR&timezone=Asia/Kolkata&apikey=e76157c75c3a42649e168c5c206e88ca' | |
| exchangedata=requests.get(exchangeapi).json() | |
| print(exchangedata) | |
| exchangefinal=exchangedata['rate'] | |
| exchange.append(exchangefinal) | |
| lastdata=modelinputs[len(modelinputs)+1-timeinterval:len(modelinputs)+1,0] | |
| lastdata=np.array(lastdata) | |
| lastdata=np.reshape(lastdata,(1,lastdata.shape[0],1)) | |
| prediction=model.predict(lastdata) | |
| prediction=scaler.inverse_transform(prediction) | |
| predict.append(prediction[0][0]) | |
| print(prediction) | |
| i+=1 | |
| print(i) | |
| time.sleep(300) | |
| """testapi='https://api.twelvedata.com/time_series?symbol=BTC/INR&interval=5min&outputsize=3000&apikey=e76157c75c3a42649e168c5c206e88ca' | |
| testdata=requests.get(testapi).json() | |
| testdatafinal=pd.DataFrame(testdata['values']) | |
| bitcoinprice=pd.to_numeric(testdatafinal['close'],errors='coerce').values | |
| testinputs=testdatafinal['close'].values | |
| testinputs=testinputs.reshape(-1,1) | |
| modelinputs=scaler.fit_transform(testinputs) | |
| x_test=[] | |
| for x in range(timeinterval,len(modelinputs)): | |
| x_test.append(modelinputs[x-timeinterval:x,0]) | |
| x_test=np.array(x_test) | |
| x_test=np.reshape(x_test,(x_test.shape[0],x_test.shape[1],1)) | |
| prediction_price=model.predict(x_test) | |
| prediction_price=scaler.inverse_transform(prediction_price) | |
| plt.plot(bitcoinprice,label='Bitcoin Prices') | |
| plt.plot(prediction_price,label='Predicted Prices') | |
| plt.title('Predicting Bitcoin Price') | |
| plt.xlabel('5min Interval') | |
| plt.ylabel('Price') | |
| plt.legend() | |
| plt.show() | |
| predict=[] | |
| exchange=[] | |
| exchangeapi='https://api.twelvedata.com/exchange_rate?symbol=BTC/INR&timezone=Asia/Kolkata&apikey=e76157c75c3a42649e168c5c206e8' | |
| exchangedata=requests.get(exchangeapi).json() | |
| exchangefinal=pd.DataFrame(exchangedata['rate']) | |
| exchange.append(exchangefinal) | |
| lastdata=modelinputs[len(modelinputs)+1-timeinterval:len(modelinputs)+1,0] | |
| lastdata=np.array(lastdata) | |
| lastdata=np.reshape(lastdata,(1,lastdata.shape[0],1)) | |
| prediction=model.predict(lastdata) | |
| prediction=scaler.inverse_transform(prediction) | |
| predict.append(prediction) | |
| print(prediction)""" | |
| exchange1api='https://api.twelvedata.com/exchange_rate?symbol=BTC/INR&timezone=Asia/Kolkata&apikey=e76157c75c3a42649e168c5c206e88ca' | |
| exchange1data=requests.get(exchange1api).json() | |
| exchange1final=exchange1data['rate'] | |
| exchange.append(exchange1final) | |
| exchange.pop(0) | |
| print(exchange) | |
| print(predict) | |
| plt.plot(exchange,label='Bitcoin Price') | |
| plt.plot(predict,label='Predicted Prices') | |
| plt.title('Predicting Bitcoin Price') | |
| plt.xlabel('5min Interval') | |
| plt.ylabel('Price') | |
| plt.legend() | |
| plt.show() |