check dataset, make predictions, check for mistakes
Sat Jun 10 2023 14:51:38 GMT+0000 (Coordinated Universal Time)
Saved by @evrimuygar33
import time import requests from bs4 import BeautifulSoup import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score # 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']) # 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 # ... # Create target variable 'Direction' indicating price direction historical_data['Direction'] = historical_data['Value'].diff().apply(lambda x: 1 if x > 0 else 0) # Train a prediction model using the historical data X = historical_data.drop(columns=['Timestamp', 'Value', 'Direction']) # Input features y = historical_data['Direction'] # Target variable # Split the dataset into training and testing sets X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Train a prediction model (e.g., logistic regression) model = LogisticRegression() model.fit(X_train, y_train) # Make predictions on the testing set y_pred = model.predict(X_test) # Map the predicted outcomes to actions (Buy/Sell) predicted_actions = ['Buy' if pred == 1 else 'Sell' for pred in y_pred] # Extract the actual price values for the testing set actual_prices = historical_data.iloc[X_test.index]['Value'] # Check for mistakes in the predictions based on price movement mistakes = [i for i, (predicted, actual) in enumerate(zip(predicted_actions, actual_prices)) if (predicted == 'Buy' and actual < actual_prices.iloc[i - 1]) or (predicted == 'Sell' and actual > actual_prices.iloc[i - 1])] # Print the predicted actions print("Predicted actions:") print(predicted_actions) # Print the mistakes made in the predictions print("Mistakes:") for idx in mistakes: print("Instance:", X_test.iloc[idx]) print("Predicted action:", predicted_actions[idx]) print("Actual price:", actual_prices.iloc[idx]) print() # Delay for 30 seconds before extracting data again time.sleep(30)
Comments