Skip to content

Instantly share code, notes, and snippets.

@18182324
Last active January 4, 2023 17:06
Show Gist options
  • Save 18182324/aabf64cc6b8929e9e0182dde67248b0b to your computer and use it in GitHub Desktop.
Save 18182324/aabf64cc6b8929e9e0182dde67248b0b to your computer and use it in GitHub Desktop.
Predicting Economic Cycles with Machine Learning
#Scikit-learn library to build and train a linear regression model
# First, we'll import the necessary libraries
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
# Next, we'll load our data and split it into training and testing sets
X = # Your input data (economic indicators)
y = # Your output data (stagflation probability)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Now, we'll create and train our linear regression model
model = LinearRegression()
model.fit(X_train, y_train)
# Finally, we'll use the model to make predictions on the test data
y_pred = model.predict(X_test)
######################
#Decision Trees
# First, we'll import the necessary libraries
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
# Next, we'll load our data and split it into training and testing sets
X = # Your input data (economic indicators)
y = # Your output data (stagflation probability)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Now, we'll create and train our decision tree model
model = DecisionTreeClassifier()
model.fit(X_train, y_train)
# Finally, we'll use the model to make predictions on the test data
y_pred = model.predict(X_test)
##########################
#Random Forests
# First, we'll import the necessary libraries
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
# Next, we'll load our data and split it into training and testing sets
X = # Your input data (economic indicators)
y = # Your output data (stagflation probability)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Now, we'll create and train our random forest model
model = RandomForestClassifier()
model.fit(X_train, y_train)
# Finally, we'll use the model to make predictions on the test data
y_pred = model.predict(X_test)
##############################
#Shiny App
# First, we'll install the necessary libraries
!pip install shiny
# Next, we'll import the libraries and set up our Shiny app
import shiny
import pandas as pd
# Load our data
data = pd.read_csv('economic_data.csv')
# Define the input variables and output variable
input_vars = ['inflation', 'unemployment', 'interest_rates', 'exchange_rates']
output_var = 'stagflation'
# Split the data into training and testing sets
X = data[input_vars]
y = data[output_var]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Train a machine learning model (we'll use a random forest in this example)
model = RandomForestClassifier()
model.fit(X_train, y_train)
# Define a function for predicting stagflation based on the input variables
def predict_stagflation(inflation, unemployment, interest_rates, exchange_rates):
input_data = [[inflation, unemployment, interest_rates, exchange_rates]]
return model.predict(input_data)[0]
# Set up our Shiny app
app = shiny.Shiny()
# Add a text input for each of the input variables
for var in input_vars:
app.add_text_input(var)
# Add a button for triggering the prediction
app.add_button('Predict Stagflation')
# Add an output for displaying the prediction
app.add_text_output('prediction')
# Define a function that runs when the button is clicked
def on_button_click():
# Get the values of the input variables
inflation = app.get_text_input('inflation')
unemployment = app.get_text_input('unemployment')
interest_rates = app.get_text_input('interest_rates')
exchange_rates = app.get_text_input('exchange_rates')
# Make a prediction using the input variables
prediction = predict_stagflation(inflation, unemployment, interest_rates, exchange_rates)
# Update the output with the prediction
app.set_text_output('prediction', prediction)
# Set the button's click event to run the function we just defined
app.set_button_click_event('Predict Stagflation', on_button_click)
# Run the Shiny app
app.run()
#################################
#Regression Tests
# First, we'll import the necessary libraries
import numpy as np
from scipy import stats
# Next, we'll load our data
X = # Your input data (economic indicators)
y = # Your output data (stagflation probability)
# Run a linear regression test to determine the relationship between the input variables and output variable
slope, intercept, r_value, p_value, std_err = stats.linregress(X, y)
# If the p-value is less than 0.05, we can reject the null hypothesis that there is no relationship between the variables
if p_value < 0.05:
print('There is a significant relationship between the input variables and output variable')
else:
print('There is no significant relationship between the input variables and output variable')
# Calculate the coefficient of determination (R^2) to see how well the model fits the data
r_squared = r_value**2
print('R^2 =', r_squared)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment