0% found this document useful (0 votes)
4 views5 pages

Python Code

The document outlines a Python script for predicting COVID-19 cases using Support Vector Machine (SVM), Linear Regression, and Bayesian Ridge models. It imports various datasets related to COVID-19, processes the data to calculate confirmed cases, deaths, recoveries, and their respective rates, and then applies different regression techniques to forecast future cases. The script includes data visualization and evaluation metrics such as Mean Absolute Error (MAE) and Mean Squared Error (MSE) for model performance assessment.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views5 pages

Python Code

The document outlines a Python script for predicting COVID-19 cases using Support Vector Machine (SVM), Linear Regression, and Bayesian Ridge models. It imports various datasets related to COVID-19, processes the data to calculate confirmed cases, deaths, recoveries, and their respective rates, and then applies different regression techniques to forecast future cases. The script includes data visualization and evaluation metrics such as Mean Absolute Error (MAE) and Mean Squared Error (MSE) for model performance assessment.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

COVID19 Prediction using SVM, Linear Regression and Bayesian Ridge :

#Importing the libraries


import numpy as np
import [Link] as plt
import [Link] as mcolors
import pandas as pd
import random
import math
import time
from sklearn.linear_model import LinearRegression, BayesianRidge
from sklearn.model_selection import RandomizedSearchCV, train_test_split
from [Link] import PolynomialFeatures
from [Link] import SVR
from [Link] import mean_squared_error, mean_absolute_error
import datetime
import operator
[Link]('fivethirtyeight')
%matplotlib inline
import warnings
[Link]("ignore")

#Imported data from Github repositories


