57 lines
2.2 KiB
Python
57 lines
2.2 KiB
Python
from sklearn.metrics import explained_variance_score,r2_score
|
|
#from sklearn.metrics import mean_squared_error
|
|
import pandas as pd
|
|
|
|
class Backtesting:
|
|
def __init__(self, original_ytrain, train_predict, original_ytest, test_predict):
|
|
|
|
self.original_ytrain = original_ytrain
|
|
self.train_predict = train_predict
|
|
|
|
self.original_ytest = original_ytest
|
|
self.test_predict = test_predict
|
|
|
|
def run(self):
|
|
'''
|
|
Explained variance regression score:
|
|
The explained variance score explains the dispersion of errors of a given dataset,
|
|
and the formula is written as follows:
|
|
Here, and Var(y) is the variance of prediction errors and actual values respectively.
|
|
Scores close to 1.0 are highly desired, indicating better squares of standard deviations of errors.
|
|
|
|
print('Variance score:')
|
|
print("Train data explained variance regression score:", explained_variance_score(self.original_ytrain, self.train_predict))
|
|
print("Test data explained variance regression score:", explained_variance_score(self.original_ytest, self.test_predict))
|
|
print('=================')
|
|
|
|
|
|
R2 score for regression
|
|
R-squared (R2) is a statistical measure that represents the proportion of the variance
|
|
for a dependent variable that's explained by an independent variable or variables in
|
|
a regression model
|
|
1 = Best
|
|
0 or < 0 = worse
|
|
|
|
print('R2 score:')
|
|
print("Train data R2 score:", r2_score(self.original_ytrain, self.train_predict))
|
|
print("Test data R2 score:", r2_score(self.original_ytest, self.test_predict))
|
|
print('=================')
|
|
|
|
|
|
|
|
print('Mean squared error:')
|
|
print("Train data accuracy regression score:", mean_squared_error(self.original_ytrain, self.train_predict))
|
|
print("Test data accuracy regression score:", mean_squared_error(self.original_ytest, self.test_predict))
|
|
print('=================')
|
|
'''
|
|
res = pd.DataFrame(index=['metrics'])
|
|
res['train_variance_score'] = explained_variance_score(self.original_ytrain, self.train_predict)
|
|
res['test_variance_score'] = explained_variance_score(self.original_ytest, self.test_predict)
|
|
|
|
res['train_r2_score'] = r2_score(self.original_ytrain, self.train_predict)
|
|
res['test_r2_score'] = r2_score(self.original_ytest, self.test_predict)
|
|
|
|
|
|
res=res.reset_index(drop=True)
|
|
|
|
return res |