check dataset, make predictions, learn from mistakes
Sat Jun 10 2023 14:54:21 GMT+0000 (Coordinated Universal Time)
Saved by @evrimuygar33
import time import requests from bs4 import BeautifulSoup import pandas as pd from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score from sklearn.preprocessing import MinMaxScaler # URL of the webpage containing the chart url = 'https://example.com/chart' # Initialize an empty DataFrame to store the historical chart data historical_data = pd.DataFrame(columns=['Timestamp', 'Value']) # Initialize the model model = RandomForestClassifier() # Continuously monitor the website and extract chart data while True: # Send a GET request to the webpage response = requests.get(url) # Parse the HTML content of the webpage using BeautifulSoup soup = BeautifulSoup(response.content, 'html.parser') # Extract the chart data from the webpage using appropriate HTML selectors and attributes chart_data = [] # ... # Process the chart data and append it to the historical data DataFrame df = pd.DataFrame(chart_data, columns=['Timestamp', 'Value']) historical_data = pd.concat([historical_data, df], ignore_index=True) # Perform data preprocessing (e.g., cleaning, feature engineering, etc.) on the historical data # ... # Add a moving average feature window_size = 5 historical_data['MovingAverage'] = historical_data['Value'].rolling(window=window_size).mean() # Create target variable 'Direction' indicating price direction historical_data['Direction'] = historical_data['Value'].diff().apply(lambda x: 1 if x > 0 else 0) # Split the historical data into features and target variable X = historical_data[['Value', 'MovingAverage']] y = historical_data['Direction'] # Scale the features scaler = MinMaxScaler() X_scaled = scaler.fit_transform(X) # Update the model with the current data model.partial_fit(X_scaled, y, classes=[0, 1]) # Make predictions on the current data y_pred = model.predict(X_scaled) # Calculate the model's accuracy accuracy = accuracy_score(y, y_pred) print("Model Accuracy:", accuracy) # Extract the actual price values actual_prices = historical_data['Value'] # Compare the predicted actions with the actual price movements mistakes = [] for i, (predicted, actual, timestamp) in enumerate(zip(y_pred, actual_prices, historical_data['Timestamp'])): if (predicted == 1 and actual < actual_prices.iloc[i - 1]) or (predicted == 0 and actual > actual_prices.iloc[i - 1]): mistakes.append((timestamp, predicted, actual)) # Print the predicted actions predicted_actions = ['Buy' if pred == 1 else 'Sell' for pred in y_pred] print("Predicted actions:") for timestamp, action in zip(historical_data['Timestamp'], predicted_actions): print(timestamp, action) # Print the mistakes made in the predictions print("Mistakes:") for timestamp, action, actual in mistakes: print("Timestamp:", timestamp) print("Action:", action) print("Actual price:", actual) print() # Delay for 30 seconds before extracting data again time.sleep(30)
Comments