confirmed_df = pd.read_csv('[Link]
master/csse_covid_19_data/csse_covid_19_time_series/
time_series_covid19_confirmed_global.csv')
deaths_df = pd.read_csv('[Link]
csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_deaths_global.csv')
recoveries_df = pd.read_csv('[Link]
master/csse_covid_19_data/csse_covid_19_time_series/
time_series_covid19_recovered_global.csv')
latest_data = pd.read_csv('[Link]
master/csse_covid_19_data/csse_covid_19_daily_reports/[Link]')
us_medical_data = pd.read_csv('[Link]
master/csse_covid_19_data/csse_covid_19_daily_reports_us/[Link]')
apple_mobility = pd.read_csv('[Link]
2017HotfixDev10/v3/en-us/[Link]')

latest_data.head()

confirmed_df.head()

us_medical_data.head()

cols = confirmed_df.keys()
#Get all the data for outbreak
confirmed = confirmed_df.loc[:, cols[4]:cols[-1]]
deaths = deaths_df.loc[:, cols[4]:cols[-1]]
recoveries = recoveries_df.loc[:, cols[4]:cols[-1]]

dates = [Link]()
world_cases = []
total_deaths = []
mortality_rate = []
recovery_rate = []
total_recovered = []
total_active = []

for i in dates:
confirmed_sum = confirmed[i].sum()
death_sum = deaths[i].sum()
recovered_sum = recoveries[i].sum()

# confirmed, deaths, recovered, and active


world_cases.append(confirmed_sum)
total_deaths.append(death_sum)
total_recovered.append(recovered_sum)
total_active.append(confirmed_sum-death_sum-recovered_sum)

# calculate rates
mortality_rate.append(death_sum/confirmed_sum)
recovery_rate.append(recovered_sum/confirmed_sum)

#Getting Daily increases and moving averages


def daily_increase(data):
d = []
for i in range(len(data)):
if i == 0:
[Link](data[0])
else:
[Link](data[i]-data[i-1])
return d

def moving_average(data, window_size):


moving_average = []
for i in range(len(data)):
if i + window_size < len(data):
moving_average.append([Link](data[i:i+window_size]))
else:
moving_average.append([Link](data[i:len(data)]))
return moving_average

# window size
window = 7
# confirmed cases
world_daily_increase = daily_increase(world_cases)
world_confirmed_avg= moving_average(world_cases, window)
world_daily_increase_avg = moving_average(world_daily_increase, window)

# deaths
world_daily_death = daily_increase(total_deaths)
world_death_avg = moving_average(total_deaths, window)
world_daily_death_avg = moving_average(world_daily_death, window)

# recoveries
world_daily_recovery = daily_increase(total_recovered)
world_recovery_avg = moving_average(total_recovered, window)
world_daily_recovery_avg = moving_average(world_daily_recovery, window)

# active
world_active_avg = moving_average(total_active, window)

days_since_1_22 = [Link]([i for i in range(len(dates))]).reshape(-1, 1)


world_cases = [Link](world_cases).reshape(-1, 1)
total_deaths = [Link](total_deaths).reshape(-1, 1)
total_recovered = [Link](total_recovered).reshape(-1, 1)

#Future Forecasting
days_in_future = 10
future_forcast = [Link]([i for i in range(len(dates)+days_in_future)]).reshape(-1, 1)
adjusted_dates = future_forcast[:-10]

#Convert Integer into Datetime for better visualization


start = '1/22/2020'
start_date = [Link](start, '%m/%d/%Y')
future_forcast_dates = []
for i in range(len(future_forcast)):
future_forcast_dates.append((start_date + [Link](days=i)).strftime('%m/%d/%Y'))

# slightly modify the data to fit the model better (regression models cannot pick the pattern)
X_train_confirmed, X_test_confirmed, y_train_confirmed, y_test_confirmed =
train_test_split(days_since_1_22[50:], world_cases[50:], test_size=0.05, shuffle=False)

#Model for prediction of confirmed cases. I am using support vector machine, bayesian ridge ,
and linear regression in this example. We will show the results in the later section.
svm_confirmed = SVR(shrinking=True, kernel='poly',gamma=0.01, epsilon=1,degree=3, C=0.1)
svm_confirmed.fit(X_train_confirmed, y_train_confirmed)
svm_pred = svm_confirmed.predict(future_forcast)
# check against testing data
svm_test_pred = svm_confirmed.predict(X_test_confirmed)
[Link](y_test_confirmed)
[Link](svm_test_pred)
[Link](['Test Data', 'SVM Predictions'])
print('MAE:', mean_absolute_error(svm_test_pred, y_test_confirmed))
print('MSE:',mean_squared_error(svm_test_pred, y_test_confirmed))

# transform our data for polynomial regression


poly = PolynomialFeatures(degree=5)
poly_X_train_confirmed = poly.fit_transform(X_train_confirmed)
poly_X_test_confirmed = poly.fit_transform(X_test_confirmed)
poly_future_forcast = poly.fit_transform(future_forcast)

bayesian_poly = PolynomialFeatures(degree=5)
bayesian_poly_X_train_confirmed = bayesian_poly.fit_transform(X_train_confirmed)
bayesian_poly_X_test_confirmed = bayesian_poly.fit_transform(X_test_confirmed)
bayesian_poly_future_forcast = bayesian_poly.fit_transform(future_forcast)

# polynomial regression
linear_model = LinearRegression(normalize=True, fit_intercept=False)
linear_model.fit(poly_X_train_confirmed, y_train_confirmed)
test_linear_pred = linear_model.predict(poly_X_test_confirmed)
linear_pred = linear_model.predict(poly_future_forcast)
print('MAE:', mean_absolute_error(test_linear_pred, y_test_confirmed))
print('MSE:',mean_squared_error(test_linear_pred, y_test_confirmed))

print(linear_model.coef_)

[Link](y_test_confirmed)
[Link](test_linear_pred)
[Link](['Test Data', 'Polynomial Regression Predictions'])

# bayesian ridge polynomial regression


tol = [1e-6, 1e-5, 1e-4, 1e-3, 1e-2]
alpha_1 = [1e-7, 1e-6, 1e-5, 1e-4, 1e-3]
alpha_2 = [1e-7, 1e-6, 1e-5, 1e-4, 1e-3]
lambda_1 = [1e-7, 1e-6, 1e-5, 1e-4, 1e-3]
lambda_2 = [1e-7, 1e-6, 1e-5, 1e-4, 1e-3]
normalize = [True, False]

bayesian_grid = {'tol': tol, 'alpha_1': alpha_1, 'alpha_2' : alpha_2, 'lambda_1': lambda_1,


'lambda_2' : lambda_2,
'normalize' : normalize}

bayesian = BayesianRidge(fit_intercept=False)
bayesian_search = RandomizedSearchCV(bayesian, bayesian_grid,
scoring='neg_mean_squared_error', cv=3, return_train_score=True, n_jobs=-1, n_iter=40,
verbose=1)
bayesian_search.fit(bayesian_poly_X_train_confirmed, y_train_confirmed)

bayesian_search.best_params_

bayesian_confirmed = bayesian_search.best_estimator_
test_bayesian_pred = bayesian_confirmed.predict(bayesian_poly_X_test_confirmed)
bayesian_pred = bayesian_confirmed.predict(bayesian_poly_future_forcast)
print('MAE:', mean_absolute_error(test_bayesian_pred, y_test_confirmed))
print('MSE:',mean_squared_error(test_bayesian_pred, y_test_confirmed))

[Link](y_test_confirmed)
[Link](test_bayesian_pred)
[Link](['Test Data', 'Bayesian Ridge Polynomial Predictions'])

You might also like