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