check dataset, make predictions, sees mistakes, does not learn from mistakes
Sat Jun 10 2023 14:56:30 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