Guest User

Untitled

a guest
Feb 18th, 2024
20
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. import pandas as pd
  2. import numpy as np
  3. from sklearn.model_selection import train_test_split
  4. from sklearn.ensemble import RandomForestRegressor
  5. from sklearn.metrics import mean_absolute_error, mean_absolute_percentage_error, r2_score
  6. import matplotlib.pyplot as plt
  7.  
  8. # Load data
  9. data = pd.read_csv('ETH-USD.csv')
  10.  
  11. # Convert 'Date' to datetime format
  12. data['Date'] = pd.to_datetime(data['Date'])
  13.  
  14. # Set 'Date' as the index
  15. data.set_index('Date', inplace=True)
  16.  
  17. # Features and target variable
  18. features = ['Open', 'High', 'Low', 'Adj Close', 'Volume']
  19.  
  20. # Add lag features
  21. for lag in [2, 7, 15, 30]:
  22. data[f'Close_Lag_{lag}'] = data['Close'].shift(lag)
  23. features.append(f'Close_Lag_{lag}')
  24.  
  25. # Add rolling averages
  26. for window in [7, 15, 30]:
  27. data[f'Close_Rolling_Mean_{window}'] = data['Close'].rolling(window=window).mean()
  28. data[f'Close_Rolling_Std_{window}'] = data['Close'].rolling(window=window).std()
  29. features.extend([f'Close_Rolling_Mean_{window}', f'Close_Rolling_Std_{window}'])
  30.  
  31. # Shift the features one day into the future
  32. data[features] = data[features].shift(1)
  33.  
  34. # Drop rows with NaN values introduced by lag, rolling features, and shifting
  35. data.dropna(inplace=True)
  36.  
  37. # Target variable
  38. target = 'Close'
  39.  
  40. # Train-test split
  41. train_size = int(len(data) * 0.8)
  42. train_data, test_data = data.iloc[:train_size], data.iloc[train_size:]
  43.  
  44. # Initialize and train a model (Random Forest Regressor, for example)
  45. model = RandomForestRegressor(n_estimators=100, random_state=42)
  46. model.fit(train_data[features], train_data[target])
  47.  
  48. # Make predictions on the test set
  49. predictions = model.predict(test_data[features])
  50.  
  51. # Evaluate the model
  52. mae = mean_absolute_error(test_data[target], predictions)
  53. mape = mean_absolute_percentage_error(test_data[target], predictions) * 100
  54. r2 = r2_score(test_data[target], predictions)
  55.  
  56. print(f'Mean Absolute Error (MAE): {mae}')
  57. print(f'Mean Absolute Percentage Error (MAPE): {mape:.2f}%')
  58. print(f'R-squared (R2) Score: {r2:.4f}')
  59.  
Advertisement
Add Comment
Please, Sign In to add comment