diff --git a/doc/pub/Regression/html/._Regression-bs000.html b/doc/pub/Regression/html/._Regression-bs000.html
index aebb349e2..38599e970 100644
--- a/doc/pub/Regression/html/._Regression-bs000.html
+++ b/doc/pub/Regression/html/._Regression-bs000.html
@@ -425,7 +425,7 @@ MathJax.Hub.Config({
[2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University
-
Aug 23, 2020
+Sep 7, 2020
diff --git a/doc/pub/Regression/html/._Regression-bs011.html b/doc/pub/Regression/html/._Regression-bs011.html
index 08e710277..d603884e0 100644
--- a/doc/pub/Regression/html/._Regression-bs011.html
+++ b/doc/pub/Regression/html/._Regression-bs011.html
@@ -444,7 +444,7 @@ DATA_ID = "
return os. path. join(DATA_ID, dat_id)
def save_fig (fig_id):
- plt. savefig(image_path(fig_id) + ".png" , format = 'png' )
+ plt. savefig(image_path(fig_id) + ".png" , format= 'png' )
infile = open (data_path("MassEval2016.dat" ),'r' )
@@ -454,7 +454,7 @@ Masses = pd.= ('N' , 'Z' , 'A' , 'Element' , 'Ebinding' ),
widths= (1 ,3 ,5 ,5 ,5 ,1 ,3 ,4 ,1 ,13 ,11 ,11 ,9 ,1 ,2 ,11 ,9 ,1 ,3 ,1 ,12 ,11 ,1 ),
header=39 ,
- index_col= False )
+ index_col= False )
# Extrapolated values are indicated by '#' in place of the decimal place, so
# the Ebinding column won't be numeric. Coerce to float and drop these entries.
diff --git a/doc/pub/Regression/html/._Regression-bs017.html b/doc/pub/Regression/html/._Regression-bs017.html
index 2ead03df8..831acc659 100644
--- a/doc/pub/Regression/html/._Regression-bs017.html
+++ b/doc/pub/Regression/html/._Regression-bs017.html
@@ -417,14 +417,14 @@ write
# matrix inversion to find beta
beta = np. linalg. inv(X. T. dot(X)). dot(X. T). dot(Energies)
# and then make the prediction
-ytilde = X @ beta
+ytilde = X @ beta
Alternatively, you can use the least squares functionality in Numpy as
-
fit = np. linalg. lstsq(X, Energies, rcond = None )[0 ]
+ fit = np. linalg. lstsq(X, Energies, rcond = None )[0 ]
ytildenp = np. dot(fit,X. T)
@@ -436,7 +436,7 @@ And finally we plot our fit with and compare with data
# Generate a plot comparing the experimental with the fitted values values.
fig, ax = plt. subplots()
ax. set_xlabel(r'$A = N + Z$' )
-ax. set_ylabel(r'$E_\mathrm {bind} \,/\mathrm {MeV} $' )
+ax. set_ylabel(r'$E_\mathrm{bind}\,/\mathrm{MeV}$' )
ax. plot(Masses['A' ], Masses['Ebinding' ], alpha=0.7 , lw=2 ,
label= 'Ame2016' )
ax. plot(Masses['A' ], Masses['Eapprox' ], alpha=0.7 , lw=2 , c= 'm' ,
diff --git a/doc/pub/Regression/html/._Regression-bs018.html b/doc/pub/Regression/html/._Regression-bs018.html
index 747f32972..a7b97d613 100644
--- a/doc/pub/Regression/html/._Regression-bs018.html
+++ b/doc/pub/Regression/html/._Regression-bs018.html
@@ -422,7 +422,7 @@ and we would be using it as
-
print (R2(Energies,ytilde))
+print (R2(Energies,ytilde))
We can easily add our MSE score as
@@ -433,7 +433,7 @@ We can easily add our MSE score as
n = np. size(y_model)
return np. sum((y_data- y_model)**2 )/ n
-print (MSE(Energies,ytilde))
+print (MSE(Energies,ytilde))
and finally the relative error as
@@ -442,7 +442,7 @@ and finally the relative error as
def RelativeError (y_data,y_model):
return abs ((y_data- y_model)/ y_data)
-print (RelativeError(Energies, ytilde))
+print (RelativeError(Energies, ytilde))
diff --git a/doc/pub/Regression/html/._Regression-bs026.html b/doc/pub/Regression/html/._Regression-bs026.html
index 0a61ca46a..151f4a402 100644
--- a/doc/pub/Regression/html/._Regression-bs026.html
+++ b/doc/pub/Regression/html/._Regression-bs026.html
@@ -441,7 +441,7 @@ DATA_ID = "
return os. path. join(DATA_ID, dat_id)
def save_fig (fig_id):
- plt. savefig(image_path(fig_id) + ".png" , format = 'png' )
+ plt. savefig(image_path(fig_id) + ".png" , format= 'png' )
infile = open (data_path("EoS.csv" ),'r' )
@@ -464,12 +464,12 @@ clf = skl.= clf. predict(X)
EoS['Eols' ] = ytilde
# The mean squared error
-print ("Mean squared error: %.2f " % mean_squared_error(Energies, ytilde))
+print ("Mean squared error: %.2f " % mean_squared_error(Energies, ytilde))
# Explained variance score: 1 is perfect prediction
-print ('Variance score: %.2f ' % r2_score(Energies, ytilde))
+print ('Variance score: %.2f ' % r2_score(Energies, ytilde))
# Mean absolute error
-print ('Mean absolute error: %.2f ' % mean_absolute_error(Energies, ytilde))
-print (clf. coef_, clf. intercept_)
+print ('Mean absolute error: %.2f ' % mean_absolute_error(Energies, ytilde))
+print (clf. coef_, clf. intercept_)
# The Ridge regression with a hyperparameter lambda = 0.1
_lambda = 0.1
@@ -477,15 +477,15 @@ clf_ridge = skl
yridge = clf_ridge. predict(X)
EoS['Eridge' ] = yridge
# The mean squared error
-print ("Mean squared error: %.2f " % mean_squared_error(Energies, yridge))
+print ("Mean squared error: %.2f " % mean_squared_error(Energies, yridge))
# Explained variance score: 1 is perfect prediction
-print ('Variance score: %.2f ' % r2_score(Energies, yridge))
+print ('Variance score: %.2f ' % r2_score(Energies, yridge))
# Mean absolute error
-print ('Mean absolute error: %.2f ' % mean_absolute_error(Energies, yridge))
-print (clf_ridge. coef_, clf_ridge. intercept_)
+print ('Mean absolute error: %.2f ' % mean_absolute_error(Energies, yridge))
+print (clf_ridge. coef_, clf_ridge. intercept_)
fig, ax = plt. subplots()
-ax. set_xlabel(r'$\rho[\mathrm {fm} ^{-3}]$' )
+ax. set_xlabel(r'$\rho[\mathrm{fm}^{-3}]$' )
ax. set_ylabel(r'Energy per particle' )
ax. plot(EoS['Density' ], EoS['Energy' ], alpha=0.7 , lw=2 ,
label= 'Theoretical data' )
diff --git a/doc/pub/Regression/html/._Regression-bs027.html b/doc/pub/Regression/html/._Regression-bs027.html
index 5042b0d49..a04765bab 100644
--- a/doc/pub/Regression/html/._Regression-bs027.html
+++ b/doc/pub/Regression/html/._Regression-bs027.html
@@ -449,7 +449,7 @@ DATA_ID = "
return os. path. join(DATA_ID, dat_id)
def save_fig (fig_id):
- plt. savefig(image_path(fig_id) + ".png" , format = 'png' )
+ plt. savefig(image_path(fig_id) + ".png" , format= 'png' )
def R2 (y_data, y_model):
return 1 - np. sum((y_data - y_model) ** 2 ) / np. sum((y_data - np. mean(y_data)) ** 2 )
@@ -477,16 +477,16 @@ X_train, X_test, y_train, y_test = train_tes
# matrix inversion to find beta
beta = np. linalg. inv(X_train. T. dot(X_train)). dot(X_train. T). dot(y_train)
# and then make the prediction
-ytilde = X_train @ beta
-print ("Training R2" )
-print (R2(y_train,ytilde))
-print ("Training MSE" )
-print (MSE(y_train,ytilde))
-ypredict = X_test @ beta
-print ("Test R2" )
-print (R2(y_test,ypredict))
-print ("Test MSE" )
-print (MSE(y_test,ypredict))
+ytilde = X_train @ beta
+print ("Training R2" )
+print (R2(y_train,ytilde))
+print ("Training MSE" )
+print (MSE(y_train,ytilde))
+ypredict = X_test @ beta
+print ("Test R2" )
+print (R2(y_test,ypredict))
+print ("Test MSE" )
+print (MSE(y_test,ypredict))
diff --git a/doc/pub/Regression/html/._Regression-bs029.html b/doc/pub/Regression/html/._Regression-bs029.html
index 32033a071..4feec208c 100644
--- a/doc/pub/Regression/html/._Regression-bs029.html
+++ b/doc/pub/Regression/html/._Regression-bs029.html
@@ -469,7 +469,7 @@ It is now useful to look at the correlation matrix
correlation_matrix = boston. corr(). round(2 )
# use the heatmap function from seaborn to plot the correlation matrix
# annot = True to print the values inside the square
-sns. heatmap(data= correlation_matrix, annot= True )
+sns. heatmap(data= correlation_matrix, annot= True )
From the above coorelation plot we can see that MEDV is strongly correlated to LSTAT and RM . We see also that RAD and TAX are stronly correlated, but we don't include this in our features together to avoid multi-colinearity
@@ -510,10 +510,10 @@ We split the data into training and test sets
# splits the training and test data set in 80% : 20%
# assign random_state to any value.This ensures consistency.
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.2 , random_state=5 )
-print (X_train. shape)
-print (X_test. shape)
-print (Y_train. shape)
-print (Y_test. shape)
+print (X_train. shape)
+print (X_test. shape)
+print (Y_train. shape)
+print (Y_test. shape)
Then we use the linear regression functionality from Scikit-Learn
@@ -532,11 +532,11 @@ y_train_predict = lin_model= (np. sqrt(mean_squared_error(Y_train, y_train_predict)))
r2 = r2_score(Y_train, y_train_predict)
-print ("The model performance for training set" )
-print ("--------------------------------------" )
-print ('RMSE is {} ' . format(rmse))
-print ('R2 score is {} ' . format(r2))
-print (" \n " )
+print ("The model performance for training set" )
+print ("--------------------------------------" )
+print ('RMSE is {}' . format(rmse))
+print ('R2 score is {}' . format(r2))
+print (" \n " )
# model evaluation for testing set
@@ -547,10 +547,10 @@ rmse = (np.# r-squared score of the model
r2 = r2_score(Y_test, y_test_predict)
-print ("The model performance for testing set" )
-print ("--------------------------------------" )
-print ('RMSE is {} ' . format(rmse))
-print ('R2 score is {} ' . format(r2))
+print ("The model performance for testing set" )
+print ("--------------------------------------" )
+print ('RMSE is {}' . format(rmse))
+print ('R2 score is {}' . format(r2))
diff --git a/doc/pub/Regression/html/._Regression-bs042.html b/doc/pub/Regression/html/._Regression-bs042.html
index 5cfe07209..f04e76545 100644
--- a/doc/pub/Regression/html/._Regression-bs042.html
+++ b/doc/pub/Regression/html/._Regression-bs042.html
@@ -423,9 +423,9 @@ MathJax.Hub.Config({
# print( (np.transpose(U) @ U - U @np.transpose(U)))
# print('test VT')
# print( (np.transpose(VT) @ VT - VT @np.transpose(VT)))
- print (U)
- print (s)
- print (VT)
+ print (U)
+ print (s)
+ print (VT)
D = np. zeros((len (U),len (VT)))
for i in range (0 ,len (VT)):
@@ -435,14 +435,14 @@ MathJax.Hub.Config({
X = np. array([ [1.0 , -1.0 , 2.0 ], [1.0 , 0.0 , 1.0 ], [1.0 , 2.0 , -1.0 ], [1.0 , 1.0 , 0.0 ] ])
-print (X)
-A = np. transpose(X) @ X
-print (A)
+print (X)
+A = np. transpose(X) @ X
+print (A)
# Brute force inversion of super-collinear matrix
#B = np.linalg.inv(A)
#print(B)
C = SVDinv(A)
-print (C)
+print (C)
The matrix \( \boldsymbol{X} \) has columns that are linearly dependent. The first
diff --git a/doc/pub/Regression/html/._Regression-bs057.html b/doc/pub/Regression/html/._Regression-bs057.html
index 88933f9e3..d4c28da77 100644
--- a/doc/pub/Regression/html/._Regression-bs057.html
+++ b/doc/pub/Regression/html/._Regression-bs057.html
@@ -416,16 +416,16 @@ MathJax.Hub.Config({
n = 100
x = np. random. normal(size= n)
-print (np. mean(x))
+print (np. mean(x))
y = 4+3* x+ np. random. normal(size= n)
-print (np. mean(y))
+print (np. mean(y))
z = x**3+ np. random. normal(size= n)
-print (np. mean(z))
+print (np. mean(z))
W = np. vstack((x, y, z))
Sigma = np. cov(W)
-print (Sigma)
+print (Sigma)
Eigvals, Eigvecs = np. linalg. eig(Sigma)
-print (Eigvals)
+print (Eigvals)
@@ -434,9 +434,9 @@ Eigvals, Eigvecs = npimport matplotlib.pyplot as plt
from scipy import sparse
eye = np. eye(4 )
-print (eye)
+print (eye)
sparse_mtx = sparse. csr_matrix(eye)
-print (sparse_mtx)
+print (sparse_mtx)
x = np. linspace(-10 ,10 ,100 )
y = np. sin(x)
plt. plot(x,y,marker= 'x' )
diff --git a/doc/pub/Regression/html/._Regression-bs083.html b/doc/pub/Regression/html/._Regression-bs083.html
index ca16866fc..7c36714c2 100644
--- a/doc/pub/Regression/html/._Regression-bs083.html
+++ b/doc/pub/Regression/html/._Regression-bs083.html
@@ -421,9 +421,9 @@ MathJax.Hub.Config({
t[i] = stat(delete(data,i) )
# analysis
- print ("Runtime: %g sec" % (time()- t0)); print ("Jackknife Statistics :" )
- print ("original bias std. error" )
- print (" %8g %14g %15g " % (stat(data),(n-1 )* mean(t)/ n, (n* var(t))**.5 ))
+ print ("Runtime: %g sec" % (time()- t0)); print ("Jackknife Statistics :" )
+ print ("original bias std. error" )
+ print (" %8g %14g %15g " % (stat(data),(n-1 )* mean(t)/ n, (n* var(t))**.5 ))
return t
diff --git a/doc/pub/Regression/html/._Regression-bs089.html b/doc/pub/Regression/html/._Regression-bs089.html
index 1c8409656..6b7880006 100644
--- a/doc/pub/Regression/html/._Regression-bs089.html
+++ b/doc/pub/Regression/html/._Regression-bs089.html
@@ -443,9 +443,9 @@ theorem.
t[i] = statistic(data[randint(0 ,n,n)])
# analysis
- print ("Runtime: %g sec" % (time()- t0)); print ("Bootstrap Statistics :" )
- print ("original bias std. error" )
- print (" %8g %8g %14g %15g " % (statistic(data), std(data),mean(t),std(t)))
+ print ("Runtime: %g sec" % (time()- t0)); print ("Bootstrap Statistics :" )
+ print ("original bias std. error" )
+ print (" %8g %8g %14g %15g " % (statistic(data), std(data),mean(t),std(t)))
return t
@@ -463,7 +463,7 @@ lt = plt. .
xlabel('Smarts' )
plt. ylabel('Probability' )
plt. axis([99.5 , 100.6 , 0 , 3.0 ])
-plt. grid(True )
+plt. grid(True )
plt. show()
diff --git a/doc/pub/Regression/html/._Regression-bs095.html b/doc/pub/Regression/html/._Regression-bs095.html
index 2b955367b..4caa22b32 100644
--- a/doc/pub/Regression/html/._Regression-bs095.html
+++ b/doc/pub/Regression/html/._Regression-bs095.html
@@ -434,7 +434,7 @@ x_train, x_test, y_train, y_test = train_tes
# Combine x transformation and model into one operation.
# Not neccesary, but convenient.
-model = make_pipeline(PolynomialFeatures(degree= degree), LinearRegression(fit_intercept= False ))
+model = make_pipeline(PolynomialFeatures(degree= degree), LinearRegression(fit_intercept= False ))
# The following (m x n_bootstraps) matrix holds the column vectors y_pred
# for each bootstrap iteration.
@@ -451,13 +451,13 @@ y_pred = np.# calculated per data point in the test set.
# Note 2: The use of keepdims=True is important in the calculation of bias as this
# maintains the column vector form. Dropping this yields very unexpected results.
-error = np. mean( np. mean((y_test - y_pred)**2 , axis=1 , keepdims= True ) )
-bias = np. mean( (y_test - np. mean(y_pred, axis=1 , keepdims= True ))**2 )
-variance = np. mean( np. var(y_pred, axis=1 , keepdims= True ) )
-print ('Error:' , error)
-print ('Bias^2:' , bias)
-print ('Var:' , variance)
-print (' {} >= {} + {} = {} ' . format(error, bias, variance, bias+ variance))
+error = np. mean( np. mean((y_test - y_pred)**2 , axis=1 , keepdims= True ) )
+bias = np. mean( (y_test - np. mean(y_pred, axis=1 , keepdims= True ))**2 )
+variance = np. mean( np. var(y_pred, axis=1 , keepdims= True ) )
+print ('Error:' , error)
+print ('Bias^2:' , bias)
+print ('Var:' , variance)
+print ('{} >= {} + {} = {}' . format(error, bias, variance, bias+ variance))
plt. plot(x[::5 , :], y[::5 , :], label= 'f(x)' )
plt. scatter(x_test, y_test, label= 'Data points' )
diff --git a/doc/pub/Regression/html/._Regression-bs096.html b/doc/pub/Regression/html/._Regression-bs096.html
index 33abbc1ea..28f71446a 100644
--- a/doc/pub/Regression/html/._Regression-bs096.html
+++ b/doc/pub/Regression/html/._Regression-bs096.html
@@ -435,21 +435,21 @@ polydegree = np
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2 )
for degree in range (maxdegree):
- model = make_pipeline(PolynomialFeatures(degree= degree), LinearRegression(fit_intercept= False ))
+ model = make_pipeline(PolynomialFeatures(degree= degree), LinearRegression(fit_intercept= False ))
y_pred = np. empty((y_test. shape[0 ], n_boostraps))
for i in range (n_boostraps):
x_, y_ = resample(x_train, y_train)
y_pred[:, i] = model. fit(x_, y_). predict(x_test). ravel()
polydegree[degree] = degree
- error[degree] = np. mean( np. mean((y_test - y_pred)**2 , axis=1 , keepdims= True ) )
- bias[degree] = np. mean( (y_test - np. mean(y_pred, axis=1 , keepdims= True ))**2 )
- variance[degree] = np. mean( np. var(y_pred, axis=1 , keepdims= True ) )
- print ('Polynomial degree:' , degree)
- print ('Error:' , error[degree])
- print ('Bias^2:' , bias[degree])
- print ('Var:' , variance[degree])
- print (' {} >= {} + {} = {} ' . format(error[degree], bias[degree], variance[degree], bias[degree]+ variance[degree]))
+ error[degree] = np. mean( np. mean((y_test - y_pred)**2 , axis=1 , keepdims= True ) )
+ bias[degree] = np. mean( (y_test - np. mean(y_pred, axis=1 , keepdims= True ))**2 )
+ variance[degree] = np. mean( np. var(y_pred, axis=1 , keepdims= True ) )
+ print ('Polynomial degree:' , degree)
+ print ('Error:' , error[degree])
+ print ('Bias^2:' , bias[degree])
+ print ('Var:' , variance[degree])
+ print ('{} >= {} + {} = {}' . format(error[degree], bias[degree], variance[degree], bias[degree]+ variance[degree]))
plt. plot(polydegree, error, label= 'Error' )
plt. plot(polydegree, bias, label= 'bias' )
diff --git a/doc/pub/Regression/html/._Regression-bs098.html b/doc/pub/Regression/html/._Regression-bs098.html
index b5ca48531..b0b972733 100644
--- a/doc/pub/Regression/html/._Regression-bs098.html
+++ b/doc/pub/Regression/html/._Regression-bs098.html
@@ -432,7 +432,7 @@ MathJax.Hub.Config({
training data.
"""
-print (__doc__ )
+print (__doc__ )
import numpy as np
import matplotlib.pyplot as plt
@@ -459,7 +459,7 @@ plt. figure(figsize. setp(ax, xticks= (), yticks= ())
polynomial_features = PolynomialFeatures(degree= degrees[i],
- include_bias= False )
+ include_bias= False )
linear_regression = LinearRegression()
pipeline = Pipeline([("polynomial_features" , polynomial_features),
("linear_regression" , linear_regression)])
@@ -478,7 +478,7 @@ plt. figure(figsize. xlim((0 , 1 ))
plt. ylim((-2 , 2 ))
plt. legend(loc= "best" )
- plt. title("Degree {} \n MSE = {:.2e} (+/- {:.2e} )" . format(
+ plt. title("Degree {} \n MSE = {:.2e}(+/- {:.2e})" . format(
degrees[i], - scores. mean(), scores. std()))
plt. show()
diff --git a/doc/pub/Regression/html/._Regression-bs099.html b/doc/pub/Regression/html/._Regression-bs099.html
index 0e0ce4eaa..64aebc988 100644
--- a/doc/pub/Regression/html/._Regression-bs099.html
+++ b/doc/pub/Regression/html/._Regression-bs099.html
@@ -441,7 +441,7 @@ DATA_ID = "
return os. path. join(DATA_ID, dat_id)
def save_fig (fig_id):
- plt. savefig(image_path(fig_id) + ".png" , format = 'png' )
+ plt. savefig(image_path(fig_id) + ".png" , format= 'png' )
infile = open (data_path("EoS.csv" ),'r' )
@@ -471,7 +471,7 @@ trials = 100= 0.0
for samples in range (trials):
x_train, x_test, y_train, y_test = train_test_split(X, Energies, test_size=0.2 )
- model = LinearRegression(fit_intercept= True ). fit(x_train, y_train)
+ model = LinearRegression(fit_intercept= True ). fit(x_train, y_train)
ypred = model. predict(x_train)
ytilde = model. predict(x_test)
testerror[polydegree] += mean_squared_error(y_test, ytilde)
@@ -479,9 +479,9 @@ trials = 100/= trials
trainingerror[polydegree] /= trials
- print ("Degree of polynomial: %3d " % polynomial[polydegree])
- print ("Mean squared error on training data: %.8f " % trainingerror[polydegree])
- print ("Mean squared error on test data: %.8f " % testerror[polydegree])
+ print ("Degree of polynomial: %3d " % polynomial[polydegree])
+ print ("Mean squared error on training data: %.8f " % trainingerror[polydegree])
+ print ("Mean squared error on test data: %.8f " % testerror[polydegree])
plt. plot(polynomial, np. log10(trainingerror), label= 'Training Error' )
plt. plot(polynomial, np. log10(testerror), label= 'Test Error' )
diff --git a/doc/pub/Regression/html/._Regression-bs100.html b/doc/pub/Regression/html/._Regression-bs100.html
index 4d9d3877c..8910ba75d 100644
--- a/doc/pub/Regression/html/._Regression-bs100.html
+++ b/doc/pub/Regression/html/._Regression-bs100.html
@@ -443,7 +443,7 @@ DATA_ID = "
return os. path. join(DATA_ID, dat_id)
def save_fig (fig_id):
- plt. savefig(image_path(fig_id) + ".png" , format = 'png' )
+ plt. savefig(image_path(fig_id) + ".png" , format= 'png' )
infile = open (data_path("EoS.csv" ),'r' )
diff --git a/doc/pub/Regression/html/._Regression-bs102.html b/doc/pub/Regression/html/._Regression-bs102.html
index 85c8cb11c..1a9a7bdd0 100644
--- a/doc/pub/Regression/html/._Regression-bs102.html
+++ b/doc/pub/Regression/html/._Regression-bs102.html
@@ -439,7 +439,7 @@ with their respective energies.
import scipy.linalg as scl
from sklearn.model_selection import train_test_split
import tqdm
-sns. set(color_codes= True )
+sns. set(color_codes= True )
cmap_args= dict (vmin=-1. , vmax=1. , cmap= 'seismic' )
L = 40
diff --git a/doc/pub/Regression/html/._Regression-bs104.html b/doc/pub/Regression/html/._Regression-bs104.html
index 6c809493d..b5ccabc96 100644
--- a/doc/pub/Regression/html/._Regression-bs104.html
+++ b/doc/pub/Regression/html/._Regression-bs104.html
@@ -448,7 +448,7 @@ X_test_own = np
def ols_inv (x: np. ndarray, y: np. ndarray) -> np. ndarray:
- return scl. inv(x. T @ x) @ (x. T @ y)
+ return scl. inv(x. T @ x) @ (x. T @ y)
beta = ols_inv(X_train_own, y_train)
diff --git a/doc/pub/Regression/html/._Regression-bs105.html b/doc/pub/Regression/html/._Regression-bs105.html
index f40df4994..bcc834276 100644
--- a/doc/pub/Regression/html/._Regression-bs105.html
+++ b/doc/pub/Regression/html/._Regression-bs105.html
@@ -450,7 +450,7 @@ linear system as an equation would reduce this down to
def ols_svd (x: np. ndarray, y: np. ndarray) -> np. ndarray:
u, s, v = scl. svd(x)
- return v. T @ scl. pinv(scl. diagsvd(s, u. shape[0 ], v. shape[0 ])) @ u. T @ y
+ return v. T @ scl. pinv(scl. diagsvd(s, u. shape[0 ], v. shape[0 ])) @ u. T @ y
diff --git a/doc/pub/Regression/html/._Regression-bs106.html b/doc/pub/Regression/html/._Regression-bs106.html
index e7c535630..c393477b2 100644
--- a/doc/pub/Regression/html/._Regression-bs106.html
+++ b/doc/pub/Regression/html/._Regression-bs106.html
@@ -439,7 +439,7 @@ We will look at a system of \( L = 40 \) spins with a coupling constant of \( J
from sklearn.model_selection import train_test_split
import sklearn.linear_model as skl
import tqdm
-sns. set(color_codes= True )
+sns. set(color_codes= True )
cmap_args= dict (vmin=-1. , vmax=1. , cmap= 'seismic' )
L = 40
diff --git a/doc/pub/Regression/html/._Regression-bs110.html b/doc/pub/Regression/html/._Regression-bs110.html
index 135d1f39d..edf67ae2c 100644
--- a/doc/pub/Regression/html/._Regression-bs110.html
+++ b/doc/pub/Regression/html/._Regression-bs110.html
@@ -432,7 +432,7 @@ colors = {
lambdas,
train_errors[key],
colors[key],
- label= "Train {0} " . format(key),
+ label= "Train {0}" . format(key),
linewidth=4.0
)
@@ -441,7 +441,7 @@ colors = {
lambdas,
test_errors[key],
colors[key] + "--" ,
- label= "Test {0} " . format(key),
+ label= "Test {0}" . format(key),
linewidth=4.0
)
plt. legend(loc= "best" , fontsize=18 )
diff --git a/doc/pub/Regression/html/Regression-bs.html b/doc/pub/Regression/html/Regression-bs.html
index aebb349e2..38599e970 100644
--- a/doc/pub/Regression/html/Regression-bs.html
+++ b/doc/pub/Regression/html/Regression-bs.html
@@ -425,7 +425,7 @@ MathJax.Hub.Config({
[2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University
-
Aug 23, 2020
+Sep 7, 2020
diff --git a/doc/pub/Regression/html/Regression-reveal.html b/doc/pub/Regression/html/Regression-reveal.html
index c22a8b69f..1f35937d3 100644
--- a/doc/pub/Regression/html/Regression-reveal.html
+++ b/doc/pub/Regression/html/Regression-reveal.html
@@ -148,7 +148,7 @@ MathJax.Hub.Config({
[2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University
-
Aug 23, 2020
+Sep 7, 2020
@@ -491,7 +491,7 @@ DATA_ID = "DataFiles/"
return os.path.join(DATA_ID, dat_id)
def save_fig (fig_id):
- plt.savefig(image_path(fig_id) + ".png" , format ='png' )
+ plt.savefig(image_path(fig_id) + ".png" , format='png' )
infile = open (data_path("MassEval2016.dat" ),'r' )
@@ -501,7 +501,7 @@ Masses = pd.read_fwf(infile, usecols=(2 ,'N'
, 'Z' , 'A' , 'Element' , 'Ebinding' ),
widths=(1 ,3 ,5 ,5 ,5 ,1 ,3 ,4 ,1 ,13 ,11 ,11 ,9 ,1 ,2 ,11 ,9 ,1 ,3 ,1 ,12 ,11 ,1 ),
header=39 ,
- index_col=False )
+ index_col=False )
# Extrapolated values are indicated by '#' in place of the decimal place, so
# the Ebinding column won't be numeric. Coerce to float and drop these entries.
@@ -782,14 +782,14 @@ write
# matrix inversion to find beta
beta = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(Energies)
# and then make the prediction
-ytilde = X @ beta
+ytilde = X @ beta
Alternatively, you can use the least squares functionality in Numpy as
-
fit = np.linalg.lstsq(X, Energies, rcond =None )[0 ]
+ fit = np.linalg.lstsq(X, Energies, rcond =None )[0 ]
ytildenp = np.dot(fit,X.T)
@@ -830,7 +830,7 @@ and we would be using it as
-
print (R2(Energies,ytilde))
+print (R2(Energies,ytilde))
We can easily add our MSE score as
@@ -841,7 +841,7 @@ We can easily add our MSE score as
n = np.size(y_model)
return np.sum((y_data-y_model)**2 )/n
-print (MSE(Energies,ytilde))
+print (MSE(Energies,ytilde))
and finally the relative error as
@@ -850,7 +850,7 @@ and finally the relative error as
def RelativeError (y_data,y_model):
return abs ((y_data-y_model)/y_data)
-print (RelativeError(Energies, ytilde))
+print (RelativeError(Energies, ytilde))
@@ -1136,7 +1136,7 @@ DATA_ID = "DataFiles/"
return os.path.join(DATA_ID, dat_id)
def save_fig (fig_id):
- plt.savefig(image_path(fig_id) + ".png" , format ='png' )
+ plt.savefig(image_path(fig_id) + ".png" , format='png' )
infile = open (data_path("EoS.csv" ),'r' )
@@ -1159,12 +1159,12 @@ clf = skl.LinearRegression().fit(X, Energies)
ytilde = clf.predict(X)
EoS['Eols' ] = ytilde
# The mean squared error
-print ("Mean squared error: %.2f" % mean_squared_error(Energies, ytilde))
+print ("Mean squared error: %.2f" % mean_squared_error(Energies, ytilde))
# Explained variance score: 1 is perfect prediction
-print ('Variance score: %.2f' % r2_score(Energies, ytilde))
+print ('Variance score: %.2f' % r2_score(Energies, ytilde))
# Mean absolute error
-print ('Mean absolute error: %.2f' % mean_absolute_error(Energies, ytilde))
-print (clf.coef_, clf.intercept_)
+print ('Mean absolute error: %.2f' % mean_absolute_error(Energies, ytilde))
+print (clf.coef_, clf.intercept_)
# The Ridge regression with a hyperparameter lambda = 0.1
_lambda = 0.1
@@ -1172,12 +1172,12 @@ clf_ridge = skl.Ridge(alpha=_lambda).fit(X, Energies)
yridge = clf_ridge.predict(X)
EoS['Eridge' ] = yridge
# The mean squared error
-print ("Mean squared error: %.2f" % mean_squared_error(Energies, yridge))
+print ("Mean squared error: %.2f" % mean_squared_error(Energies, yridge))
# Explained variance score: 1 is perfect prediction
-print ('Variance score: %.2f' % r2_score(Energies, yridge))
+print ('Variance score: %.2f' % r2_score(Energies, yridge))
# Mean absolute error
-print ('Mean absolute error: %.2f' % mean_absolute_error(Energies, yridge))
-print (clf_ridge.coef_, clf_ridge.intercept_)
+print ('Mean absolute error: %.2f' % mean_absolute_error(Energies, yridge))
+print (clf_ridge.coef_, clf_ridge.intercept_)
fig, ax = plt.subplots()
ax.set_xlabel(r'$\rho[\mathrm{fm}^{-3}]$' )
@@ -1247,7 +1247,7 @@ DATA_ID = "DataFiles/"
return os.path.join(DATA_ID, dat_id)
def save_fig (fig_id):
- plt.savefig(image_path(fig_id) + ".png" , format ='png' )
+ plt.savefig(image_path(fig_id) + ".png" , format='png' )
def R2 (y_data, y_model):
return 1 - np.sum((y_data - y_model) ** 2 ) / np.sum((y_data - np.mean(y_data)) ** 2 )
@@ -1275,16 +1275,16 @@ X_train, X_test, y_train, y_test = train_test_split(X, Energies, test_size=# matrix inversion to find beta
beta = np.linalg.inv(X_train.T.dot(X_train)).dot(X_train.T).dot(y_train)
# and then make the prediction
-ytilde = X_train @ beta
-print ("Training R2" )
-print (R2(y_train,ytilde))
-print ("Training MSE" )
-print (MSE(y_train,ytilde))
-ypredict = X_test @ beta
-print ("Test R2" )
-print (R2(y_test,ypredict))
-print ("Test MSE" )
-print (MSE(y_test,ypredict))
+ytilde = X_train @ beta
+print ("Training R2" )
+print (R2(y_train,ytilde))
+print ("Training MSE" )
+print (MSE(y_train,ytilde))
+ypredict = X_test @ beta
+print ("Test R2" )
+print (R2(y_test,ypredict))
+print ("Test MSE" )
+print (MSE(y_test,ypredict))
@@ -1385,7 +1385,7 @@ It is now useful to look at the correlation matrix
correlation_matrix = boston.corr().round(2 )
# use the heatmap function from seaborn to plot the correlation matrix
# annot = True to print the values inside the square
-sns.heatmap(data=correlation_matrix, annot=True )
+sns.heatmap(data=correlation_matrix, annot=True )
From the above coorelation plot we can see that MEDV is strongly correlated to LSTAT and RM . We see also that RAD and TAX are stronly correlated, but we don't include this in our features together to avoid multi-colinearity
@@ -1426,10 +1426,10 @@ We split the data into training and test sets
# splits the training and test data set in 80% : 20%
# assign random_state to any value.This ensures consistency.
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.2 , random_state=5 )
-print (X_train.shape)
-print (X_test.shape)
-print (Y_train.shape)
-print (Y_test.shape)
+print (X_train.shape)
+print (X_test.shape)
+print (Y_train.shape)
+print (Y_test.shape)
Then we use the linear regression functionality from Scikit-Learn
@@ -1448,11 +1448,11 @@ y_train_predict = lin_model.predict(X_train)
rmse = (np.sqrt(mean_squared_error(Y_train, y_train_predict)))
r2 = r2_score(Y_train, y_train_predict)
-print ("The model performance for training set" )
-print ("--------------------------------------" )
-print ('RMSE is {}' .format(rmse))
-print ('R2 score is {}' .format(r2))
-print ("\n" )
+print ("The model performance for training set" )
+print ("--------------------------------------" )
+print ('RMSE is {}' .format(rmse))
+print ('R2 score is {}' .format(r2))
+print ("\n" )
# model evaluation for testing set
@@ -1463,10 +1463,10 @@ rmse = (np.sqrt(mean_squared_error(Y_test, y_test_predict)))
# r-squared score of the model
r2 = r2_score(Y_test, y_test_predict)
-print ("The model performance for testing set" )
-print ("--------------------------------------" )
-print ('RMSE is {}' .format(rmse))
-print ('R2 score is {}' .format(r2))
+print ("The model performance for testing set" )
+print ("--------------------------------------" )
+print ('RMSE is {}' .format(rmse))
+print ('R2 score is {}' .format(r2))
@@ -2039,9 +2039,9 @@ Similarly, Mehta et a
# print( (np.transpose(U) @ U - U @np.transpose(U)))
# print('test VT')
# print( (np.transpose(VT) @ VT - VT @np.transpose(VT)))
- print (U)
- print (s)
- print (VT)
+ print (U)
+ print (s)
+ print (VT)
D = np.zeros((len (U),len (VT)))
for i in range (0 ,len (VT)):
@@ -2051,14 +2051,14 @@ Similarly, Mehta et a
X = np.array([ [1.0 , -1.0 , 2.0 ], [1.0 , 0.0 , 1.0 ], [1.0 , 2.0 , -1.0 ], [1.0 , 1.0 , 0.0 ] ])
-print (X)
-A = np.transpose(X) @ X
-print (A)
+print (X)
+A = np.transpose(X) @ X
+print (A)
# Brute force inversion of super-collinear matrix
#B = np.linalg.inv(A)
#print(B)
C = SVDinv(A)
-print (C)
+print (C)
The matrix \( \boldsymbol{X} \) has columns that are linearly dependent. The first
@@ -2465,16 +2465,16 @@ function.
n = 100
x = np.random.normal(size=n)
-print (np.mean(x))
+print (np.mean(x))
y = 4 +3 *x+np.random.normal(size=n)
-print (np.mean(y))
+print (np.mean(y))
z = x**3 +np.random.normal(size=n)
-print (np.mean(z))
+print (np.mean(z))
W = np.vstack((x, y, z))
Sigma = np.cov(W)
-print (Sigma)
+print (Sigma)
Eigvals, Eigvecs = np.linalg.eig(Sigma)
-print (Eigvals)
+print (Eigvals)
@@ -2483,9 +2483,9 @@ Eigvals, Eigvecs = np.linalg.eig(Sigma)
import matplotlib.pyplot as plt
from scipy import sparse
eye = np.eye(4 )
-print (eye)
+print (eye)
sparse_mtx = sparse.csr_matrix(eye)
-print (sparse_mtx)
+print (sparse_mtx)
x = np.linspace(-10 ,10 ,100 )
y = np.sin(x)
plt.plot(x,y,marker='x' )
@@ -3329,9 +3329,9 @@ number \( i \) is left out. Using this notation, define
t[i] = stat(delete(data,i) )
# analysis
- print ("Runtime: %g sec" % (time()-t0)); print ("Jackknife Statistics :" )
- print ("original bias std. error" )
- print ("%8g %14g %15g" % (stat(data),(n-1 )*mean(t)/n, (n*var(t))**.5 ))
+ print ("Runtime: %g sec" % (time()-t0)); print ("Jackknife Statistics :" )
+ print ("original bias std. error" )
+ print ("%8g %14g %15g" % (stat(data),(n-1 )*mean(t)/n, (n*var(t))**.5 ))
return t
@@ -3496,9 +3496,9 @@ theorem.
t[i] = statistic(data[randint(0 ,n,n)])
# analysis
- print ("Runtime: %g sec" % (time()-t0)); print ("Bootstrap Statistics :" )
- print ("original bias std. error" )
- print ("%8g %8g %14g %15g" % (statistic(data), std(data),mean(t),std(t)))
+ print ("Runtime: %g sec" % (time()-t0)); print ("Bootstrap Statistics :" )
+ print ("original bias std. error" )
+ print ("%8g %8g %14g %15g" % (statistic(data), std(data),mean(t),std(t)))
return t
@@ -3516,7 +3516,7 @@ lt = plt.plot(binsboot, y, 'r--' , li
plt.xlabel('Smarts' )
plt.ylabel('Probability' )
plt.axis([99.5 , 100.6 , 0 , 3.0 ])
-plt.grid(True )
+plt.grid(True )
plt.show()
@@ -3808,7 +3808,7 @@ x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=# Combine x transformation and model into one operation.
# Not neccesary, but convenient.
-model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False ))
+model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False ))
# The following (m x n_bootstraps) matrix holds the column vectors y_pred
# for each bootstrap iteration.
@@ -3825,13 +3825,13 @@ y_pred = np.empty((y_test.shape[0 ], n_boostr
# calculated per data point in the test set.
# Note 2: The use of keepdims=True is important in the calculation of bias as this
# maintains the column vector form. Dropping this yields very unexpected results.
-error = np.mean( np.mean((y_test - y_pred)**2 , axis=1 , keepdims=True ) )
-bias = np.mean( (y_test - np.mean(y_pred, axis=1 , keepdims=True ))**2 )
-variance = np.mean( np.var(y_pred, axis=1 , keepdims=True ) )
-print ('Error:' , error)
-print ('Bias^2:' , bias)
-print ('Var:' , variance)
-print ('{} >= {} + {} = {}' .format(error, bias, variance, bias+variance))
+error = np.mean( np.mean((y_test - y_pred)**2 , axis=1 , keepdims=True ) )
+bias = np.mean( (y_test - np.mean(y_pred, axis=1 , keepdims=True ))**2 )
+variance = np.mean( np.var(y_pred, axis=1 , keepdims=True ) )
+print ('Error:' , error)
+print ('Bias^2:' , bias)
+print ('Var:' , variance)
+print ('{} >= {} + {} = {}' .format(error, bias, variance, bias+variance))
plt.plot(x[::5 , :], y[::5 , :], label='f(x)' )
plt.scatter(x_test, y_test, label='Data points' )
@@ -3872,21 +3872,21 @@ polydegree = np.zeros(maxdegree)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2 )
for degree in range (maxdegree):
- model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False ))
+ model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False ))
y_pred = np.empty((y_test.shape[0 ], n_boostraps))
for i in range (n_boostraps):
x_, y_ = resample(x_train, y_train)
y_pred[:, i] = model.fit(x_, y_).predict(x_test).ravel()
polydegree[degree] = degree
- error[degree] = np.mean( np.mean((y_test - y_pred)**2 , axis=1 , keepdims=True ) )
- bias[degree] = np.mean( (y_test - np.mean(y_pred, axis=1 , keepdims=True ))**2 )
- variance[degree] = np.mean( np.var(y_pred, axis=1 , keepdims=True ) )
- print ('Polynomial degree:' , degree)
- print ('Error:' , error[degree])
- print ('Bias^2:' , bias[degree])
- print ('Var:' , variance[degree])
- print ('{} >= {} + {} = {}' .format(error[degree], bias[degree], variance[degree], bias[degree]+variance[degree]))
+ error[degree] = np.mean( np.mean((y_test - y_pred)**2 , axis=1 , keepdims=True ) )
+ bias[degree] = np.mean( (y_test - np.mean(y_pred, axis=1 , keepdims=True ))**2 )
+ variance[degree] = np.mean( np.var(y_pred, axis=1 , keepdims=True ) )
+ print ('Polynomial degree:' , degree)
+ print ('Error:' , error[degree])
+ print ('Bias^2:' , bias[degree])
+ print ('Var:' , variance[degree])
+ print ('{} >= {} + {} = {}' .format(error[degree], bias[degree], variance[degree], bias[degree]+variance[degree]))
plt.plot(polydegree, error, label='Error' )
plt.plot(polydegree, bias, label='bias' )
@@ -3961,7 +3961,7 @@ You may also find this recent training data.
"""
-print (__doc__ )
+print (__doc__ )
import numpy as np
import matplotlib.pyplot as plt
@@ -3988,7 +3988,7 @@ plt.figure(figsize=(14 , False )
+ include_bias=False )
linear_regression = LinearRegression()
pipeline = Pipeline([("polynomial_features" , polynomial_features),
("linear_regression" , linear_regression)])
@@ -4050,7 +4050,7 @@ DATA_ID = "DataFiles/"
return os.path.join(DATA_ID, dat_id)
def save_fig (fig_id):
- plt.savefig(image_path(fig_id) + ".png" , format ='png' )
+ plt.savefig(image_path(fig_id) + ".png" , format='png' )
infile = open (data_path("EoS.csv" ),'r' )
@@ -4080,7 +4080,7 @@ trials = 100
trainingerror[polydegree] = 0.0
for samples in range (trials):
x_train, x_test, y_train, y_test = train_test_split(X, Energies, test_size=0.2 )
- model = LinearRegression(fit_intercept=True ).fit(x_train, y_train)
+ model = LinearRegression(fit_intercept=True ).fit(x_train, y_train)
ypred = model.predict(x_train)
ytilde = model.predict(x_test)
testerror[polydegree] += mean_squared_error(y_test, ytilde)
@@ -4088,9 +4088,9 @@ trials = 100
testerror[polydegree] /= trials
trainingerror[polydegree] /= trials
- print ("Degree of polynomial: %3d" % polynomial[polydegree])
- print ("Mean squared error on training data: %.8f" % trainingerror[polydegree])
- print ("Mean squared error on test data: %.8f" % testerror[polydegree])
+ print ("Degree of polynomial: %3d" % polynomial[polydegree])
+ print ("Mean squared error on training data: %.8f" % trainingerror[polydegree])
+ print ("Mean squared error on test data: %.8f" % testerror[polydegree])
plt.plot(polynomial, np.log10(trainingerror), label='Training Error' )
plt.plot(polynomial, np.log10(testerror), label='Test Error' )
@@ -4140,7 +4140,7 @@ DATA_ID = "DataFiles/"
return os.path.join(DATA_ID, dat_id)
def save_fig (fig_id):
- plt.savefig(image_path(fig_id) + ".png" , format ='png' )
+ plt.savefig(image_path(fig_id) + ".png" , format='png' )
infile = open (data_path("EoS.csv" ),'r' )
@@ -4259,7 +4259,7 @@ with their respective energies.
import scipy.linalg as scl
from sklearn.model_selection import train_test_split
import tqdm
-sns.set(color_codes=True )
+sns.set(color_codes=True )
cmap_args=dict (vmin=-1. , vmax=1. , cmap='seismic' )
L = 40
@@ -4386,7 +4386,7 @@ X_test_own = np.concatenate(
def ols_inv (x: np.ndarray, y: np.ndarray) -> np.ndarray:
- return scl.inv(x.T @ x) @ (x.T @ y)
+ return scl.inv(x.T @ x) @ (x.T @ y)
beta = ols_inv(X_train_own, y_train)
@@ -4443,7 +4443,7 @@ linear system as an equation would reduce this down to
def ols_svd (x: np.ndarray, y: np.ndarray) -> np.ndarray:
u, s, v = scl.svd(x)
- return v.T @ scl.pinv(scl.diagsvd(s, u.shape[0 ], v.shape[0 ])) @ u.T @ y
+ return v.T @ scl.pinv(scl.diagsvd(s, u.shape[0 ], v.shape[0 ])) @ u.T @ y
@@ -4521,7 +4521,7 @@ We will look at a system of \( L = 40 \) spins with a coupling constant of \( J
from sklearn.model_selection import train_test_split
import sklearn.linear_model as skl
import tqdm
-sns.set(color_codes=True )
+sns.set(color_codes=True )
cmap_args=dict (vmin=-1. , vmax=1. , cmap='seismic' )
L = 40
diff --git a/doc/pub/Regression/html/Regression-solarized.html b/doc/pub/Regression/html/Regression-solarized.html
index ba7c4eff6..677e04649 100644
--- a/doc/pub/Regression/html/Regression-solarized.html
+++ b/doc/pub/Regression/html/Regression-solarized.html
@@ -305,7 +305,7 @@ MathJax.Hub.Config({
[2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University
-
Aug 23, 2020
+Sep 7, 2020
@@ -631,7 +631,7 @@ DATA_ID = "DataFiles/"
return os.path.join(DATA_ID, dat_id)
def save_fig (fig_id):
- plt.savefig(image_path(fig_id) + ".png" , format ='png' )
+ plt.savefig(image_path(fig_id) + ".png" , format='png' )
infile = open (data_path("MassEval2016.dat" ),'r' )
@@ -641,7 +641,7 @@ Masses = pd.read_fwf(infile, usecols=(2 ,'N'
, 'Z' , 'A' , 'Element' , 'Ebinding' ),
widths=(1 ,3 ,5 ,5 ,5 ,1 ,3 ,4 ,1 ,13 ,11 ,11 ,9 ,1 ,2 ,11 ,9 ,1 ,3 ,1 ,12 ,11 ,1 ),
header=39 ,
- index_col=False )
+ index_col=False )
# Extrapolated values are indicated by '#' in place of the decimal place, so
# the Ebinding column won't be numeric. Coerce to float and drop these entries.
@@ -886,14 +886,14 @@ write
# matrix inversion to find beta
beta = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(Energies)
# and then make the prediction
-ytilde = X @ beta
+ytilde = X @ beta
Alternatively, you can use the least squares functionality in Numpy as
-
fit = np.linalg.lstsq(X, Energies, rcond =None )[0 ]
+ fit = np.linalg.lstsq(X, Energies, rcond =None )[0 ]
ytildenp = np.dot(fit,X.T)
@@ -933,7 +933,7 @@ and we would be using it as
-
print (R2(Energies,ytilde))
+print (R2(Energies,ytilde))
We can easily add our MSE score as
@@ -944,7 +944,7 @@ We can easily add our MSE score as
n = np.size(y_model)
return np.sum((y_data-y_model)**2 )/n
-print (MSE(Energies,ytilde))
+print (MSE(Energies,ytilde))
and finally the relative error as
@@ -953,7 +953,7 @@ and finally the relative error as
def RelativeError (y_data,y_model):
return abs ((y_data-y_model)/y_data)
-print (RelativeError(Energies, ytilde))
+print (RelativeError(Energies, ytilde))
@@ -1217,7 +1217,7 @@ DATA_ID = "DataFiles/"
return os.path.join(DATA_ID, dat_id)
def save_fig (fig_id):
- plt.savefig(image_path(fig_id) + ".png" , format ='png' )
+ plt.savefig(image_path(fig_id) + ".png" , format='png' )
infile = open (data_path("EoS.csv" ),'r' )
@@ -1240,12 +1240,12 @@ clf = skl.LinearRegression().fit(X, Energies)
ytilde = clf.predict(X)
EoS['Eols' ] = ytilde
# The mean squared error
-print ("Mean squared error: %.2f" % mean_squared_error(Energies, ytilde))
+print ("Mean squared error: %.2f" % mean_squared_error(Energies, ytilde))
# Explained variance score: 1 is perfect prediction
-print ('Variance score: %.2f' % r2_score(Energies, ytilde))
+print ('Variance score: %.2f' % r2_score(Energies, ytilde))
# Mean absolute error
-print ('Mean absolute error: %.2f' % mean_absolute_error(Energies, ytilde))
-print (clf.coef_, clf.intercept_)
+print ('Mean absolute error: %.2f' % mean_absolute_error(Energies, ytilde))
+print (clf.coef_, clf.intercept_)
# The Ridge regression with a hyperparameter lambda = 0.1
_lambda = 0.1
@@ -1253,12 +1253,12 @@ clf_ridge = skl.Ridge(alpha=_lambda).fit(X, Energies)
yridge = clf_ridge.predict(X)
EoS['Eridge' ] = yridge
# The mean squared error
-print ("Mean squared error: %.2f" % mean_squared_error(Energies, yridge))
+print ("Mean squared error: %.2f" % mean_squared_error(Energies, yridge))
# Explained variance score: 1 is perfect prediction
-print ('Variance score: %.2f' % r2_score(Energies, yridge))
+print ('Variance score: %.2f' % r2_score(Energies, yridge))
# Mean absolute error
-print ('Mean absolute error: %.2f' % mean_absolute_error(Energies, yridge))
-print (clf_ridge.coef_, clf_ridge.intercept_)
+print ('Mean absolute error: %.2f' % mean_absolute_error(Energies, yridge))
+print (clf_ridge.coef_, clf_ridge.intercept_)
fig, ax = plt.subplots()
ax.set_xlabel(r'$\rho[\mathrm{fm}^{-3}]$' )
@@ -1328,7 +1328,7 @@ DATA_ID = "DataFiles/"
return os.path.join(DATA_ID, dat_id)
def save_fig (fig_id):
- plt.savefig(image_path(fig_id) + ".png" , format ='png' )
+ plt.savefig(image_path(fig_id) + ".png" , format='png' )
def R2 (y_data, y_model):
return 1 - np.sum((y_data - y_model) ** 2 ) / np.sum((y_data - np.mean(y_data)) ** 2 )
@@ -1356,16 +1356,16 @@ X_train, X_test, y_train, y_test = train_test_split(X, Energies, test_size=# matrix inversion to find beta
beta = np.linalg.inv(X_train.T.dot(X_train)).dot(X_train.T).dot(y_train)
# and then make the prediction
-ytilde = X_train @ beta
-print ("Training R2" )
-print (R2(y_train,ytilde))
-print ("Training MSE" )
-print (MSE(y_train,ytilde))
-ypredict = X_test @ beta
-print ("Test R2" )
-print (R2(y_test,ypredict))
-print ("Test MSE" )
-print (MSE(y_test,ypredict))
+ytilde = X_train @ beta
+print ("Training R2" )
+print (R2(y_train,ytilde))
+print ("Training MSE" )
+print (MSE(y_train,ytilde))
+ypredict = X_test @ beta
+print ("Test R2" )
+print (R2(y_test,ypredict))
+print ("Test MSE" )
+print (MSE(y_test,ypredict))
@@ -1464,7 +1464,7 @@ It is now useful to look at the correlation matrix
correlation_matrix = boston.corr().round(2 )
# use the heatmap function from seaborn to plot the correlation matrix
# annot = True to print the values inside the square
-sns.heatmap(data=correlation_matrix, annot=True )
+sns.heatmap(data=correlation_matrix, annot=True )
From the above coorelation plot we can see that MEDV is strongly correlated to LSTAT and RM . We see also that RAD and TAX are stronly correlated, but we don't include this in our features together to avoid multi-colinearity
@@ -1505,10 +1505,10 @@ We split the data into training and test sets
# splits the training and test data set in 80% : 20%
# assign random_state to any value.This ensures consistency.
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.2 , random_state=5 )
-print (X_train.shape)
-print (X_test.shape)
-print (Y_train.shape)
-print (Y_test.shape)
+print (X_train.shape)
+print (X_test.shape)
+print (Y_train.shape)
+print (Y_test.shape)
Then we use the linear regression functionality from Scikit-Learn
@@ -1527,11 +1527,11 @@ y_train_predict = lin_model.predict(X_train)
rmse = (np.sqrt(mean_squared_error(Y_train, y_train_predict)))
r2 = r2_score(Y_train, y_train_predict)
-print ("The model performance for training set" )
-print ("--------------------------------------" )
-print ('RMSE is {}' .format(rmse))
-print ('R2 score is {}' .format(r2))
-print ("\n" )
+print ("The model performance for training set" )
+print ("--------------------------------------" )
+print ('RMSE is {}' .format(rmse))
+print ('R2 score is {}' .format(r2))
+print ("\n" )
# model evaluation for testing set
@@ -1542,10 +1542,10 @@ rmse = (np.sqrt(mean_squared_error(Y_test, y_test_predict)))
# r-squared score of the model
r2 = r2_score(Y_test, y_test_predict)
-print ("The model performance for testing set" )
-print ("--------------------------------------" )
-print ('RMSE is {}' .format(rmse))
-print ('R2 score is {}' .format(r2))
+print ("The model performance for testing set" )
+print ("--------------------------------------" )
+print ('RMSE is {}' .format(rmse))
+print ('R2 score is {}' .format(r2))
@@ -2052,9 +2052,9 @@ Similarly, Mehta et a
# print( (np.transpose(U) @ U - U @np.transpose(U)))
# print('test VT')
# print( (np.transpose(VT) @ VT - VT @np.transpose(VT)))
- print (U)
- print (s)
- print (VT)
+ print (U)
+ print (s)
+ print (VT)
D = np.zeros((len (U),len (VT)))
for i in range (0 ,len (VT)):
@@ -2064,14 +2064,14 @@ Similarly, Mehta et a
X = np.array([ [1.0 , -1.0 , 2.0 ], [1.0 , 0.0 , 1.0 ], [1.0 , 2.0 , -1.0 ], [1.0 , 1.0 , 0.0 ] ])
-print (X)
-A = np.transpose(X) @ X
-print (A)
+print (X)
+A = np.transpose(X) @ X
+print (A)
# Brute force inversion of super-collinear matrix
#B = np.linalg.inv(A)
#print(B)
C = SVDinv(A)
-print (C)
+print (C)
The matrix \( \boldsymbol{X} \) has columns that are linearly dependent. The first
@@ -2464,16 +2464,16 @@ function.
n = 100
x = np.random.normal(size=n)
-print (np.mean(x))
+print (np.mean(x))
y = 4 +3 *x+np.random.normal(size=n)
-print (np.mean(y))
+print (np.mean(y))
z = x**3 +np.random.normal(size=n)
-print (np.mean(z))
+print (np.mean(z))
W = np.vstack((x, y, z))
Sigma = np.cov(W)
-print (Sigma)
+print (Sigma)
Eigvals, Eigvecs = np.linalg.eig(Sigma)
-print (Eigvals)
+print (Eigvals)
@@ -2482,9 +2482,9 @@ Eigvals, Eigvecs = np.linalg.eig(Sigma)
import matplotlib.pyplot as plt
from scipy import sparse
eye = np.eye(4 )
-print (eye)
+print (eye)
sparse_mtx = sparse.csr_matrix(eye)
-print (sparse_mtx)
+print (sparse_mtx)
x = np.linspace(-10 ,10 ,100 )
y = np.sin(x)
plt.plot(x,y,marker='x' )
@@ -3262,9 +3262,9 @@ number \( i \) is left out. Using this notation, define
t[i] = stat(delete(data,i) )
# analysis
- print ("Runtime: %g sec" % (time()-t0)); print ("Jackknife Statistics :" )
- print ("original bias std. error" )
- print ("%8g %14g %15g" % (stat(data),(n-1 )*mean(t)/n, (n*var(t))**.5 ))
+ print ("Runtime: %g sec" % (time()-t0)); print ("Jackknife Statistics :" )
+ print ("original bias std. error" )
+ print ("%8g %14g %15g" % (stat(data),(n-1 )*mean(t)/n, (n*var(t))**.5 ))
return t
@@ -3425,9 +3425,9 @@ theorem.
t[i] = statistic(data[randint(0 ,n,n)])
# analysis
- print ("Runtime: %g sec" % (time()-t0)); print ("Bootstrap Statistics :" )
- print ("original bias std. error" )
- print ("%8g %8g %14g %15g" % (statistic(data), std(data),mean(t),std(t)))
+ print ("Runtime: %g sec" % (time()-t0)); print ("Bootstrap Statistics :" )
+ print ("original bias std. error" )
+ print ("%8g %8g %14g %15g" % (statistic(data), std(data),mean(t),std(t)))
return t
@@ -3445,7 +3445,7 @@ lt = plt.plot(binsboot, y, 'r--' , li
plt.xlabel('Smarts' )
plt.ylabel('Probability' )
plt.axis([99.5 , 100.6 , 0 , 3.0 ])
-plt.grid(True )
+plt.grid(True )
plt.show()
@@ -3721,7 +3721,7 @@ x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=# Combine x transformation and model into one operation.
# Not neccesary, but convenient.
-model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False ))
+model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False ))
# The following (m x n_bootstraps) matrix holds the column vectors y_pred
# for each bootstrap iteration.
@@ -3738,13 +3738,13 @@ y_pred = np.empty((y_test.shape[0 ], n_boostr
# calculated per data point in the test set.
# Note 2: The use of keepdims=True is important in the calculation of bias as this
# maintains the column vector form. Dropping this yields very unexpected results.
-error = np.mean( np.mean((y_test - y_pred)**2 , axis=1 , keepdims=True ) )
-bias = np.mean( (y_test - np.mean(y_pred, axis=1 , keepdims=True ))**2 )
-variance = np.mean( np.var(y_pred, axis=1 , keepdims=True ) )
-print ('Error:' , error)
-print ('Bias^2:' , bias)
-print ('Var:' , variance)
-print ('{} >= {} + {} = {}' .format(error, bias, variance, bias+variance))
+error = np.mean( np.mean((y_test - y_pred)**2 , axis=1 , keepdims=True ) )
+bias = np.mean( (y_test - np.mean(y_pred, axis=1 , keepdims=True ))**2 )
+variance = np.mean( np.var(y_pred, axis=1 , keepdims=True ) )
+print ('Error:' , error)
+print ('Bias^2:' , bias)
+print ('Var:' , variance)
+print ('{} >= {} + {} = {}' .format(error, bias, variance, bias+variance))
plt.plot(x[::5 , :], y[::5 , :], label='f(x)' )
plt.scatter(x_test, y_test, label='Data points' )
@@ -3784,21 +3784,21 @@ polydegree = np.zeros(maxdegree)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2 )
for degree in range (maxdegree):
- model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False ))
+ model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False ))
y_pred = np.empty((y_test.shape[0 ], n_boostraps))
for i in range (n_boostraps):
x_, y_ = resample(x_train, y_train)
y_pred[:, i] = model.fit(x_, y_).predict(x_test).ravel()
polydegree[degree] = degree
- error[degree] = np.mean( np.mean((y_test - y_pred)**2 , axis=1 , keepdims=True ) )
- bias[degree] = np.mean( (y_test - np.mean(y_pred, axis=1 , keepdims=True ))**2 )
- variance[degree] = np.mean( np.var(y_pred, axis=1 , keepdims=True ) )
- print ('Polynomial degree:' , degree)
- print ('Error:' , error[degree])
- print ('Bias^2:' , bias[degree])
- print ('Var:' , variance[degree])
- print ('{} >= {} + {} = {}' .format(error[degree], bias[degree], variance[degree], bias[degree]+variance[degree]))
+ error[degree] = np.mean( np.mean((y_test - y_pred)**2 , axis=1 , keepdims=True ) )
+ bias[degree] = np.mean( (y_test - np.mean(y_pred, axis=1 , keepdims=True ))**2 )
+ variance[degree] = np.mean( np.var(y_pred, axis=1 , keepdims=True ) )
+ print ('Polynomial degree:' , degree)
+ print ('Error:' , error[degree])
+ print ('Bias^2:' , bias[degree])
+ print ('Var:' , variance[degree])
+ print ('{} >= {} + {} = {}' .format(error[degree], bias[degree], variance[degree], bias[degree]+variance[degree]))
plt.plot(polydegree, error, label='Error' )
plt.plot(polydegree, bias, label='bias' )
@@ -3872,7 +3872,7 @@ You may also find this recent training data.
"""
-print (__doc__ )
+print (__doc__ )
import numpy as np
import matplotlib.pyplot as plt
@@ -3899,7 +3899,7 @@ plt.figure(figsize=(14 , False )
+ include_bias=False )
linear_regression = LinearRegression()
pipeline = Pipeline([("polynomial_features" , polynomial_features),
("linear_regression" , linear_regression)])
@@ -3960,7 +3960,7 @@ DATA_ID = "DataFiles/"
return os.path.join(DATA_ID, dat_id)
def save_fig (fig_id):
- plt.savefig(image_path(fig_id) + ".png" , format ='png' )
+ plt.savefig(image_path(fig_id) + ".png" , format='png' )
infile = open (data_path("EoS.csv" ),'r' )
@@ -3990,7 +3990,7 @@ trials = 100
trainingerror[polydegree] = 0.0
for samples in range (trials):
x_train, x_test, y_train, y_test = train_test_split(X, Energies, test_size=0.2 )
- model = LinearRegression(fit_intercept=True ).fit(x_train, y_train)
+ model = LinearRegression(fit_intercept=True ).fit(x_train, y_train)
ypred = model.predict(x_train)
ytilde = model.predict(x_test)
testerror[polydegree] += mean_squared_error(y_test, ytilde)
@@ -3998,9 +3998,9 @@ trials = 100
testerror[polydegree] /= trials
trainingerror[polydegree] /= trials
- print ("Degree of polynomial: %3d" % polynomial[polydegree])
- print ("Mean squared error on training data: %.8f" % trainingerror[polydegree])
- print ("Mean squared error on test data: %.8f" % testerror[polydegree])
+ print ("Degree of polynomial: %3d" % polynomial[polydegree])
+ print ("Mean squared error on training data: %.8f" % trainingerror[polydegree])
+ print ("Mean squared error on test data: %.8f" % testerror[polydegree])
plt.plot(polynomial, np.log10(trainingerror), label='Training Error' )
plt.plot(polynomial, np.log10(testerror), label='Test Error' )
@@ -4049,7 +4049,7 @@ DATA_ID = "DataFiles/"
return os.path.join(DATA_ID, dat_id)
def save_fig (fig_id):
- plt.savefig(image_path(fig_id) + ".png" , format ='png' )
+ plt.savefig(image_path(fig_id) + ".png" , format='png' )
infile = open (data_path("EoS.csv" ),'r' )
@@ -4164,7 +4164,7 @@ with their respective energies.
import scipy.linalg as scl
from sklearn.model_selection import train_test_split
import tqdm
-sns.set(color_codes=True )
+sns.set(color_codes=True )
cmap_args=dict (vmin=-1. , vmax=1. , cmap='seismic' )
L = 40
@@ -4280,7 +4280,7 @@ X_test_own = np.concatenate(
def ols_inv (x: np.ndarray, y: np.ndarray) -> np.ndarray:
- return scl.inv(x.T @ x) @ (x.T @ y)
+ return scl.inv(x.T @ x) @ (x.T @ y)
beta = ols_inv(X_train_own, y_train)
@@ -4330,7 +4330,7 @@ linear system as an equation would reduce this down to
def ols_svd (x: np.ndarray, y: np.ndarray) -> np.ndarray:
u, s, v = scl.svd(x)
- return v.T @ scl.pinv(scl.diagsvd(s, u.shape[0 ], v.shape[0 ])) @ u.T @ y
+ return v.T @ scl.pinv(scl.diagsvd(s, u.shape[0 ], v.shape[0 ])) @ u.T @ y
@@ -4406,7 +4406,7 @@ We will look at a system of \( L = 40 \) spins with a coupling constant of \( J
from sklearn.model_selection import train_test_split
import sklearn.linear_model as skl
import tqdm
-sns.set(color_codes=True )
+sns.set(color_codes=True )
cmap_args=dict (vmin=-1. , vmax=1. , cmap='seismic' )
L = 40
diff --git a/doc/pub/Regression/html/Regression.html b/doc/pub/Regression/html/Regression.html
index 3050dfd3b..c79a83e81 100644
--- a/doc/pub/Regression/html/Regression.html
+++ b/doc/pub/Regression/html/Regression.html
@@ -310,7 +310,7 @@ MathJax.Hub.Config({
[2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University
-
Aug 23, 2020
+Sep 7, 2020
@@ -636,7 +636,7 @@ DATA_ID = "
return os. path. join(DATA_ID, dat_id)
def save_fig (fig_id):
- plt. savefig(image_path(fig_id) + ".png" , format = 'png' )
+ plt. savefig(image_path(fig_id) + ".png" , format= 'png' )
infile = open (data_path("MassEval2016.dat" ),'r' )
@@ -646,7 +646,7 @@ Masses = pd.= ('N' , 'Z' , 'A' , 'Element' , 'Ebinding' ),
widths= (1 ,3 ,5 ,5 ,5 ,1 ,3 ,4 ,1 ,13 ,11 ,11 ,9 ,1 ,2 ,11 ,9 ,1 ,3 ,1 ,12 ,11 ,1 ),
header=39 ,
- index_col= False )
+ index_col= False )
# Extrapolated values are indicated by '#' in place of the decimal place, so
# the Ebinding column won't be numeric. Coerce to float and drop these entries.
@@ -891,14 +891,14 @@ write
# matrix inversion to find beta
beta = np. linalg. inv(X. T. dot(X)). dot(X. T). dot(Energies)
# and then make the prediction
-ytilde = X @ beta
+ytilde = X @ beta
Alternatively, you can use the least squares functionality in Numpy as
-
fit = np. linalg. lstsq(X, Energies, rcond = None )[0 ]
+ fit = np. linalg. lstsq(X, Energies, rcond = None )[0 ]
ytildenp = np. dot(fit,X. T)
@@ -910,7 +910,7 @@ And finally we plot our fit with and compare with data
# Generate a plot comparing the experimental with the fitted values values.
fig, ax = plt. subplots()
ax. set_xlabel(r'$A = N + Z$' )
-ax. set_ylabel(r'$E_\mathrm {bind} \,/\mathrm {MeV} $' )
+ax. set_ylabel(r'$E_\mathrm{bind}\,/\mathrm{MeV}$' )
ax. plot(Masses['A' ], Masses['Ebinding' ], alpha=0.7 , lw=2 ,
label= 'Ame2016' )
ax. plot(Masses['A' ], Masses['Eapprox' ], alpha=0.7 , lw=2 , c= 'm' ,
@@ -938,7 +938,7 @@ and we would be using it as
-
print (R2(Energies,ytilde))
+print (R2(Energies,ytilde))
We can easily add our MSE score as
@@ -949,7 +949,7 @@ We can easily add our MSE score as
n = np. size(y_model)
return np. sum((y_data- y_model)**2 )/ n
-print (MSE(Energies,ytilde))
+print (MSE(Energies,ytilde))
and finally the relative error as
@@ -958,7 +958,7 @@ and finally the relative error as
def RelativeError (y_data,y_model):
return abs ((y_data- y_model)/ y_data)
-print (RelativeError(Energies, ytilde))
+print (RelativeError(Energies, ytilde))
@@ -1222,7 +1222,7 @@ DATA_ID = "
return os. path. join(DATA_ID, dat_id)
def save_fig (fig_id):
- plt. savefig(image_path(fig_id) + ".png" , format = 'png' )
+ plt. savefig(image_path(fig_id) + ".png" , format= 'png' )
infile = open (data_path("EoS.csv" ),'r' )
@@ -1245,12 +1245,12 @@ clf = skl.= clf. predict(X)
EoS['Eols' ] = ytilde
# The mean squared error
-print ("Mean squared error: %.2f " % mean_squared_error(Energies, ytilde))
+print ("Mean squared error: %.2f " % mean_squared_error(Energies, ytilde))
# Explained variance score: 1 is perfect prediction
-print ('Variance score: %.2f ' % r2_score(Energies, ytilde))
+print ('Variance score: %.2f ' % r2_score(Energies, ytilde))
# Mean absolute error
-print ('Mean absolute error: %.2f ' % mean_absolute_error(Energies, ytilde))
-print (clf. coef_, clf. intercept_)
+print ('Mean absolute error: %.2f ' % mean_absolute_error(Energies, ytilde))
+print (clf. coef_, clf. intercept_)
# The Ridge regression with a hyperparameter lambda = 0.1
_lambda = 0.1
@@ -1258,15 +1258,15 @@ clf_ridge = skl
yridge = clf_ridge. predict(X)
EoS['Eridge' ] = yridge
# The mean squared error
-print ("Mean squared error: %.2f " % mean_squared_error(Energies, yridge))
+print ("Mean squared error: %.2f " % mean_squared_error(Energies, yridge))
# Explained variance score: 1 is perfect prediction
-print ('Variance score: %.2f ' % r2_score(Energies, yridge))
+print ('Variance score: %.2f ' % r2_score(Energies, yridge))
# Mean absolute error
-print ('Mean absolute error: %.2f ' % mean_absolute_error(Energies, yridge))
-print (clf_ridge. coef_, clf_ridge. intercept_)
+print ('Mean absolute error: %.2f ' % mean_absolute_error(Energies, yridge))
+print (clf_ridge. coef_, clf_ridge. intercept_)
fig, ax = plt. subplots()
-ax. set_xlabel(r'$\rho[\mathrm {fm} ^{-3}]$' )
+ax. set_xlabel(r'$\rho[\mathrm{fm}^{-3}]$' )
ax. set_ylabel(r'Energy per particle' )
ax. plot(EoS['Density' ], EoS['Energy' ], alpha=0.7 , lw=2 ,
label= 'Theoretical data' )
@@ -1333,7 +1333,7 @@ DATA_ID = "
return os. path. join(DATA_ID, dat_id)
def save_fig (fig_id):
- plt. savefig(image_path(fig_id) + ".png" , format = 'png' )
+ plt. savefig(image_path(fig_id) + ".png" , format= 'png' )
def R2 (y_data, y_model):
return 1 - np. sum((y_data - y_model) ** 2 ) / np. sum((y_data - np. mean(y_data)) ** 2 )
@@ -1361,16 +1361,16 @@ X_train, X_test, y_train, y_test = train_tes
# matrix inversion to find beta
beta = np. linalg. inv(X_train. T. dot(X_train)). dot(X_train. T). dot(y_train)
# and then make the prediction
-ytilde = X_train @ beta
-print ("Training R2" )
-print (R2(y_train,ytilde))
-print ("Training MSE" )
-print (MSE(y_train,ytilde))
-ypredict = X_test @ beta
-print ("Test R2" )
-print (R2(y_test,ypredict))
-print ("Test MSE" )
-print (MSE(y_test,ypredict))
+ytilde = X_train @ beta
+print ("Training R2" )
+print (R2(y_train,ytilde))
+print ("Training MSE" )
+print (MSE(y_train,ytilde))
+ypredict = X_test @ beta
+print ("Test R2" )
+print (R2(y_test,ypredict))
+print ("Test MSE" )
+print (MSE(y_test,ypredict))
@@ -1469,7 +1469,7 @@ It is now useful to look at the correlation matrix
correlation_matrix = boston. corr(). round(2 )
# use the heatmap function from seaborn to plot the correlation matrix
# annot = True to print the values inside the square
-sns. heatmap(data= correlation_matrix, annot= True )
+sns. heatmap(data= correlation_matrix, annot= True )
From the above coorelation plot we can see that MEDV is strongly correlated to LSTAT and RM . We see also that RAD and TAX are stronly correlated, but we don't include this in our features together to avoid multi-colinearity
@@ -1510,10 +1510,10 @@ We split the data into training and test sets
# splits the training and test data set in 80% : 20%
# assign random_state to any value.This ensures consistency.
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.2 , random_state=5 )
-print (X_train. shape)
-print (X_test. shape)
-print (Y_train. shape)
-print (Y_test. shape)
+print (X_train. shape)
+print (X_test. shape)
+print (Y_train. shape)
+print (Y_test. shape)
Then we use the linear regression functionality from Scikit-Learn
@@ -1532,11 +1532,11 @@ y_train_predict = lin_model= (np. sqrt(mean_squared_error(Y_train, y_train_predict)))
r2 = r2_score(Y_train, y_train_predict)
-print ("The model performance for training set" )
-print ("--------------------------------------" )
-print ('RMSE is {} ' . format(rmse))
-print ('R2 score is {} ' . format(r2))
-print (" \n " )
+print ("The model performance for training set" )
+print ("--------------------------------------" )
+print ('RMSE is {}' . format(rmse))
+print ('R2 score is {}' . format(r2))
+print (" \n " )
# model evaluation for testing set
@@ -1547,10 +1547,10 @@ rmse = (np.# r-squared score of the model
r2 = r2_score(Y_test, y_test_predict)
-print ("The model performance for testing set" )
-print ("--------------------------------------" )
-print ('RMSE is {} ' . format(rmse))
-print ('R2 score is {} ' . format(r2))
+print ("The model performance for testing set" )
+print ("--------------------------------------" )
+print ('RMSE is {}' . format(rmse))
+print ('R2 score is {}' . format(r2))
@@ -2057,9 +2057,9 @@ Similarly, Mehta et a
# print( (np.transpose(U) @ U - U @np.transpose(U)))
# print('test VT')
# print( (np.transpose(VT) @ VT - VT @np.transpose(VT)))
- print (U)
- print (s)
- print (VT)
+ print (U)
+ print (s)
+ print (VT)
D = np. zeros((len (U),len (VT)))
for i in range (0 ,len (VT)):
@@ -2069,14 +2069,14 @@ Similarly, Mehta et a
X = np. array([ [1.0 , -1.0 , 2.0 ], [1.0 , 0.0 , 1.0 ], [1.0 , 2.0 , -1.0 ], [1.0 , 1.0 , 0.0 ] ])
-print (X)
-A = np. transpose(X) @ X
-print (A)
+print (X)
+A = np. transpose(X) @ X
+print (A)
# Brute force inversion of super-collinear matrix
#B = np.linalg.inv(A)
#print(B)
C = SVDinv(A)
-print (C)
+print (C)
The matrix \( \boldsymbol{X} \) has columns that are linearly dependent. The first
@@ -2469,16 +2469,16 @@ function.
n = 100
x = np. random. normal(size= n)
-print (np. mean(x))
+print (np. mean(x))
y = 4+3* x+ np. random. normal(size= n)
-print (np. mean(y))
+print (np. mean(y))
z = x**3+ np. random. normal(size= n)
-print (np. mean(z))
+print (np. mean(z))
W = np. vstack((x, y, z))
Sigma = np. cov(W)
-print (Sigma)
+print (Sigma)
Eigvals, Eigvecs = np. linalg. eig(Sigma)
-print (Eigvals)
+print (Eigvals)
@@ -2487,9 +2487,9 @@ Eigvals, Eigvecs = npimport matplotlib.pyplot as plt
from scipy import sparse
eye = np. eye(4 )
-print (eye)
+print (eye)
sparse_mtx = sparse. csr_matrix(eye)
-print (sparse_mtx)
+print (sparse_mtx)
x = np. linspace(-10 ,10 ,100 )
y = np. sin(x)
plt. plot(x,y,marker= 'x' )
@@ -3267,9 +3267,9 @@ number \( i \) is left out. Using this notation, define
t[i] = stat(delete(data,i) )
# analysis
- print ("Runtime: %g sec" % (time()- t0)); print ("Jackknife Statistics :" )
- print ("original bias std. error" )
- print (" %8g %14g %15g " % (stat(data),(n-1 )* mean(t)/ n, (n* var(t))**.5 ))
+ print ("Runtime: %g sec" % (time()- t0)); print ("Jackknife Statistics :" )
+ print ("original bias std. error" )
+ print (" %8g %14g %15g " % (stat(data),(n-1 )* mean(t)/ n, (n* var(t))**.5 ))
return t
@@ -3430,9 +3430,9 @@ theorem.
t[i] = statistic(data[randint(0 ,n,n)])
# analysis
- print ("Runtime: %g sec" % (time()- t0)); print ("Bootstrap Statistics :" )
- print ("original bias std. error" )
- print (" %8g %8g %14g %15g " % (statistic(data), std(data),mean(t),std(t)))
+ print ("Runtime: %g sec" % (time()- t0)); print ("Bootstrap Statistics :" )
+ print ("original bias std. error" )
+ print (" %8g %8g %14g %15g " % (statistic(data), std(data),mean(t),std(t)))
return t
@@ -3450,7 +3450,7 @@ lt = plt. .
xlabel('Smarts' )
plt. ylabel('Probability' )
plt. axis([99.5 , 100.6 , 0 , 3.0 ])
-plt. grid(True )
+plt. grid(True )
plt. show()
@@ -3726,7 +3726,7 @@ x_train, x_test, y_train, y_test = train_tes
# Combine x transformation and model into one operation.
# Not neccesary, but convenient.
-model = make_pipeline(PolynomialFeatures(degree= degree), LinearRegression(fit_intercept= False ))
+model = make_pipeline(PolynomialFeatures(degree= degree), LinearRegression(fit_intercept= False ))
# The following (m x n_bootstraps) matrix holds the column vectors y_pred
# for each bootstrap iteration.
@@ -3743,13 +3743,13 @@ y_pred = np.# calculated per data point in the test set.
# Note 2: The use of keepdims=True is important in the calculation of bias as this
# maintains the column vector form. Dropping this yields very unexpected results.
-error = np. mean( np. mean((y_test - y_pred)**2 , axis=1 , keepdims= True ) )
-bias = np. mean( (y_test - np. mean(y_pred, axis=1 , keepdims= True ))**2 )
-variance = np. mean( np. var(y_pred, axis=1 , keepdims= True ) )
-print ('Error:' , error)
-print ('Bias^2:' , bias)
-print ('Var:' , variance)
-print (' {} >= {} + {} = {} ' . format(error, bias, variance, bias+ variance))
+error = np. mean( np. mean((y_test - y_pred)**2 , axis=1 , keepdims= True ) )
+bias = np. mean( (y_test - np. mean(y_pred, axis=1 , keepdims= True ))**2 )
+variance = np. mean( np. var(y_pred, axis=1 , keepdims= True ) )
+print ('Error:' , error)
+print ('Bias^2:' , bias)
+print ('Var:' , variance)
+print ('{} >= {} + {} = {}' . format(error, bias, variance, bias+ variance))
plt. plot(x[::5 , :], y[::5 , :], label= 'f(x)' )
plt. scatter(x_test, y_test, label= 'Data points' )
@@ -3789,21 +3789,21 @@ polydegree = np
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2 )
for degree in range (maxdegree):
- model = make_pipeline(PolynomialFeatures(degree= degree), LinearRegression(fit_intercept= False ))
+ model = make_pipeline(PolynomialFeatures(degree= degree), LinearRegression(fit_intercept= False ))
y_pred = np. empty((y_test. shape[0 ], n_boostraps))
for i in range (n_boostraps):
x_, y_ = resample(x_train, y_train)
y_pred[:, i] = model. fit(x_, y_). predict(x_test). ravel()
polydegree[degree] = degree
- error[degree] = np. mean( np. mean((y_test - y_pred)**2 , axis=1 , keepdims= True ) )
- bias[degree] = np. mean( (y_test - np. mean(y_pred, axis=1 , keepdims= True ))**2 )
- variance[degree] = np. mean( np. var(y_pred, axis=1 , keepdims= True ) )
- print ('Polynomial degree:' , degree)
- print ('Error:' , error[degree])
- print ('Bias^2:' , bias[degree])
- print ('Var:' , variance[degree])
- print (' {} >= {} + {} = {} ' . format(error[degree], bias[degree], variance[degree], bias[degree]+ variance[degree]))
+ error[degree] = np. mean( np. mean((y_test - y_pred)**2 , axis=1 , keepdims= True ) )
+ bias[degree] = np. mean( (y_test - np. mean(y_pred, axis=1 , keepdims= True ))**2 )
+ variance[degree] = np. mean( np. var(y_pred, axis=1 , keepdims= True ) )
+ print ('Polynomial degree:' , degree)
+ print ('Error:' , error[degree])
+ print ('Bias^2:' , bias[degree])
+ print ('Var:' , variance[degree])
+ print ('{} >= {} + {} = {}' . format(error[degree], bias[degree], variance[degree], bias[degree]+ variance[degree]))
plt. plot(polydegree, error, label= 'Error' )
plt. plot(polydegree, bias, label= 'bias' )
@@ -3877,7 +3877,7 @@ You may also find this recent training data.
"""
-print (__doc__ )
+print (__doc__ )
import numpy as np
import matplotlib.pyplot as plt
@@ -3904,7 +3904,7 @@ plt. figure(figsize. setp(ax, xticks= (), yticks= ())
polynomial_features = PolynomialFeatures(degree= degrees[i],
- include_bias= False )
+ include_bias= False )
linear_regression = LinearRegression()
pipeline = Pipeline([("polynomial_features" , polynomial_features),
("linear_regression" , linear_regression)])
@@ -3923,7 +3923,7 @@ plt. figure(figsize. xlim((0 , 1 ))
plt. ylim((-2 , 2 ))
plt. legend(loc= "best" )
- plt. title("Degree {} \n MSE = {:.2e} (+/- {:.2e} )" . format(
+ plt. title("Degree {} \n MSE = {:.2e}(+/- {:.2e})" . format(
degrees[i], - scores. mean(), scores. std()))
plt. show()
@@ -3965,7 +3965,7 @@ DATA_ID = "
return os. path. join(DATA_ID, dat_id)
def save_fig (fig_id):
- plt. savefig(image_path(fig_id) + ".png" , format = 'png' )
+ plt. savefig(image_path(fig_id) + ".png" , format= 'png' )
infile = open (data_path("EoS.csv" ),'r' )
@@ -3995,7 +3995,7 @@ trials = 100= 0.0
for samples in range (trials):
x_train, x_test, y_train, y_test = train_test_split(X, Energies, test_size=0.2 )
- model = LinearRegression(fit_intercept= True ). fit(x_train, y_train)
+ model = LinearRegression(fit_intercept= True ). fit(x_train, y_train)
ypred = model. predict(x_train)
ytilde = model. predict(x_test)
testerror[polydegree] += mean_squared_error(y_test, ytilde)
@@ -4003,9 +4003,9 @@ trials = 100/= trials
trainingerror[polydegree] /= trials
- print ("Degree of polynomial: %3d " % polynomial[polydegree])
- print ("Mean squared error on training data: %.8f " % trainingerror[polydegree])
- print ("Mean squared error on test data: %.8f " % testerror[polydegree])
+ print ("Degree of polynomial: %3d " % polynomial[polydegree])
+ print ("Mean squared error on training data: %.8f " % trainingerror[polydegree])
+ print ("Mean squared error on test data: %.8f " % testerror[polydegree])
plt. plot(polynomial, np. log10(trainingerror), label= 'Training Error' )
plt. plot(polynomial, np. log10(testerror), label= 'Test Error' )
@@ -4054,7 +4054,7 @@ DATA_ID = "
return os. path. join(DATA_ID, dat_id)
def save_fig (fig_id):
- plt. savefig(image_path(fig_id) + ".png" , format = 'png' )
+ plt. savefig(image_path(fig_id) + ".png" , format= 'png' )
infile = open (data_path("EoS.csv" ),'r' )
@@ -4169,7 +4169,7 @@ with their respective energies.
import scipy.linalg as scl
from sklearn.model_selection import train_test_split
import tqdm
-sns. set(color_codes= True )
+sns. set(color_codes= True )
cmap_args= dict (vmin=-1. , vmax=1. , cmap= 'seismic' )
L = 40
@@ -4285,7 +4285,7 @@ X_test_own = np
def ols_inv (x: np. ndarray, y: np. ndarray) -> np. ndarray:
- return scl. inv(x. T @ x) @ (x. T @ y)
+ return scl. inv(x. T @ x) @ (x. T @ y)
beta = ols_inv(X_train_own, y_train)
@@ -4335,7 +4335,7 @@ linear system as an equation would reduce this down to
def ols_svd (x: np. ndarray, y: np. ndarray) -> np. ndarray:
u, s, v = scl. svd(x)
- return v. T @ scl. pinv(scl. diagsvd(s, u. shape[0 ], v. shape[0 ])) @ u. T @ y
+ return v. T @ scl. pinv(scl. diagsvd(s, u. shape[0 ], v. shape[0 ])) @ u. T @ y
@@ -4411,7 +4411,7 @@ We will look at a system of \( L = 40 \) spins with a coupling constant of \( J
from sklearn.model_selection import train_test_split
import sklearn.linear_model as skl
import tqdm
-sns. set(color_codes= True )
+sns. set(color_codes= True )
cmap_args= dict (vmin=-1. , vmax=1. , cmap= 'seismic' )
L = 40
@@ -4665,7 +4665,7 @@ colors = {
lambdas,
train_errors[key],
colors[key],
- label= "Train {0} " . format(key),
+ label= "Train {0}" . format(key),
linewidth=4.0
)
@@ -4674,7 +4674,7 @@ colors = {
lambdas,
test_errors[key],
colors[key] + "--" ,
- label= "Test {0} " . format(key),
+ label= "Test {0}" . format(key),
linewidth=4.0
)
plt. legend(loc= "best" , fontsize=18 )
diff --git a/doc/pub/Regression/ipynb/Regression.ipynb b/doc/pub/Regression/ipynb/Regression.ipynb
index 3b7248be4..452d9d097 100644
--- a/doc/pub/Regression/ipynb/Regression.ipynb
+++ b/doc/pub/Regression/ipynb/Regression.ipynb
@@ -10,9 +10,11 @@
" \n",
"**Morten Hjorth-Jensen**, Department of Physics, University of Oslo and Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University\n",
"\n",
- "Date: **Dec 24, 2019**\n",
+ "Date: **Sep 7, 2020**\n",
+ "\n",
+ "Copyright 1999-2020, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license\n",
+ "\n",
"\n",
- "Copyright 1999-2019, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license\n",
"\n",
"\n",
"\n",
@@ -378,161 +380,11 @@
},
{
"cell_type": "code",
- "execution_count": 25,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "
\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 1 \n",
- " A \n",
- " A^(2/3) \n",
- " A^(-1/3) \n",
- " 1/A \n",
- " \n",
- " \n",
- " A \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 1 \n",
- " 1.0 \n",
- " 1.0 \n",
- " 1.000000 \n",
- " 1.000000 \n",
- " 1.000000 \n",
- " \n",
- " \n",
- " 2 \n",
- " 1.0 \n",
- " 2.0 \n",
- " 1.587401 \n",
- " 0.793701 \n",
- " 0.500000 \n",
- " \n",
- " \n",
- " 3 \n",
- " 1.0 \n",
- " 3.0 \n",
- " 2.080084 \n",
- " 0.693361 \n",
- " 0.333333 \n",
- " \n",
- " \n",
- " 4 \n",
- " 1.0 \n",
- " 4.0 \n",
- " 2.519842 \n",
- " 0.629961 \n",
- " 0.250000 \n",
- " \n",
- " \n",
- " 5 \n",
- " 1.0 \n",
- " 5.0 \n",
- " 2.924018 \n",
- " 0.584804 \n",
- " 0.200000 \n",
- " \n",
- " \n",
- " ... \n",
- " ... \n",
- " ... \n",
- " ... \n",
- " ... \n",
- " ... \n",
- " \n",
- " \n",
- " 264 \n",
- " 1.0 \n",
- " 264.0 \n",
- " 41.153106 \n",
- " 0.155883 \n",
- " 0.003788 \n",
- " \n",
- " \n",
- " 265 \n",
- " 1.0 \n",
- " 265.0 \n",
- " 41.256962 \n",
- " 0.155687 \n",
- " 0.003774 \n",
- " \n",
- " \n",
- " 266 \n",
- " 1.0 \n",
- " 266.0 \n",
- " 41.360688 \n",
- " 0.155491 \n",
- " 0.003759 \n",
- " \n",
- " \n",
- " 269 \n",
- " 1.0 \n",
- " 269.0 \n",
- " 41.671089 \n",
- " 0.154911 \n",
- " 0.003717 \n",
- " \n",
- " \n",
- " 270 \n",
- " 1.0 \n",
- " 270.0 \n",
- " 41.774300 \n",
- " 0.154720 \n",
- " 0.003704 \n",
- " \n",
- " \n",
- "
\n",
- "
267 rows × 5 columns
\n",
- "
"
- ],
- "text/plain": [
- " 1 A A^(2/3) A^(-1/3) 1/A\n",
- "A \n",
- "1 1.0 1.0 1.000000 1.000000 1.000000\n",
- "2 1.0 2.0 1.587401 0.793701 0.500000\n",
- "3 1.0 3.0 2.080084 0.693361 0.333333\n",
- "4 1.0 4.0 2.519842 0.629961 0.250000\n",
- "5 1.0 5.0 2.924018 0.584804 0.200000\n",
- ".. ... ... ... ... ...\n",
- "264 1.0 264.0 41.153106 0.155883 0.003788\n",
- "265 1.0 265.0 41.256962 0.155687 0.003774\n",
- "266 1.0 266.0 41.360688 0.155491 0.003759\n",
- "269 1.0 269.0 41.671089 0.154911 0.003717\n",
- "270 1.0 270.0 41.774300 0.154720 0.003704\n",
- "\n",
- "[267 rows x 5 columns]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
"source": [
"%matplotlib inline\n",
"\n",
@@ -671,7 +523,7 @@
"metadata": {},
"source": [
"$$\n",
- "C(\\boldsymbol{\\beta})=\\frac{1}{n}\\left\\{\\left(\\boldsymbol{y}-\\boldsymbol{X}^T\\boldsymbol{\\beta}\\right)^T\\left(\\boldsymbol{y}-\\boldsymbol{X}^T\\boldsymbol{\\beta}\\right)\\right\\}.\n",
+ "C(\\boldsymbol{\\beta})=\\frac{1}{n}\\left\\{\\left(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\right)^T\\left(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\right)\\right\\}.\n",
"$$"
]
},
@@ -684,7 +536,7 @@
"\n",
"\n",
"It is also common to define\n",
- "the function $Q$ as"
+ "the function $C$ as"
]
},
{
@@ -1035,13 +887,14 @@
},
{
"cell_type": "code",
- "execution_count": 26,
- "metadata": {},
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"# matrix inversion to find beta\n",
- "#beta = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(Energies)\n",
- "beta = np.linalg.inv(X.T @ X) @ (X.T @ Energies)\n",
+ "beta = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(Energies)\n",
"# and then make the prediction\n",
"ytilde = X @ beta"
]
@@ -1056,7 +909,9 @@
{
"cell_type": "code",
"execution_count": 3,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"fit = np.linalg.lstsq(X, Energies, rcond =None)[0]\n",
@@ -1073,21 +928,10 @@
{
"cell_type": "code",
"execution_count": 4,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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J5KBP37iVSodye6JLFo9PT00NDTQ1dWllWwvgrszMDBAT08Pa9eunfLzIjkEHg/8jGr4IgtKLpejra1NYX+RzIy2trYL/qYUyUQMS+OzdDTCF1loFPYzYzr/jtEM/KJG+CIip4pkIoaV9fDTquGLyBl8+9vfxsx48cUXZ+T1vva1r7F582Y2b97Mddddx7PPPjux7Qc/+AGXXnop69ev59577524/+tf/zqXX345sViM7du3n/R6O3fu5K1vfSuXX345V1555Ywd5I5c4Ls7XqnhpzXCF5Ez2LZtG29729t48MEHZ+T11q5dy2OPPQs7MJkAAAu/SURBVMbOnTv57Gc/y9133w1AEAT8zu/8Dg899BC7du1i27Zt7Nq1C4ArrriCb33rW7zjHe846bVKpRIf+9jH+NKXvsQLL7zAo48+ekEzcc4lckNgD5zAHTeoUQ1fZMH6l19+alZe94E7rz3n9pGREX7605/yyCOPcOutt/L5z3+eRx99lM997nMsXbqUHTt2cNttt3HllVdy3333kc1m+c53vsMll1xCf38/n/jEJ9i/fz8Af/VXf8X111/PddddN/H6b3nLW+jp6QHgySefZP369axbtw6A22+/ne9+97ts2rSJyy677Izte/jhh9m8eTNXXXUVAG1tbRf9bzIuekPgAMIQwjiktXiaiJziO9/5DjfddBMbN26ktbWVZ555BoBnn32W++67j+eee46vfOUr7NmzhyeffJK77rqLv/7rvwbgU5/6FPfccw9PPfUU3/zmN7nrrrtOe/0HHniA9773vQD09vayatWqiW2dnZ309vaes3179uzBzLjxxhu5+uqr+bM/+7OZ6noER/glJ3TH45BJ6kxbkYXqfCPx2bJt2zY+/elPA+UR97Zt27jlllu49tprWb58OQCXXHIJ73nPewC48soreeSRRwD44Q9/OFGSARgeHubEiRM0NDQA8Mgjj/DAAw/w+OOPA+US86nON7umVCrx+OOP89RTT1FbW8sNN9zANddcww033HCRPY9i4AeVwI9BRiN8EZlkYGCAH//4xzz//POYGUEQYGbcfPPNpNPpicfFYrGJv2OxGKVSCYAwDPn5z39OTU3Naa+9c+dO7rrrLh566KGJMkxnZycHDhyYeExPTw8rVqw4Zxs7Ozt55zvfSXt7OwA333wzzzzzzIwEfuQSsZgP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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
"source": [
"Masses['Eapprox'] = ytilde\n",
"# Generate a plot comparing the experimental with the fitted values values.\n",
@@ -1109,14 +953,16 @@
"source": [
"## Adding error analysis and training set up\n",
"\n",
- "We can easily test our fit by computing the $R2$ score that we discussed in connection with the functionality of _Scikit_Learn_ in the introductory slides.\n",
- "Since we are not using _Scikit-Learn here we can define our own $R2$ function as"
+ "We can easily test our fit by computing the $R2$ score that we discussed in connection with the functionality of **Scikit-Learn** in the introductory slides.\n",
+ "Since we are not using **Scikit-Learn** here we can define our own $R2$ function as"
]
},
{
"cell_type": "code",
- "execution_count": 27,
- "metadata": {},
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"def R2(y_data, y_model):\n",
@@ -1132,17 +978,11 @@
},
{
"cell_type": "code",
- "execution_count": 28,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "0.9547578478889096\n"
- ]
- }
- ],
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
"source": [
"print(R2(Energies,ytilde))"
]
@@ -1157,16 +997,10 @@
{
"cell_type": "code",
"execution_count": 7,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "0.037875961483052376\n"
- ]
- }
- ],
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
"source": [
"def MSE(y_data,y_model):\n",
" n = np.size(y_model)\n",
@@ -1185,28 +1019,10 @@
{
"cell_type": "code",
"execution_count": 8,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "A \n",
- "1 0 inf\n",
- "2 1 1.123190\n",
- "3 2 0.327631\n",
- "4 6 0.344172\n",
- "5 9 0.044402\n",
- " ... \n",
- "264 3304 0.009911\n",
- "265 3310 0.009154\n",
- "266 3317 0.007824\n",
- "269 3338 0.011347\n",
- "270 3344 0.009790\n",
- "Name: Ebinding, Length: 267, dtype: float64\n"
- ]
- }
- ],
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
"source": [
"def RelativeError(y_data,y_model):\n",
" return abs((y_data-y_model)/y_data)\n",
@@ -1217,25 +1033,6 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "We could also add the so-called Huber norm, which we defined as"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "$$\n",
- "H_{\\delta}(a)={\\begin{cases}{\\frac {1}{2}}{a^{2}}&{\\text{for }}|a|\\leq \\delta ,\\\\\\delta (|a|-{\\frac {1}{2}}\\delta ),&{\\text{otherwise.}}\\end{cases}}},\n",
- "$$"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "with $a=\\boldsymbol{y} - \\boldsymbol{\\tilde{y}}$.\n",
- "\n",
- "\n",
"## The $\\chi^2$ function\n",
"\n",
"Normally, the response (dependent or outcome) variable $y_i$ is the\n",
@@ -1601,35 +1398,10 @@
{
"cell_type": "code",
"execution_count": 9,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Mean squared error: 12.36\n",
- "Variance score: 1.00\n",
- "Mean absolute error: 2.83\n",
- "[ 0. 618.32047562 -861.13519106 1404.91549644] -11.057088709963296\n",
- "Mean squared error: 197.93\n",
- "Variance score: 1.00\n",
- "Mean absolute error: 11.69\n",
- "[ 0. 28.18220995 282.79902342 842.30879705] 12.946893955209475\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
"source": [
"# Common imports\n",
"import os\n",
@@ -1746,24 +1518,11 @@
},
{
"cell_type": "code",
- "execution_count": 29,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Training R2\n",
- "0.9999855660203318\n",
- "Training MSE\n",
- "6.9544863467435345\n",
- "Test R2\n",
- "0.9999823980708721\n",
- "Test MSE\n",
- "6.925606384101718\n"
- ]
- }
- ],
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
"source": [
"import os\n",
"import numpy as np\n",
@@ -1815,7 +1574,7 @@
"X[:,3] = Density**(4.0/3.0)\n",
"X[:,4] = Density**(5.0/3.0)\n",
"# We split the data in test and training data\n",
- "X_train, X_test, y_train, y_test = train_test_split(X, Energies, test_size=0.5)\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, Energies, test_size=0.2)\n",
"# matrix inversion to find beta\n",
"beta = np.linalg.inv(X_train.T.dot(X_train)).dot(X_train.T).dot(y_train)\n",
"# and then make the prediction\n",
@@ -1831,209 +1590,6 @@
"print(MSE(y_test,ypredict))"
]
},
- {
- "cell_type": "code",
- "execution_count": 27,
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/Users/MortenImac/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:72: RuntimeWarning: divide by zero encountered in log10\n",
- "/Users/MortenImac/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:73: RuntimeWarning: divide by zero encountered in log10\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "# Common imports \n",
- "import os\n",
- "import numpy as np\n",
- "import pandas as pd\n",
- "import matplotlib.pyplot as plt\n",
- "from sklearn.linear_model import LinearRegression, Ridge, Lasso\n",
- "from sklearn.model_selection import train_test_split\n",
- "from sklearn.utils import resample\n",
- "from sklearn.metrics import mean_squared_error\n",
- "# Where to save the figures and data files \n",
- "PROJECT_ROOT_DIR = \"Results\"\n",
- "FIGURE_ID = \"Results/FigureFiles\"\n",
- "DATA_ID = \"DataFiles/\"\n",
- "\n",
- "if not os.path.exists(PROJECT_ROOT_DIR):\n",
- " os.mkdir(PROJECT_ROOT_DIR)\n",
- "\n",
- "if not os.path.exists(FIGURE_ID):\n",
- " os.makedirs(FIGURE_ID)\n",
- "\n",
- "if not os.path.exists(DATA_ID):\n",
- " os.makedirs(DATA_ID)\n",
- "\n",
- "def image_path(fig_id):\n",
- " return os.path.join(FIGURE_ID, fig_id)\n",
- "\n",
- "def data_path(dat_id):\n",
- " return os.path.join(DATA_ID, dat_id)\n",
- "\n",
- "def save_fig(fig_id):\n",
- " plt.savefig(image_path(fig_id) + \".png\", format='png')\n",
- "\n",
- "infile = open(data_path(\"EoS.csv\"),'r')\n",
- "\n",
- "# Read the EoS data as csv file and organize the data into two arrays with density and energies \n",
- "EoS = pd.read_csv(infile, names=('Density', 'Energy'))\n",
- "EoS['Energy'] = pd.to_numeric(EoS['Energy'], errors='coerce')\n",
- "EoS = EoS.dropna()\n",
- "Energies = EoS['Energy']\n",
- "Density = EoS['Density']\n",
- "# The design matrix now as function of various polytrops \n",
- "\n",
- "Maxpolydegree = 30\n",
- "X = np.zeros((len(Density),Maxpolydegree))\n",
- "X[:,0] = 1.0\n",
- "testerror = np.zeros(Maxpolydegree)\n",
- "trainingerror = np.zeros(Maxpolydegree)\n",
- "polynomial = np.zeros(Maxpolydegree)\n",
- "trials = 100\n",
- "for polydegree in range(1, Maxpolydegree):\n",
- " polynomial[polydegree] = polydegree\n",
- " for degree in range(polydegree):\n",
- " X[:,degree] = Density**(degree/3.0)\n",
- "\n",
- "# loop over trials in order to estimate the expectation value of the MSE \n",
- " testerror[polydegree] = 0.0\n",
- " trainingerror[polydegree] = 0.0\n",
- " for samples in range(trials):\n",
- " x_train, x_test, y_train, y_test = train_test_split(X, Energies, test_size=0.2)\n",
- " model = LinearRegression(fit_intercept=True).fit(x_train, y_train)\n",
- " ypred = model.predict(x_train)\n",
- " ytilde = model.predict(x_test)\n",
- " testerror[polydegree] += mean_squared_error(y_test, ytilde)\n",
- " trainingerror[polydegree] += mean_squared_error(y_train, ypred)\n",
- "\n",
- " testerror[polydegree] /= trials\n",
- " trainingerror[polydegree] /= trials\n",
- "# print(\"Degree of polynomial: %3d\"% polynomial[polydegree])\n",
- "# print(\"Mean squared error on training data: %.8f\" % trainingerror[polydegree])\n",
- "# print(\"Mean squared error on test data: %.8f\" % testerror[polydegree])\n",
- "\n",
- "plt.plot(polynomial, np.log10(trainingerror), label='Training Error')\n",
- "plt.plot(polynomial, np.log10(testerror), label='Test Error')\n",
- "plt.xlabel('Polynomial degree')\n",
- "plt.ylabel('log10[MSE]')\n",
- "plt.legend()\n",
- "plt.show()\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 30,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "0.3155976363078281 0.23757342963159728\n",
- "0.0787018918847104 0.06930516292030015\n",
- "0.10722101293279243 0.04511656503567851\n",
- "0.06201683426091631 0.028151617239178105\n",
- "0.061553763561113806 0.028147674082776217\n",
- "0.05180713869664486 0.02060255094046228\n",
- "0.03998787703985385 0.015790440504624886\n",
- "0.025488444196422547 0.011449129463020355\n",
- "0.01102027119693583 0.006966589766559406\n",
- "0.011604235570598458 0.006794797700077043\n",
- "0.010565611128562757 0.005640710472162157\n",
- "0.012017287100241886 0.005510647881654117\n",
- "0.012434158910648174 0.005494366141070369\n",
- "0.016448736882635217 0.004851325080751917\n",
- "0.016527602132524744 0.00485116638755085\n",
- "0.01700730692292449 0.004643005417799459\n",
- "0.016363523213895396 0.0044421082615854045\n",
- "0.02589431662771564 0.003955552768646823\n",
- "0.0345227493961171 0.0036008586465254297\n",
- "0.030648702911583114 0.003575160894214332\n",
- "0.024075703870136637 0.0020989162180337336\n",
- "0.02313833139471145 0.0020604302851563927\n",
- "0.022843671413936378 0.0017142543146276665\n",
- "0.0290322923187248 0.0015508854597766758\n",
- "0.02002383737785974 0.0014734766087485915\n",
- "0.015172806063794947 0.0014540292316795322\n",
- "0.016705582402610115 0.0013171827913206382\n",
- "0.4103173112183884 0.0009008366033628069\n",
- "0.0684274290287695 0.0008539361078357445\n",
- "1.721345521028988 0.0007853710802684171\n"
- ]
- },
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAD4CAYAAADvsV2wAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nO3de5hcVZnv8e9b1bf0JdfuXEgnJCHhEkgI0EYlSJJREBQGnBkG0BnwNhlUmBGPZ1B8Rhk9c8bR8cyIoDmMwzD6CKIigkcUBIkQ0SEd5JIACTF0SBNIOkknqUpS1XV5zx9V1al0+lLdqa5b/z7PU8++rr3Xrp28e/Xaq9Yyd0dERCpfoNgZEBGRwlDAFxEZIxTwRUTGCAV8EZExQgFfRGSMqCp2BvrT3Nzsc+bMKXY2RETKxvr163e7e8tg+5RkwJ8zZw7t7e3FzoaISNkws21D7aMqHRGRMUIBX0RkjBiySsfM7gQuAXa5+xn9bP+fwAeyjnca0OLue82sAwgBCSDu7m35yriIiAxPLnX4dwG3Ad/pb6O7fxX4KoCZXQrc6O57s3ZZ6e67jzOfxGIxOjs7iUQix3soyVJXV0drayvV1dXFzoqIjLIhA767P2Fmc3I83tXAPceToYF0dnbS1NTEnDlzMLPROMWY4+7s2bOHzs5O5s6dW+zsiMgoy1sdvpnVAxcB92WtduARM1tvZquGSL/KzNrNrL2rq+uY7ZFIhClTpijY55GZMWXKFP3VJDJG5POl7aXAb/pU5yxz97OBi4FPmNn5AyV29zvcvc3d21pa+m9KqmCff/pORcaOfAb8q+hTnePuO9LTXcD9wNI8nk9EpGL88sWdrP71H0b1HHkJ+GY2AVgOPJC1rsHMmjLzwIXAhnycr9D27NnDkiVLWLJkCdOnT2fmzJm9yz09PUOmX7NmDU899VS/2+666y5aWlp6j7dkyRJefPHFfF+CiJS4R1/cyV2/6RjVc+TSLPMeYAXQbGadwBeAagB3X53e7X3AI+5+MCvpNOD+dJVBFXC3u/8if1kvnClTpvDss88CcMstt9DY2MinP/3pnNOvWbOGxsZGzj333H63X3nlldx2220Dpk8kEgSDwQGXBxKPx6mqKskfU4tIH6FojMa60f3/OmQJ392vdvcZ7l7t7q3u/h/uvjor2OPud7n7VX3SbXX3M9Of0939H0fjAopl/fr1LF++nHPOOYd3v/vdvPHGGwDceuutLFy4kMWLF3PVVVfR0dHB6tWr+dd//VeWLFnCk08+mdPx16xZw8qVK3n/+9/PokWLjlmORCJ86EMfYtGiRZx11lk8/vjjQOovhiuuuIJLL72UCy+8cNSuX0TyKxSJ01g7ugG/LIt///DTjby440Bej7nwhPF84dLTc9rX3bnhhht44IEHaGlp4d577+Vzn/scd955J1/+8pd59dVXqa2tZd++fUycOJHrrrtu0L8K7r33XtauXdu7/Nvf/haAp59+mg0bNjB37lzWrFlz1PLXvvY1AF544QVefvllLrzwQjZv3tyb/vnnn2fy5MnH85WISAGFo3GaRrmEX5YBv9ii0SgbNmzgggsuAFJVLDNmzABg8eLFfOADH+Dyyy/n8ssvz+l4A1XpLF269Kj28dnLa9eu5YYbbgDg1FNP5cQTT+wN+BdccIGCvUiZCUfizJhQN6rnKMuAn2tJfLS4O6effnpvSTzbz372M5544gkefPBBvvSlL7Fx48YRn6ehoWHA5cEGn++bTkRKXzg6+lU66jxtBGpra+nq6uoN+LFYjI0bN5JMJtm+fTsrV67kK1/5Cvv27SMcDtPU1EQoFMprHs4//3y+973vAbB582Zee+01TjnllLyeQ0QKJxyJ01g7ul2cKOCPQCAQ4Ec/+hE33XQTZ555JkuWLOGpp54ikUjwF3/xF70vUm+88UYmTpzIpZdeyv333z/gS9t77733qGaZAzXhzPbxj3+cRCLBokWLuPLKK7nrrruora0djcsVkVGWTDrhnviot9KxwaoGiqWtrc37DoDy0ksvcdpppxUpR5VN361IcYUiMRbd8gife89p/NX580Z0DDNbP1SPxCrhi4gUWTgaByh+O3wRERld4Ugq4I92s0wFfBGRIgtlSvhqpSMiUtlUwhcRGSN66/DVLFNEpLJlSvij/dK2LH9pW2h79uzhne98JwBvvvkmwWCQzCAtTz/9NDU1NQOmbW9v5zvf+Q633nprzuebM2cOTU1NvT1inn/++cNKLyLl5UAkBox+Hb4Cfg6G6h55sG6I29raaGsbtGlsvx5//HGam5sH3N73nLl2hZxr18oiUjhhvbQtbR/84Af51Kc+xcqVK7npppt4+umnOffccznrrLM499xz2bRp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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "import matplotlib.pyplot as plt\n",
- "import numpy as np\n",
- "import pandas as pd\n",
- "from sklearn.linear_model import LinearRegression, Ridge, Lasso\n",
- "from sklearn.preprocessing import PolynomialFeatures\n",
- "from sklearn.preprocessing import MinMaxScaler, StandardScaler, Normalizer\n",
- "from sklearn.model_selection import train_test_split\n",
- "from sklearn.pipeline import make_pipeline\n",
- "\n",
- "\n",
- "np.random.seed(2018)\n",
- "n =40\n",
- "maxdegree = 30\n",
- "# Make data set.\n",
- "x = np.linspace(-3, 3, n).reshape(-1, 1)\n",
- "y = np.exp(-x**2) + 1.5 * np.exp(-(x-2)**2)+ np.random.normal(0, 0.1, x.shape)\n",
- "TestError = np.zeros(maxdegree)\n",
- "TrainError = np.zeros(maxdegree)\n",
- "polydegree = np.zeros(maxdegree)\n",
- "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)\n",
- "scaler = StandardScaler()\n",
- "scaler.fit(x_train)\n",
- "x_train_scaled = scaler.transform(x_train)\n",
- "x_test_scaled = scaler.transform(x_test)\n",
- "#df = x_train-x_train.mean()\n",
- "\n",
- "for degree in range(maxdegree):\n",
- " model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False))\n",
- " clf = model.fit(x_train_scaled,y_train)\n",
- " y_fit = clf.predict(x_train_scaled)\n",
- " y_pred = clf.predict(x_test_scaled) \n",
- " polydegree[degree] = degree\n",
- " TestError[degree] = np.mean( np.mean((y_test - y_pred)**2) )\n",
- " TrainError[degree] = np.mean( np.mean((y_train - y_fit)**2) )\n",
- " print(TestError[degree],TrainError[degree])\n",
- "\n",
- "plt.plot(polydegree, TestError, label='Test Error')\n",
- "plt.plot(polydegree, TrainError, label='Train Error')\n",
- "plt.legend()\n",
- "plt.show()"
- ]
- },
{
"cell_type": "markdown",
"metadata": {},
@@ -2082,7 +1638,9 @@
{
"cell_type": "code",
"execution_count": 11,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"import numpy as np\n",
@@ -2102,19 +1660,10 @@
{
"cell_type": "code",
"execution_count": 12,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "dict_keys(['data', 'target', 'feature_names', 'DESCR', 'filename'])"
- ]
- },
- "execution_count": 12,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
"source": [
"from sklearn.datasets import load_boston\n",
"\n",
@@ -2135,7 +1684,9 @@
{
"cell_type": "code",
"execution_count": 13,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"boston = pd.DataFrame(boston_dataset.data, columns=boston_dataset.feature_names)\n",
@@ -2153,33 +1704,10 @@
{
"cell_type": "code",
"execution_count": 14,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "CRIM 0\n",
- "ZN 0\n",
- "INDUS 0\n",
- "CHAS 0\n",
- "NOX 0\n",
- "RM 0\n",
- "AGE 0\n",
- "DIS 0\n",
- "RAD 0\n",
- "TAX 0\n",
- "PTRATIO 0\n",
- "B 0\n",
- "LSTAT 0\n",
- "MEDV 0\n",
- "dtype: int64"
- ]
- },
- "execution_count": 14,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
"source": [
"# check for missing values in all the columns\n",
"boston.isnull().sum()"
@@ -2195,19 +1723,10 @@
{
"cell_type": "code",
"execution_count": 15,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
"source": [
"# set the size of the figure\n",
"sns.set(rc={'figure.figsize':(11.7,8.27)})\n",
@@ -2227,29 +1746,10 @@
{
"cell_type": "code",
"execution_count": 16,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- ""
- ]
- },
- "execution_count": 16,
- "metadata": {},
- "output_type": "execute_result"
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
"source": [
"# compute the pair wise correlation for all columns \n",
"correlation_matrix = boston.corr().round(2)\n",
@@ -2268,19 +1768,10 @@
{
"cell_type": "code",
"execution_count": 17,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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RkREREREREREQsw4KjBOVSMiIiIiIqJSwTEsMXBUQLHeeFZV+cGhBLbsPAQA/OERERERERGRr3AMSwCnqhXU9u7+rKUIAWA0mcb27v4itYiIiIiIiIhIjGNYAhg4KqjBoYStx4mIiIiIiIiKhWNYAjhVLW925ns21EeFP7CG+qjXzSQiIiIiIiKyRBnn6uEYNliYcZQHZb6nEgxS5nvGeuPC5y9rb0ZlJPuQV0ZCWNbe7HlbiYiIiIiIiMxox7laHMMGDwNHebA737OttQkrO1oy0dmG+ihWdrSwqBgRERERERH5gmicq+AYNpg4VS0PduZ7aqe03dE5hz82IiIiIiIi8hWj+kXrV883fb2dci5UGphxlAe9eZ3ax+1OaSMiIiIiIiIqBqvjXBGOfcsTA0d5sFqziEsYEhERERERUSnIpzYvx77liVPV8qCk25ml4RlNaVuzoYcpfEREREREROQLVse5InbKuRQDp9E5w8BRntpam0y/aA31UdMfkJLCp7wnERERERERUTFYGeeK6I19rUxz85oyjU7JiOIY3DpOVSsAUaqfCFP4iIiIiIiIqFTlM83Na5xG5xwzjgpAlOrn9xQ+IiIiIiIiIjvymebmNY7BnWPgqEC0qX5KbSMtP6TwERERERERETnhdJqb1/w8jc7vGDhyid0iW8vam7PmVwL+SeEjIiIiIiKi0sQC0GIcgzvHwJEL9IpsHT12Cvv7B4U/WD+n8BEREREREVHp8UMBaL8GrjgGd46BIxfoFdl6ft/xzP9FP1i/pvARERERERFR6TEqAF2IsacfAldGOAZ3hququcBqMS1WbCciIiIiIiKvFLsANFcuK08MHLmgpips+bms2E5EREREREReMCr0HOuNe779YgeuyBucquYCSZIsP7dUKrb7dV4qERERERERiS1rb8bGHX3Cv23bc8TzMR5XLitPDBy54Mxw0tLzwhJKomK73+elEhERERERUa621ibdwNGZ4WRm7OrVGM/vK5cxQcIZTlVzgdXoqRSynplUTJyXSkREREREVJqsjk+9GOO1tTZhZUdLpg0N9VGs7GjxRXBGSZBQMqKU4FkhpvCVOmYcuUAUVRVJpuSCVbPPB+elEhERERERlSar41PAmzGeX1cuK/aKc6WMgSMXtLU24eixU+h+/TjSMhCSgLQsfm4pBF84L5WIiIiIiKg0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OfPa2uoIhkeSSKlWP6uMhDD/iibs7x8UrqpmNuXt7EgKD3613XbbreyzqJBbTVUYt11nXribiIiIiIhIjxslMfSee3YkhYXzpmXGWLXVEciyjI07+rC9u99WgEa74rXeOElLG6gyWl16/er5pvvKch/kNQaO8mBUkd/K0vLaH7iVQE5jYx2eeeG3mecZMUqRzGdFNL1UyqrK3DRNIiIiIiIiO6yMpZy+BwD0HIhjZUcLANgaE2nHb42NdRgYOJ35v944qbY6gmhFWHecl+/q0m7UgyIywsBRHoxSKPWWVxwcSuAL39krnDamPhEpP0rOgP0AACAASURBVH71ko1trU144dV3HEWx1e+pnromarvZScaLothEREREREQAMLe5Iaesh92SGEbL3Y8m09i4oy+vMZGI3njozHASD3zlmqwxnjq7yc50M22QaG5zA3oOxB0lBBBZxcBRHowCKNofv5pyctL7URtlAz310puOotja99SeIM32Sc2NOwBERERERERasd44eg7kFsGef4W96VjKczfu6NN9Tj5jIhGjcZLZjA8r081E7yGqm5tP8ItIhKuq5cFsVbG21iasXz3fMKCi/KjVHtt9WDeT6f2Tw8L3OTOcxPrV87Fp7aLMso5qVir1G+2TmqhyP4tiExERERFRvvTGLfv7B22/V1trk6Ob2zVVYduvAYzHSUazVayyOqYDOBuE3MXAUR6sBlDMfrTqv8d64zg7Iq7CPziUgE5Q3PSEaOXEYTX409bahJUdLZltNtRHsbKjxbcR7VhvHGs29GDVur1Ys6HH1jKeRERERERUOG6XxdBbrt5IYiztaMxgNE7Kd79ivXFbx4CzQchNnKqWB6tzUc1WP6utjmDNhp5M7SG7rAR89NqgzOu1W0StVCr351MEnIiIiIiICsto3LJq3V5H4xZgfFaH3g16rWRKdjzVS2+clE+5D2VMYxVng5DbGDjKk5UAilFhtkhYwvBIEmeGkwD059nqsXri1KvU7+dMITcYpYT6eb9FKyMsXVBX7GYREREREXlKb+xkVifWSFtrE7Z391sOHCnbMRLrjeOpl2IYODlsaUyWz8ppRlPUKiMhzL+iCfv7B7mqGnmGgaMC0GYmqbN8RkaTtk5gWutXz3fUhqCcUEpxBTi9LKn6uiq0Xjy5yK0jIiIiIvKO3thJzcqNYO2NWLv9f6NMICezGvIZjxm1vdwTAcgfGDgqEL3MpFXr9jp+T7vzVosxvUyUOVPINpTiCnB6WVJbdx7Ed+5sK1KriIiIiIgKQz1u0RsvGQVTRIEdPTVVYYwlZVuZQFZmNeiNg5yMhYzGNAwaUSF4Whz7hz/8IW644QbceOON2Lx5MwDg5ZdfRmdnJxYvXoz777/fy82XBKcBDLfnrVopIG23yLRywlZOckokvpDFqUtxBTi9C5veinpERERq7H8RUTnRGy+FJOiOK0SrVIuEJUCSJIwm05las1YW/jGb1eD2OKgUxzRUXjwLHL3yyiv47//+bzzzzDP4+c9/jkcffRSHDh3Cvffeiw0bNuDZZ5/Fb37zG3R3d3vVhJJgt8q/BPdXMYv1xrH52YNZJ7bNzx7MOrE5Ofm5seRkvkptBThA/+J4wZTqAreEiIhKDftfRFRu9MZLaRnC8YjRKtXARF+7pioMKSTl1Jqd29xgOlbQ668rj7s9DirFMQ2VF8Opanv27MEnP/lJSJL9pb7+/M//HFu3bkUkEsGJEyeQSqUwNDSESy65BDNmzAAAdHZ2YteuXWhvb3fW+jKg/Ngf7uozLYzdUB/FI/+wBAMDp11tw7Y9R5BMZW88mZKxbc+RrLm4dotM+6W+kCgltNhT6IzoFc5b0TG7iK0iIqJCctoHY/+LiMqBtq8+/4omdL9+3FKtI6PgTEN9NFMjds2GHpwdyR2XPL/vOC6bPlk4NlC3S0udAeTFOKhUVrWm8mQYOPrhD3+If/3Xf8Wtt96Kz3zmMzj//PNtvXlFRQUeeOABbNq0CUuWLMF7772HxsbGzN+nTp2KEydOOGt5CbAanGhrbcLGHX2G7+VlKqISZTd63MnJz6/1hZwUszN7PzeDUHqF8xZcNcP1oCEREflTPn2woPe/iMgZv9xYFfXVew7EdW+ya8cbRuMT9XjK6HnaYFSsN47Hdh/WzWTSHi+/joOInDIMHO3YsQP79u3D448/jo6ODixYsACf//znMXfuXMsbuPvuu3HHHXfgS1/6Et56662sO2eyLDvKZmps9P+y5C+8+g627jqMxNj4yWVwKIGtuw6jvq4KC66akfP8xinVGNCpYRMKSbjr/1yZeV1jY934++88iPdPDuOCKdVY0TFb+L75Uo61Xvsap1Trfh6339SKh554I3MMACBaEcbtN7U6/gzd+OyfeikmzJ566qU3sXTB5bbey+7nbNXSBXXCtpTCd98rQd53gPsf5P0P8r4HWb59MC/6Xw0NtbZfUw74G/QWj6+3rB5fr/q0TvzkuV8K++qhkIS0IHqkHY/ojVvqJlVk9a+Nxl8fDCUy76k9NqLtb/r64qzHvBgHBRWPl7esHl/TVdXmzZuHefPm4cyZM3j66afxzW9+E+FwGMuXL8fNN9+s+7r+/n6Mjo5i9uzZqK6uxuLFi7Fr1y6Ew+HMcwYGBjB16lRLDVUrhayLR7p6c04uibEUHunqFS6pfvPVl+pmHaXTMlovnoyBgdNobKzDMy/8NisKP3ByGA8+/jqGTo84uitQUxUWRs9rqsKZY33z1ZcKp0/dfPWlup9H68WTsWLJrJw7F8q+2NXYWOfKZ693gRg4OWz7/e1+zvlwa/9LUZD3HeD+B3n/g7bvoZAU2OCEiJM+mJf9r8HBM8JBWzkL2m+w0Hh8vWXn+BayT2sk1hvH6XNjwr+l0zIqIyHT8YjeuOXWT16e8zy98df59dHMc0XHRk00hnB7HBRUPEd4S318zfpgpoEjRW1tLT7/+c/jU5/6FB588EHce++9hoGjY8eO4YEHHsC2bdsAAM899xxuvfVWfPe738Xbb7+N6dOno6urC7fccovVJpQUN+e1KisG5FNvyMht183Cpq4+aMoc4exICms29GSlXWpPfsD4/GC9lFY/zsV1M3XUL3WciIiofNnpgwW9/0VEzhSrT6udHjcyKi6hAYzf1AYA5Sm11RF87tqZwrFGRUQyfV5baxOOHjuF5/cdz3pcWyLE7BjUVkeE4yE/joOInLIcOPrVr36Fn/3sZ+ju7sbChQvx05/+1PD57e3t2L9/P26++WaEw2EsXrwYN954I84//3zcddddSCQSaG9vx5IlS/LeCT+yE5xQ5vHqUVYMAManMLl9YtcGhbTvqa7/o53r62atoELRKz7tpIYU5y8TEZHX7PTBgt7/IiJnitGnFY0ljCTG0lkL+oyOpXOeo31Pvecpll/fgsumTzas7aR3bAAgEpYwPJLM1IYtlfEQkV2SLMu6OcfvvfcennzySfz85z8HAHz2s5/FLbfcgsmTC5euKFIK6Wqik1ZlJCRcNlGJUJtpqI/i9ptacf+214TF4WqrI4hWhIUnPavF7vTaol6BwMlz7dBrq5upim4V/7PzOecryKmaQd53gPsf5P0P2r5zqtoEP/bBOFWN3Mbj6y07x7cQfVpt/zsxltJdpEdLAqB39qmpCkOSJJwZTiIkQThOymd8Ijo2wPjYS5Ik4dQ6pR1+W7251PAc4S3XpqotWrQIV199Nf7v//2/uOaaaxwVUgwa9QmxtjqCioiEsyMpw5OG1UyhwaEEHnriDeHJ0CjaDUCYGXT02Cns7x/MCp7YyWZykvlkFrAxymJausC9wmhupY7qTeHjxYGIiPLBPhgRFZLXfVq72UVq2rpGWuparVZXXtO2zWi/jY7NX6/bK3xPpR3MQKJyYRg42rVrF6ZPn16otpQ87QnxzHASlZEQ7uicY3iiMEp/VAtJEBZmC0lAtCKUU+BaqXuk/Fv7N/V8XuWkVlsdEUb+RWmqdlNarUxtM6rfZHfFs0Lh/GUiInIb+2BEVGhe9mlFfXw9olkUopIaduQzPlH+LTo2FxiszKbIpxYtkV8YBo6mT5+O3bt340c/+hGOHDmC6upqzJw5E6tWrcI111xTqDaWDKdFq0U1d7SMIu1pGcJV0QB70fzRZBoVEUm4WsHc5oacom92awXpHZ9te46YXgxYbJqIiIKEfTAiKmXaLB6rffnKSEi34LXeCmhW3lNvfPLY7sN5LTq0omM2Hnz8ddOgGMcyVOoMA0c7d+7E/fffj7vvvhstLS2QJAn79+/Ht771Lfzt3/4tFi9eXKh2lgSnRatF6Y9Tp1Tj8O9PIS2PZxTNv6IpM61Mq6YqjKrKiGH2j9WT1dmRFO7onJPVlrnNDeg5EM+JxK/saMHKjhbLKa16bTgznDSd31yoYtNu1T4iIiLKB/tgRKWH/chxdqalqccxRsesrbXJUeBIGUeJ3jPWG8/75vuCq2Zg6PRI5nM3qrFEVMoMA0dbt27FI488gmnTpmUea25uxpVXXol7772XnRaNfFYjUKc/Kidb5aSTloGeA3HMv6IJL77xLlKas1FiLI0/n50d3AGyo+tmGU3qtmpTMdds6NGNxK9fPd/yBdHO3QY1pyue2VWqq8QREVH5YR+MqLSwHznB6rS0ykgIt103y/Lx0QvKGFHGUZdNn5yzHaWkh4idQI9oHOfG6s1EfmIYODp79mxWh0Vx6aWXIpFgup2WW8u8603p2t8/iElVkZzK/cmUjP39g6bZP0ZZROq2Wk0ttRsEsjIlT0tZJWHjjj489dKbuPnqSws695pzkotD+x28/aZWtF5c3NUciYgKKQh9MGZnUDlhP3KC0RhBGVs4+c23Xzktq0armiQBsiwOLul9DkbtHBlNItYbt/3ZceEcKleGgaNwOKz7N1kO1nKsVrh1ojAK1OitqTI4lDAsaCf622XTJ+e0FchdgU2P3ZRL0fEZGU3qpogunDftw+DW+N8HTg57eufGrQAZ5Ud0x+6hJ97AiiXW70gREZW6cu+DMTuDyg37kROMZmGsXz3f8fsuv75FN3Aky8CmtYuwSmeVM7326H0+Z0dSjs9JXDiHypFh4Ijsc+NEYXSyDYVDwsr9TubNitoqmpYm4jTlUrvNWG9cd75y9+vHLd8xcEM+Uw3JPaI7domxVCDv2BERlStmZ1C5YT9ygluzMETMjrPedLaQ4O77svZmw7pJPCcRTTAMHB0+fBh/9md/lvO4LMsYHR31rFFBZ3Syra+rElbuHxxKYM2GnrxTIY3uiignYjdTLo0K3enNYfbqzo2XFznKZjQ9gXfsiIjKvw/Gcz2Vm3LpRxr10axOL3VjFobetsyOs974QfS4lYLbPCcRjTMMHO3evbtQ7SAVo5NtY2NdVuV+NTfSvI1SNtPyxInZzci73jYLvSoB5yQXhtn0BN6xIyIq/z4Yz/VUbsqhH2nURwNyy1kYjTvymYVhZSqr3nG2e24xW7yH5ySicYaBI0mShIUZAeDFF1/ERRdd5EmjaOJkq0TbN+7ow/buftx+U2vmb2s29OSc6EaTaTy2+7DhRcvoboFZAWsvUjZF2wxLQCQiITGWHTny+s4N5yR7z2x6guj7EK0Il9wdOyKifJR7H6xcsjOI1Eq9H2nUR1P+Lfqb2/ucz1RW0bklEpYwMprEqnV7bY19KiMhzG1uwN0/fBFnhpMAxhfusbMSHFG5CN9333336f1xxYoVuPXWWwEAd911F2644YbM37761a9m/lZo586Vfoq2FUq0XTlRDSdSeO3Qe2g4rwozptbiJ88dFb5uLCljOJHKvOY3vxvMvEb0nuq/z5hai4bzqvB2fCjzHlrDiRSefulNvLT/OOomVWLG1FrDfXjgZ2/gJ88d1X2+dps1VWGk5PH9UKubVIH/Z3Fpn6itHA89NTXRsvju631vhxMpfOrqS3O+Dw31UXzx01fgzy6/oMAt9Y9y+eydCvL+B23fJUnCpEmVxW6GL/ixDzY8PAq36nKLzvWfu3am767xQfsNFlo5Hd98+nhesXt8jfpoRuOCT119qaP2KbTHTi8DaDiRwtQp1bbGMrXVEYyNpZH4cFwxnEjhtSMDGDqbwJ9edkHO80MSIGM80+ijLVPxy/3vYmR0Iqg0lpTxxm8H0DilGjOm1pbVd9iPeHy9pT6+Zn0ww4wj9aod77zzju7fyBtmRYLNUisV6gi9lQi+UUaTmlmKqp0VU9R3aNZs6MHZkdztVkUjvutQ2sEVZMZZSSHW3rFrbKzDwMDpgrSPiMgPgtAHK/XsDCJFufTxzPpoXkwvFR07o/bZGcsA4+MKJcik9vy+47hs+uTMc0Wf05oNPUimcs+3KRksmk2BEzL6oyRJwn+L/k/uMyscuay9GZURw48w5zV2ilFaeX91+qqWWbqrWVu13hesJldKnB6PciP6XnF6AhFRNvbBiEpHufTxjPpoXvXfRMdORNmWlbFMrDeONRt6sGrdXsNAlNMxidnfiMqR5YwjKjyzqL+oOFxiLCWMqiuvqakK4+xIbqppTVU45zHt++uxuzKK2YlWb78vmFJt+Dq/4woy48qheCQRkdfYByMqHeXSx7PSR3O7/2aWYaTdlt64RBnraDOYnG5bvX29vxEFiWHgKJ1O4w9/+ANkWUYqlcr8GwBSKfE8V3KPlSLB2tRK0clSfTdA7y6l3uPaVE83VikwO9HqFcxc0THb8HV+xxVkJnB6AhGRMfbBiEpHOfXxjPpoXvTfjI7d+tXzcx43K6xvNYNJ2YaRZe3N2PzswZzpamEJzJSnwDEMHB05cgQf//jHMx2Vj33sY5m/MU3ae6Ko/+03taL14sm2XqO+GyDKRjJ6XM3uCihOV0zR24cFV80o6To3XEGGiIisYh+MqHSwj+ec3WNnNtaxmuVlZ0yybc8RrqpGgWcYOIrFYpl/S5KUlTbNTkth2C0SHOuNG6aQ5nNHxO4Uo3ymJJVjRgqnaBERkVXsgxGVjnLq45mNJdzm5NgZjRP0xjq11RFEK8IckxA5ZBg4amtrE3ZOZFmGJEk4ePCgZw0j+6ys6CCK6gPA3OYGS9uwe/LkyTYbjwcREVnBPhhRaSmHPp7RWALwLjDm5rHTy2D63LUzS/7zISomw8DRzTffjH379mHRokW45ZZbcNlllxWqXWRA706A3ooOP9rRh407+gCMp1c2X1SPg2+fynpez4E4AGB//6DpBcGLOxGx3ji27jqIxNj4HVUJQMslk/HeyWHL0/SIiIjKBftgROQlUX9ebyyhjCMUopvTVrYTkoC0DOH4wc74wui5ogymuc0N2N7dj407+jzNoip0thZRIUmyybIdw8PD+K//+i889dRTOHfuHJYuXYrOzk7U19cXqo05SqnOjdsnkN7fn8KDj7+eE0Vf2dGSc1LPl/K+Vopva59nR6w3jh919cFsAZloRRgrlgR3TrHZNMVyFuR9B7j/Qd7/oO17KCShoaG22M3wDb/1wQYHzyCdDtZqb0H7DRYaj6+39I6vXn/ealFphTrgJBrrmK1wptQLAiBsz/wrmnJuaus9V28sYnXs4nTMphxjL8ZIxHOE19TH16wPZho4UovH43j66aexc+dO/NEf/RF+8IMf5N9aB0rly+P2CSTWG8fD/3lQ2GlrqI9iZDSJsyPurrSivSAodwpEzxOtfGCF3mptIkZ3KspdkE+cQd53gPsf5P0P2r4zcKTPD30wBo7IbTy+7hEFPpYuuFx4fPX63nr9fCOigNPCedOw/PoW3P3DF00X4KmMhFARkSyNYYyeqzcWMVoVWnl+PmM25TtsZTtkH88R3rITODKcqqb1wQcf4IMPPsDJkyfR0GCtJk6Q6aV7bu/utx3wUE5oeh22waEEImH3i2UqqajKfuhdTKwGfvJ9rbJ9sxRZP6SKOm2DH9pORET+wj4YEWmp+4xqSj+5vq4qq8yD3vMVdoNGIQnCbKLn9x1H/INzllZtHk2mMWr+NNPn6u2TlcfdGLPZ3T5RqTENHL377rt45pln8PTTTyMcDmPp0qV4/PHH8ZGPfKQQ7Stpbp5ARCc0tZAEJFPu3wXUuyBoWVmVTUu5eDmld0K3UiTc6+CMlTbYfd3SBXWutY+IiPyPfTAi0mM2DWw0mcb9P9mHv75xNtpamxDrjWPzswcNxws1VWFIkmQp4GM2tU1bT9VrNVVh4eNWVpR2Y8yWz8rVRKXAMHC0fPlyvPnmm7jhhhvwve99D3PmzClUu8qCmycQsxOXF5njduY6K3OOrTK72FklOi5mdw2cBnXscHrnwuh1Sxdc7krbiIjI/9gHIyIjZjeVASCdljN93G17jpjeZE6MpXH59PMsBX0qIpLlTKFCEK1CCeivsqYeu7gxZrOyHaJSZhg4+tWvfoVoNIonnngCP/vZzzKPK0vBvvbaa543sJS5dQKJ9cYdzTnOh2Qx00hhd7qYlYudmlFtJe02ze4auDmFUI/TOxdMcyUiIoB9MCIyZrVvqPRxrWQRJVOy5Uwht+uq5uvMcNJ07KE308DqmE1cR2p8RoCV7RCVMsPA0XPPPVeodpQlN04gmdpGBa5Fab1kujgab5bVYycQckfn+F3WrbsOIzE2cZHSntCVbeqprY5k2iIyOJRwbQqb0zsXTHOlIGJdL6Jc7IMRFU4pXIe0baytjlgKBgHBuAFZWx0Rjj2OHjuVszKb9rO1MmbTG9uo60i1tTb57ntD5BbDwNFFF11UqHaULScnEPWFwa1MI0myFwyyY25zbpFOo6wewN6qDdu7+7F+9XzU11Xhka5e3RO6WRbT8Mj4nQi94IzeBQewP4XNabYZ01wpaAoxdZSoFLEPRlQYpXAdErUxLAGRsGSpxqlbqy/r9aFFImEJsiwj5aAqRUiSkLY5cJFlWTj2eH7f8cz/jT5bszGb3tjm3x57zbfBRiI3hYrdAMqmXBiUk7IbQaPa6ggmRcUF49ywv38w6/9m08XsZlAp77XgqhlYv3o+Nq1dhPWr5+ecnM0uZCl5/KS/rL0ZlZHsr35lJKR7wXFawLsiMjHXurY6YmlJz7bWJqzsaMlkGDXURy29jqhUmQWZiYiIvFQK1yFRG1Py+I1YdZ9x4bxpOX1cYPwm723XzYLTBZgb6qPYtHYRlrU3I2TxPaIVIUdBIwBIyzJ0ShbpshoUc/rZGo0zlPFNrDdu+32JSoXpqmpUWHZr/xhpqI9i/er5AIBV6/a68p4i6hOp2XQxq6u0qSkXxBdefccw48jKXZDBoYRuOurGHX26r7FDVPh7dEx/n0Xp0crnVg5KIf2biod1vYiIqJhK4Tqk15bRpCzsV6mzbJT/v/ybdxGJhJEas5d1FJaAxFjK9lgi3+wmJ2UzrH5mTj5bs3GG2/VSifyGgSOfcesipUxvynfJeyvU9XeMAl92VmlTv0bZD3WNo8GhBDbu6MPGHX2ZaW+VEfNbE0pbRemoSnBD7zVWxHrjeLirLyejSu9iIko93vzsQTy2+zDOjqR8E2hxGvwphfRvKi7W9SIir/EGBhnJ5zpk5bvlxvfPKGixbc+RrPdP6ASGEmMyAPvBHCkkWa6lpBYOwXHGkV1KSQerKzY76WOIyklo+SnYSOQ2TlXzmZoq8ZQyq2mhynPnX9GEbXuOYOOOPk9PYurAzpoNPYbbUk/B0hMJS5ljoJ6mtb27X/dCqARpRpPmtyZE9ZgUoilskbCEkdEkVq3bizUbegxTUM0KmYuOjSjQlkzJmbs0fkh91U6ftNOmUkj/puLSmzrKul5E5IZ8rmEUDE6vQ4/+4lBWP1v03XLr+2fUljPDyaz3txvk0Rt7KKzUUBIpVNBIoZR7UBbDAcZvKkc08/Oc9jG05SREeNOLyhkzjnwk1htHQjClKSwBq26ag7bWJvT+/lRmula0IiwMpsy6eDJ6DsRdm/KmR8J4MAgwj/DXVIV1M3oUyl0YYCL7RwkwuBX8euXgiczKCkqmkt5ynbXVEQyPJLOCOEqWk5Pi3KKLiZX9UgItSxdcbnd3XWEU/DG7Y1YK6d9UXFy+loi8lM81jILByXUo1hvPmQ4G5H633Pj+xXrjeGz3Yau7Y1syvxllnlP660YL66jLZKjLQ4wmZYQlZFagy7ePocxYEJWl4E0vKncMHPnI9u5+YVQ/EhkPumzc0YfGKdWZE96aDT3CwNHh359ypai2mZrqSKYdRgGT8bnRaZwdEacBq0/gsd44NnX1QTkMg0MJbOrqgwTAjV06O5LKBILSqm2op08pbVmzoUf3ro0oiGQUDNG7mFhdncJJnSW3BuJGwR+z7XAaElnB5WuJyCu8gUFW2L0OGWVOq79bdr5/olWVa6sjODucdKUPrEcvo98v0jKwae0iPPqLQ8JgHZCdzS4qIh6tCOOBr1zjWpvUgcEPhhI4nze9KAAYOPIRvYtLYiyVOakPnBzOBDn0nl+IoBGATFDFLIsoMZYSBmDUxbsVj+0+DG3szGGGrC2iuz92Cuxt2XkoczdDKyRBd2U0K/OlAft1ltysK6QX/KmtjphuR7R/vCNDRESFwhsY5AWzvq/631a+f9q+m9KXd1JbqNCMMoHc0FAfRaw3jp4DxtP7zFY9c5sSbGxsrMPAwGnX35/Ib1jjyEesdmKUIIdXnR7tXGAjsd64aTuMsna08l2BIR/a9tg5vqPJNGRZFs6R/+sPpxmKaOdL11ZHcpZKtRtocbuukN7cf1mWTbej3T913SoiIiKvsY4aecGoj6j+bln9/rm5qnJlJGRat8guvVqrlZEQZl082dVtad9/WXuzpePTUB/V/VwYKCbKHzOOfMRq9gngLHIeDo0HhcZXVdD3ibkXZuoAmdne3Y+5zQ26qaNW78gAMC0UqFfTyS3a9tj5PIDxoNcdnXMMp26JpnapRSvC+GjL1MzxdzLNzO20fL25/xt39FnaDqchERFRsbCOmn+I+kBLF9QVu1mO6PURF86blvXdsvr9yzcjRlu3E4BuP82uykgoc9NP9Bl6VX+ppiqM266bhbbWJtN9UQfjjDLdrZZy4EqM5EfF/l4ycOQjoovLyGjStSycqsowxpIyzKoF7e8ftBw0GRxK4MXXxUEjI9q7LUqKruFrKkKoiIwvCVpTFcbIaBqpD3NjJQAtl0xG//8OObpjUxkJYW5zQ2ZlOOXHuLKjxbSo98R7SKZBI+3Urs3PHoSclrNqOvUciNvOyhHNi9eyO91Nuy/aaYV6x8Wvd3WKfbIlIqLi4A2M4tObRl9fV4VWDzNWvGInIKn+/il9EXWN/83b8AAAIABJREFUTCC/6V5KYOfosVPofv04Nu7oQ0iCa/VB1dnkot+SWwEqhaj+qZ3nA+LPxWopB7dLPhC5wQ/fSwaOfEZ7QhZV7XfKagBqcCiRc0E0uqBZrUGkzPNuqI9ibnND1oUzMZYy3cfT58ZQGQlh4bxpePH141nblQH89tgfsrKlrBaeVtqjXolO+TGu7GjJBExivXHDi+NoUs5ZbhXI7lxo91FUDN3JahuiefFqdtLyrZyYxlcAzP0++TX93w8nWyIioqDSm0a/dedBfOfOtiK1Kj92A5JGNxCNgkaRsCTsLyrmX9GEl/Yfx8G3T2Ue03u/sOSsdqi236S+Gec20Y1KPXd05paD0PtcrK5wx5UYyY/88L1k4MjntAGcQlAyRrR3SPIJYCmFsGO9cWzbcyRrapud/RpNptH9+nHhBTGZkrG/fzDrgqNkEBlZv3q+cGU47Y+xrbXJ1uegfb2d/RwcSuRkP+mlc+vN+9amLVs9qZidmPS+C+qUYr/xw8mWiIgoqPT6QO+fHC5wS4rH6g1ENbPyAADwysETlm8OV1dFEK0IOxpTjCbT2LijD1t3HUYymfJk8RpR1rpRW70o5cCVGMmP/PC9ZOCoBKgDOH//7zEMOLjIVkZCqKwIma7OoJcxYicDSe893cqeMtquskS8elWvzc8e1L0wKxcoox/jqnV7Mxduu3WP1O9rNQNK+1qzdG6j1fU2rV1keXtm76c8rheoqqqM+DYI44eTLRERUVDp9YEumFJdhNYUh90+h7oP93BXn27/105JizPDSchyfhEfL+uNisYgbq2MaPV9uBIj+ZEfvpdcVa3ErOiYLVydYeG8aVkrV2n/v7KjBZ+7dmbOa9VqqsKGtXXaWpuwfvV8bFq7yHLQSHlPYPyi58aUO72VHRRbdh7KzIdua21CtEJ/n5ULVLTCePUJJXhz9Ngp2Jkxrv4x5zOFS0nnNtuGlcfNmL1fKQZhuMoGERFR8eitLraiY3aRWlR4dvoc6ufGeuOwvt6xuUKsYBySJNsru2kLiyusrEwX641jzYYerFq3F2s29AjrIlld4Y4rMZIf+eF7yYyjErPgqhkYOj2SV5FfbdaQk/cwy56prY7gc9fOzExt2mRwp8SOsARIIQlpg/xY7RQkowuk0j4rd09Gk2nd1eP0qH/Mba1NeGz3YWF71J+F3XRuURZUPicSs/fzQ8TbLrePEREREVmnV0x6wVUzMDBwuuDtKcSCGdptaOtpAuP1i9SLpAC5q4Bt6urTnRYWlsann5nNKCi0tCyjqjKC266bZZqpb3b8zQqRW61jabWgOVdiJD/yw/eSgaMSJCqgra2HY3TyFS0Pv3FHH7Z391v+AhrNt1baoLyvW6s61E2qwNnhJFIWJlVbmSIWkib23wuSBBw9dirrB37xR+qyihcq2q+chuXXj2dm6dVl0kvndvtEYvZ+pRiE8cPJloiIKMj8srpdIRbMEG2j50Ac869oylrERek76fVPtnf3G9YSSsnwXdBIoV5sZ9ueIzntVFaDs3LMjb47dupYWv0O+uW7SqRW7O8lA0clLp+Ln5PXWllFYXAokRVUyjdopBTW/soDv0Ta4rzs2uqJr7ZeXaK0DNdWrBORZeQUAdc7bvv7Bw3bq03nFt0p065CkQ+jE1Nba1Nmyde0PB6Am3+F/y+wxT7ZEhERUfEVYsEMvW1oF3FR6G3Xz2UAzCh9caX/5VWWVymWUCAqRQwclbh8Ln52X+tWcWs7KiMhzG1uwN0/fNHWHRV14T9lX0SFBQu5L0aUVdS0d5lE6dxGAT/R67xIve45EM8cy7QM9ByI47LpkxmYISIiIl+zEmjIN8jhNJih3W5NVbggNYm8oC3CbeUGnpPjXoolFIhKkafFsR966CHceOONuPHGG/Hd734XAPDyyy+js7MTixcvxv333+/l5gMhnyi73dfqrablFSWTpedA3HYarvYi29baZLvG0rSG7Klh4ZCESNjN8oTZlACQqKCfml7A77Hdh7Fl56Gc1djM3s8uo4AjEREVH/tfRPrMFsxQbtDl058y2oZeIWfRdhNjaVcLYzshOWyA3YCX0+Puh6LBREHgWcbRyy+/jJdeeglPPvkkJEnCF77wBXR1deF73/seHn30UVx44YW488470d3djfb2dq+aUfbyibLbfW2hUz7T8vgULifBKtE+1FZbKx4YkoBZF0/Gkd9n1yJKpWVIkvX3cWI0mcaWnQcxmpyIcikXzvq6KrRePFn3cxBdoJWAkptZSEwJnlCI4ppERHaw/0WkL9Ybx8hobh9OHWhwYyqbXtmBuc0NOVnjm589qLt4StJCXU+vWawSkcNuxo/T4846lkSF4VngqLGxEWvXrkVlZSUAoLm5GW+99RYuueQSzJgxAwDQ2dmJXbt2seOSh3wKFdt9rVmgySxwEK2QkBizt5S9k2CEaB9ivXEMj1gL9qRlCAtYA+MXz2hFGNGKsGeBEnXQaOKxNLbuPIjv3Nlm+7icHUllOiNuFIAslZRgr4M6hSiuSURkF/tfRGJ6JRckKTtz2o0bZHrBDFFwJJmSkUyV5nQ0PVbHIlZrp5phHUsi73k2Ve3yyy/HlVdeCQB46623sHPnTkiShMbGxsxzpk6dihMnTnjVhEBoa23Cyo6WzKC9oT5qa4UCO681SgUV/U2rtroSm9YuQk1V2LRtyl2ZkMX0WOV5evtgtiqFHUZFro1Y3Rc9758cBqD/OagLghsZTaaxcUdfVnq0HVZTgvVSsQvBjTRzM5yyR0R+xP4XkZheyQUlo0a7uIuW3Rtkba1NWL96PjatXYT1q+ejrbUpQNnZ5p1ubV9Nj99uTBIFlefFsX/729/izjvvxN/93d8hHA7jrbfeyvxNlmVIDibONjbWudjC0qPd/6UL6rB0weWO3svOa5cuqEN9XRW27jyIgZPDCIUkjCbTeOqlN7GiYzbu+j9XZv4m8sFQAo2NdQiFQgD076w0TqnGR1um4rlfH7NUlyhaEcb/+5d/igVXzdB9zgcuXqjrJlXg9Lkx26+zW2NJ64Ip1WhsrNP9HOz+lAaHEti66zDq66oMj52WevvvnxzGBVOqsaJjdtZ7vPDqO9i66zASYxOZTk62pWbnd//USzFhUOepl950/FvR0vtOKd9zrRdefcfwmJnheS+4+x/kfSfnvOh/NTTUutjC0sHfoLcKdXzz6QtGK8K4/aZWw7YaXeeVv7lNQv6rF3thNClj038eNOz3ifpqWlaOux/4vX2ljsfXW1aPr6eBo1dffRV333037r33Xtx444145ZVXMDAwkPn7wMAApk6davt9BwZOu9nMktLYWFfU/W+9eDJuvvrSrFTfgZPDePDx17GyowXfubMNazb0CO8enF8fxcDAacOgS0N9NPMeStDBTEN9JVovnmx4XM53OO1N5IyDoJFVkqQ/l3xFx+zMPoo+h8SY/VpQibEUHunqRevFk229rvXiyfjOnW1Zj6mP/yNdvTmfn9NtAfa/93rBy4GTw679fvS+U8r3XE2bHq/8ZoZOj1jKDiz2777Ygrz/Qdv3UEgKbHDCTV71vwYHzyCd712QEhO032ChFfL4Ou0LKtPMjPqaRtd5AJ6tSuznX2MqLRv2+/T6agorx90PeI7wFo+vt9TH16wP5lng6N1338WXv/xl3H///WhrGx9g/umf/inefPNNvP3225g+fTq6urpwyy23eNUE8ohZ8Tqz2klGNXrUU4usOj44jFhv3HAALmqTU15dpCUJWHDlNPQciOe0M1oRxvcfew3nq2r1uLXKXb7Lz4peU+wC2nrfsZAE0++KVXZqhLlRaJOIyAr2v4jEnPQFN61dZOl5ZtPXC7kqsZ/o9fuMSgc01EexfvV8r5pERA55Fjh6+OGHkUgksG7dusxjt956K9atW4e77roLiUQC7e3tWLJkiVdNII+YBQXMVjdY1t6sO4e8oT6KR39xyHab7K644DfRCgkrlsxGW2sTLps+Gdv2HMlauU095UspwOzWfqiXn9387MHMCh7KSh8K0eepVyC6piosXB2kUPPU9TqHaRmuFbC2s4pHsQNpRBQc7H8RiWmv2zVVYSTG0q6sXFau13mzlYT1+nsKvX6fUT1IK0W1iajwPAscff3rX8fXv/514d+eeeYZrzZLBWAlKGC0ukFbaxOOHjuF5/cdz/nb1CnVwsfNDA4lsGrdXsPBu7pNetPpCq0yEhIW8x41mHam3MFyuuqcdvvKBXrrrsM5nadkSsbWXYchy7Jw9TC9O2yVFRFURkKOVvtzg3I8H+7qy6kt5Wamj9VVPEplJToiKn3sfxHp0163Y71x/KirT1gmwOqiI0D+Kw8XWm11BOdGkob1N2uqwnjgK9fgrh90C/v9NVVhPPjV9pwbj4qwNBEE0manGx0PZmIT+ZNnq6pReYr1xoW1dNQXByuWX9+ChfOm5Tx+8O1TebXP6upZy9qbEba5YptbrKwAZ5bSPDiUsLSSnZnKivHXj3+u4jtGibGUbvq13oX/zHASo8m06b56qa21SbdDVOgOnNWV6IiIiKhw2lqb8IWb5iCi6RRGwhI+d+1My+8j6lcqfWOn/bWwNF6qwAvDJkGjykgIt103CwBw23WzIOoKnx1JYc2GHgDAX90wOyvQVlMVxqqb5mRlp1stR1HolXiJyBrPV1Wj8rK9u1+Y0puSJ9JOrQYH9vcP2t5+JCyZphSLMkq0dzrmNjdACknjDTegZDDlWx9JO71LaYvomFkJatRWR3JSrisjEsZSMmR5PDhlpX7pmeEktuw8hIqI/eiYlbtGaXkiQFKMO0h+yfSxM62NiIiICseta7S2XymFJBw9dgr7+wfHV7+FvTqZKRlIWVwoxo7KiITRpH5LQhJybvaFdfrfyg3blR0teOAr1wjfz25NTnVmO/tJRP7BwBHZYhQksHuit5v18f/d9mcYOj2CTV19ZvGenILP2jo8VqbDaQMeTuojaQv86dUEAiaOmZUpaPKHOdVKyrXyvsrjdha9GU2mMao/fV2X1aBaMYtA2ylg7TWr09qIiIiosPK9RoturCZTclZ/0y8roBkFjSJhCX91w+ysY6F303ji/Sb6eXYWTAH0+7xcQITIfxg4IlvMghp2TvR2avQsnDcNC66agdv/cZdp0Eh5b4WT1ce0d5uUDsWqdXstv4coQGFldS0rwRglPVi5MI+MJj1bsWPhvNyV3uwG1Yo1t5+ZPuRXTlYwJCJyA88/7vNbDSM9C+dNw/7+Qd32RitCOd8FK/s2OJSwvWBKSDJeMKdUjilRUDBwRLZYCWpYPdHrZYPMv6Ipc1HTdmjsvLfd9gDmS4BaDXbVVIVx23WzLF98lceVzpxSH8goc8jqXHGlzQ31USTGUoarY2gtnDcNy69vAQB0v34c6Q+nwc2/oiknqBbrjQuLUSttKBZm+niPgxB7rGQeEhF5oVzOP3677rixYInbQpKE9IeZ6CEJaL9yvE8X643rBmu0NyaXtTebrqwGjO+/3s1Rvax2ZaXbYq/EW+r89lug8sXAEdliJcPE6oneSTaIlQvzwnnTst7D6sVcbwqT+oRcWx1BWFMaKSwB1VXjF1WzfTCquaPtzCkBGEmCcLUPK8ymyplROhg9B+KZ9qRloOdAHJdNn5zZT+V99QJdc5sbnO0A+V65DEIKyUrmIRGRF8rh/OOn6466j5gvsxpIlZEQmi+qt7SQzPjNRxmhkIR0WsaUuigumz4ZwPgxemz3YWGwBsi+Mbmpqw9mPUal/6wXjDLih5V4S5mffgtU/riqGtnW1tqE9avn447OOXmvFKW816a1i7B+9XzTk5zZyhSRsJS5MBq9pjISwsJ50zJBLr1Vv7QrQZwZTkIKSaipCmded82V0yyveqHXlrnNDXi4q08Y0HEaNBJ9Fm2tTVjZ0WJppTjl2Bh1MhVm0wGdFEInsVhvHGs29GDVur2+WHnEyveDspllHhIReaUczj9+ue5o+4hasy+ZnNPni4QlRCtyO2GVkRAWzJum28cdX7FMthQ0kjBx8zH94T+0qw7fdt0sSyu9pWTjfqi6/+w0Q+jMcBIrO1pM++SUyy+/BQoGZhyRY8WoH2OW8ZRMyTl3zfJpp+iEnEzJSKdTuKNzDgDYivSL2jK3uSEro8ep2uoIohVh031sa20yvSukLCGr7JOI+nGzDmexOqTllr7r9M6Sl8ehHAYhheaX1f6IKHjK4fzjl+uO2U2zQ78/hQVXThOWX9C7Ll82fXLO4wAsLQyj0HuaOrNM1B+1e/w2rV2U9X+nqxA31EcdlxUot36eXX75LVAwMHBEeSlG/RizQtWik6XTduqdeJV52RURyXbKt7Ytazb05F3YujISwueunWl5H806CNVVEdNV3tSdTLP3M+uQenHhL8f0XSdTDLw+DuUwCCk0P632R0TBUg7nH79cd8xXwB2f2q/OnlGyhpX+zh2dc3JudmqvzWs29FgOGtlps3pbRnUqRUTH2ukqxImxFGK9cdt9knLs59nll98CBQOnqlHJ0jspunWyNJsCNJpMm84Pt7INp3cFlERnJym9ZlP+1EUQ9abXqTuZRu9n1iHVpnpr06mdKsf0XSd3lrw+Dla+H5RNmTLKtHwiKrRyOP/45bpjpb+pvt5a7e9op6S7mT0SknL7t0Z1KsPS+PQ6NaNjbVTOQs+Z4aSjfl859vPs8stvgYKBGUdUsry+a5bPhcdKZ0K5UDs1qSqMB7/a7ui1SgfRyipoVqb6aZ+jrAhXUxVGMgVs3NGHjTv6hKvNeVWosxzTd53cWfL6OBRjymo54Gp/RFQspX7+8ct1x+rULOV6a6W/I8qicVNaBjY/exBA9nEU7UNIAlbdNCfzHDvH2m720WgyjY07+rC9u9/yZ1mO/Ty7/PJboGBg4Ig85eXcY69PllYuPLXVEYyOpR0Fr8zmxpvRy3bSI/os/vqmOZaCb1Y6mdrnxHrj2PzsQSRV+dVnR1LY1NWXeT7g3YW/HNN3nQRLC3EcvBiEqL+vjVOqcfPVl7IjREREAPwR/FK2v23PEcPl6pUsHyv9nXz7hoBSgDuk209MpmRs23PEtB+Wlif20cmxNistIaJkYR09dkpYG0pNr38TkoBV6/YGJojih98CBQMDR+SZQsw9tnuytBPIMqvbo9QVApwFr9wIjFil91ms7GjByo6WnGLd27v7sXFHX14X3e3d/VlBI0VKRtbdNSuBjRdefQePdPXaOsblUMdBy0mwtBSPg/b7OnByOHB1C4iIKJffiiEr/dBYb1x3iXulLma0IozEWO7f1f0dJ31DdaBIe0z0gjbqQJfXN5jsFt4eTabx/L7jmf/rjR/0Mr6UTPog1jwi8hIDR+QZr6YgOWUWyNJ2RpTVzvTSd+df0ZTXnRgnK1io2Rn4G30W61fPN0yR3rijD0ePncLy61tstc9o39R/MwtsxHrj2LrrcKazZbUjUK7pu3aDpaV4HPx27iAiIndo+1q339SK1osnW36tX4shqwNIojIARllEc5sbMv826xtuWrvI9eBZPjeYrLRlWXuz6Wq+ZkR9AL0yCWavIyJnGDgiz/ht7rFZET1tZ6TnQBzzr2jKpMqqpT9cKeOy6ZMdX4ycLlsKjE+Rs7Ndq5+FXor08/uO295Xo86PnRpK27v7c+7QWe0IMH13XKkdB7+dO4iIKH+iwM9DT7yBFUtmWbpGlcJNhbbWJttBkv39g5l/GwVZlL6T3jVdFMSpm1SB0+fGcp5bUxXOajNg/waT1UBeW2uTbjaWHWarJttZbZmI7GPgiDzjtxozRoNRvc7I/v5BrF89X7iqRb6dFatz47XUU+SssvpZmK3OZXflNm2NI2B8hQ47NZQYRCgsP0wD8Nu5g4iI8ifqayXGUpb7F6XQH4j1xoWZL0bU7W9rbcLRY6eypmoB1leo1QZxrv3oDPziv9+GuisWloDbrpuV9XonN5jsBPJuu25W3llHZn0A9h2IvMXAEXnGb7VVjC4oZp0Rrzorba1N2N7dLwwcKR2PyoiEsZQMWc6dImdFrDeOkVFxYGpwKIE1G3oywQErx8IqUWBMtKqaGXYE8mc1GOSXaQB+O3cQEVH+8u1fFLo/YPdGitGy9kZqqyOZG5TKdi6bPtnydVtv5bLRZBq/OvQeVt00x/J+2NlnO5+nWSaW8tnqlYqw0gdg34HIW+H77rvvvmI3wq5z50aL3YSiqamJlsz+z5hai4bzqvB2fAjDifGCfZ+7dqbjAWi++143qRK/+d0gUqorupK9o7RRq7Y6go6PX4KX9h8X/r2hPorFH73YcZsA4CfPHRU+LgO4o3MO3jg60WYZwPH3z6LhvCrMmFpr+t5KJ2ZkVH863HAihd/8bhAN51Vh9h+dj9eODAifpxwLO2ZMrUXHxy/B1CnVeDs+hD+cHcPb8SHUTaq01H5g/HPrffMD4edm9T2A8WPxwM/ewE+eO4qX9h+31YZiy+e7r3wHlOCd+vPW7v8DP3sjJ4iZSst4Oz6U9/fcDu25o3FKNW795OW+mYpQSKV0zneDJEmYNKmy2M0gHcPDo5BtDopLXdB+g17S60spfzO7Lhv149y+ntu5diq++9iruv2t2ZdMxsmhEfz/7d17dFTl3S/w7yRDkoEECCFpag1KOWIkBaSUaiSUSzEQkgAiPYI9gPL6Uo9WemiX9bJqZbVKUdpFi0pXpYhYC4JWi6GAQlMphCxbUaECoqKoLAnGFJqETC4zs88fvHuYmezrzL7O/n7+Igmz59nPs2c/v/nt55L48cnw+RAKRXD+f+pFfJ+rrxiMxdUjMKtiKCrHDZF8z8QySgl2hnDnnJGoHDdE8VjJnLPe2Fju//fLyYQ/MwPBrjD6ZvsxftQluPqKwbq/Pxj9vUMr3iPMxfo1V2z9qsVgHHFEpnLS2ipqc7ilplUFO0NoPNJk6lMMpSdoqc7n17qtq3hMpfMRBEFyAXGl7VKldhnRO4qlvKwY/fNydO+qFsspI2nsoOcactI0gNh7R2FhHpqb2ywvAxERGUdpbUct/bKVmz1s2n1cV/zVeKRJcQ2fz88GsbhmRK+YSBAEJNaG1jhPS4w3OD+g+PdYm/e8p+uc9cbGUv8/0wd09URwvvPiCH9x199Vd4xXLbPUCCktryMi/Zg4ItdIZkv2RHKJLHHhvlA4vtMXt44XOyG9w4ZT3S5dbliv1i/yer7wxwZtUs53hnslX5S2S01M1sTSuz7UpLElcbuuNB5p6jWsW+lYblhQ0yx6kkGcFkhERGZJTPwk0tIvW/FAUikJJNenihutyGlp7YqWOzY2khvApyV+U/s/Wf4MLKy6SvU4wIVzlhu5JPc+WhJ5iTFx7KYzBf2z0dUT7vW+WuMzLz0UdML6k0RMHJErJLslux5qQYKWYCWZTkyp45ULrrR+kVfb1jVWhk95u1i1vwPxnb3ak7BkR7EkU8dOGkljNT3JIK4PQEREZhJjKSfvgKWUBJKLv9TKLb5O60jw2F3PlI6ptHvtnInDMGlsCZqb21QTD8mcM9A7ht28573oqKrcgB/BzlB0YW5xx+JFVaWG7ISm9lAwXZItXkqQkbMxcUSukMqW7FoZMdoi2ZEtckmpVL/IjxpW0GtnDgDw+RC3TkWWP0M1kNG62KPaguKiZEexJFPHXh5Jo+casnIaQKx0Ce6IiOgipXu7k/tlpfhFLv5SSuLE9rlaE2M+n0/1/8j177GJGUBb4kGpXIkbqcRKPHbs6CGpEUyJ8Voq14HSQ8F0SrZ4edQ8OQsTR+QKVowYSSZJkxgUGV3O2C/y/27twiCdX6oPn2iR/H2/HD+y+2TGBXNyo5v0Ejt7pe1otSS/Yuu2MD+A2RVDUV5WnFQde3kkjd5kkNXrkhkR3Lk18eTWchMRqVG7t8utdzRqWIEtZY29F+cG/JJJj9yAX/YeLXc+ibvJah0J3h4MqU7J19q/yyUe1tUdja5vqVYuub5Z6wiqxGOJUonPzFwj1Em8PGqenIWJI3IFK55M6f2CLRUUyUmlnOIXeaUFguW+gMqVqT0YwpoffKvX7+XWJNJDfDKlNEIp8WlYosS6bT4bjAYsyVwLdo2kcQonLVKfKNXgzq1PFd1abiIiLdTu7eVlxfjg1Lleo6Ib/tWE/3XpQMvug1L34kwf4M/0xW2YIu7eJicxzsgN+CEIAs53hqPTwJQSZlJiR3DL9Q9K/XvjkSb8eX+jpoTQ+JHFaPhXk2K5pPrmZJIX/XIy45JiieseaY3PzFwj1EmcPDqPvIWJI3KFOROHxa1xBJgzYkTPF2ytT1nMHtki9wX0g1PnZF8j1dmI571++1HN09LkqCXR1JJGUmWI3fktmadTTk6eeFmqT9Lc+lTRreUmItJCy71dalS01fdBqXtxWAD69cnAgH5+XckMMc7Q8mBATDD1y8lEV0+k166+ifTWi9IGJVLHPnyiBYuqSlVHnyf+Tc9amoD0LmqJ6x5p3QDFiDVC3TDy18uj5slZmDgiVzBiS3ajqSVHrCqn3BfQvW/3XttIJDdfXWrHDyNpmfq3cee7somr2F1JnNTR6wk83BCkWCnVJ2luHcLt1nITEWmh5d7uhPug3Hud7wzjsf83UdexYvv3RImjrZR2HjOiXvROIRPjK7Fc//dXe3utLQpcmK4XS88IKi27qBk1GldLssUtI3+dGPeSNzFxRK6RuCW73ZSColV3jDf8/V47+Klk4kwukFAbNSTXQSZ2UEprFWmhJ4mmFuiIAaeTRg/pCTzcEqTIMSPpleqTNLcO4ZYrd4bvwi4zYv3OnJRnQ+nkMfFJJI2fjXhSm3Mk3tudcP9WStTILQgtRcsIH7n3SYxpxNE2UmXVSm/yLXb6WG7AL5k0AgBBiA8IE2NGHwCpkFGMjdV2UdMzGlfPyC65neTcMvLXSXEveRcTR0RJsnLoaOORpriperGdo9IXULWEj9hBAr033PkQAAAgAElEQVQ7VzH5JRUMZfkzMH5kseSObbH0JtGUAh2xbtWCc6uDdz2Bh5uClERmJb1SfZLm1iHcck9pIzHbFm/c+S765+U4JmHu9sQnkVn42YjXeKQJDf9q6vX78SPjv/xatQyBEqURM1raUWmUUSKtiR+9/Vpi3DNqWIFsDJgb8KO7J9LrfM93hnG+80I7SC0MHvv/EsUmNeRiRrHsaslCPaOttKyjpfT5c8KINyI3YeKIKElWDh19ce+JXk9/1Nb80bLQIXAxMJIKeMX37g5FokGIeJ4AFBNHyQR/skmwDB8WVZUCgGJwLhW8r6s7Gl0kMXF3EyPoCTycFKToTbCZmfRK5UmaW4dwaxnZ1x2K4Jmdx/DI98ptKGFvbk58EpmJn414cqOHE9c0csIyBOIi3Xvf/kwy0aLUjnrWEdITE0n1a6OGFeDFvSewru5oXD1JxT1ysVnsAt+bdh+XTAKpyfDpL3tsm6olxbSOQms80qQpppJKqokLccsl15w+YpnILkwcEaXAqqGjSp2jXCcNAP84dgbd//PgSG74cIYPkgHv7+uOIjNmV5GIcLFzLy8rxt1rGxTLnPhkUQu5gOKu/301yoYMxN1rGxSDc7Wpbuc7w3hq+4UkklHtluX3oTvUu2Yzfei1uGO/nEzJQK1fTqYhZdEqmafjTkp6JXLrEO7YcssN3//ibNDKIily8jVAZCd+NuLpqQ+zliHQ+nBEHB2lNEJb7ny0riOUmOjRUi6lUTyxfbbWMmT44ne03bT7uOprpGhZuiCx7IkJr9hFuMXd59bVHcWLe09g1LCCXg895dYmkiMmftSSalLn4oYRy0R2YeKIyAXUnsBILbSYmIDJzPRBiAiI3bgjy58hG3AIQK9dPmKTNGoBsZYtdaUCqNiAQvzdpLElaG5uUw1GtQTpYQGGPgXukdkJJSz03krX55N+VCf3e7PofTreeKT3lAMRn8wZQ+4zPjg/YENppDlhPRIiJ+JnI57d9aHn4YiWxItcudVijix/Rq/dwpKZ0qjUZ2tNTkaE+PdIZrQRoK8N5UaBi8eZPOaSuCRRS+uFHdbGjyyOjgrSujaRKDbxoyepFjui3o0PooiswMQRkQvoXQdAqrMMhQXkBvzI7pMZ1xnrCTyAi4GS2hasasP05QKoRVWlsusiqQWjWreFTeUpcGKyS9C4cLhS8KK0noAZ9D4dF9fBksInc8aQG223sOoqG0sVz63rSRGZjZ+NeHbXh56HI1qSP3LlVoo5xNHcYv8pNypay5RGpT5ba9xjRNJObxsqJW7kptR1hyI4fKJFcX1MpfONTdTpSao9de8UTf+XyMuYOCJyAb3rAMh1lu3BENqDIeQG/HGv1zpHH7gYfGjZgjWxHLFJF7k1XZQCKLVgVOu2sHoDKLnFL42ahmD1U2m9T4OVzpNP5owhN+VUHG3nBG5dT4rIbPxsxLO7PvQ8HFFKvKiVWyrmyPQBvoyL0/xjRxUlO6VRaRMUqd3rEkklfHIDfl0PrcSpbkDvafh6Y1E1ydZHQf/suLJYmVQj8gImjohcQs86AGqdZXswhA07jgG4GOCt335Ude56bPCRGBjKlUOUOMJI7r20JCnkglEtZcr06Rslo2fxSzX9cjLRExJsfyqt92mw3dMOvMINazW5oYxEduBnI56d9aGnz5LrD2NHrsiRikm6esK9EjLiQzGl2KzxSJOuBBVwIY5q+FeT7FqLIqk1J+dPHY4NO47FLUngz/RhwqgvS64xpGWDkkRaEzdSr1OiNYbR8jDRyyMDifTKXL58+XK7C6FXR0e33UWwTb9+2Z49fy+fO6Dv/PP6ZuGdD1sQVsgERQTg46ZWVI4bgpKiXBTmB3q9JtMH9Av40R2KoKB/NuZPHR4XHJQU5aJy3BAUSbxW3L2jpCgXALDmhUOanm7lBvyouvYy2XMX33NWxdBo2WPF/r0oP4D3Pj0bDRr65WRiYdVVuoJZreXO8F1YFyrDB5ReNhCt57t71ceCaaW4+orB+LipFcGucFydNh5pwpoXDuG5v36A/Yc/Q17frOi5GX3tlxTlomBAjmQ5pEhdT4ntayYvf/a9du4+nw99+2bZXQySEQx2a56emy689hm0mhn1q6fP0tsfJvbVV10+CIurR0Rjkudfk57aHewK4/9UXok332uW/LsYj0kRy/j2+829NjkJRwQEsv3Rf0tp6+judeySolwMHhiIO++brx+O6vLLZetDKh4KRwTZsmuJRRNpiS20tpnU/7t2xJfQ1tGtqa214j3CXKxfc8XWr1oMxhFHRGlIy8gbIH50TypDy7W8VutTJ0HhW4neLeSNeOKpdZhz4nx8pbImlinZBTNToadu7J52QEREpJXePktrf6ilr1abRiUuDp1ILdZQem17MIT/rh2h+9hy5y33e71T7bSMaJ885hLFhbDlaG0zjgQkMg4TR5QUvV/gyXpiZynORZeSOBw4lQ5W7bVahyzL7fRhR3IFUC+3OMxZ6jOhtLhjLLkFM9dvP4p1dUdRmB/A7Iqhtn7GGHwREcljXOQsalvCJ9M2Wha3VptGlcrUb7WklNzDwn45mZrXJUr2/eUoJbwAYMG0Ut3lICJ7cKqayzhhuJ74BV4crhrsCuOdD1tQMCDH1GkrTjh3O/3z3c+x6o8HJacyKcnrm4VDEsOb/Zk+3Hx9/HBgpelSqdI6ZLmgf3avIc/9+mXjFxv/qWuItFGUyi0Ocwag+plQqtvn/vqB5HuL79jRGbLkM2YlPdealz/7Xjt3TlVzNk5Vk2ZXXORUTrq/G9k2cn11sCuMbfs/ik5dk5uSDqQ29VvttVJ/z8zwIRwRcL4z+fMX21MqaaSl7HUNH/WKQUX7D39mSsxpJa/101Zj/ZqLU9XIVMluJ0rJazzShGd2HUdXz4XROHpG24h/37T7eHQ0T27A32tet9kjehKHjucG/Ah2hhCzLqPiIoVqQ6TNetqrZcj73WsbFD8TanWrZTRWOn3G7Bo9RkRkBsZFFznt/q7WNnpiB7W+WjzXRVWlsiOOzVwWQOrv3aEI2jp6ZM9fjdIGIVrLrvS8UKxPu68TIlLHxBHplux2opS8F/eeiCaNRHo6fi3TjKwIfBPLYUTAVtA/25Kkl9JxlD4Td69tQFdPWLFutez8ofQ+bsMvWUSUThgXXeS0+7tS2+iNHbT01VrO1cxlARL//l8r6yX/n9ZrU6o9Aem1HeVoXaqAcQCRs2XYXQByH7m5zNya2zxWBKV2BL7lZcVYdcd4PHXvFKy6Y7xisDBn4jBk+eNvWeIIJaVA1QpK135La5fsrmxi3ZaXFWNRVWn0OBk+/e/jJvySRUTphHHRRU67vyu1jd7YobysGONHqic1nNSXDc4PSP5e67VpRHtKxW9634+I7MfEEemm9AWezGFFUOr0wDcxuVLQPxuLqkpRXlasObBpPNKEu9c2YPHKety9tgGNR5oMKZueoChWbN3GJtH+q2ZEWn/GnH6tERHpwbjoIqfd35XaJpmkyOETLarv6aS+bGHVVUlfm41Hmgx5kCUVv+UGpCe9OKnuiCgep6qRbtya2xxK07bmTBwWt8YRYHxQqrYTiBPIDdFWGgZ999qG6DmYNZ0t8TOhhVLdJh7PCbuqGckN1xoRkVaMiy5y2v1dqW3k+my1UcRKzDjXVNZwnDS2BK1tnbpfL07jk1qfKJlzlFqqQOk64S6FRM7DxBElhVtzG0ttnn15WTH65+Xg6e1HTOtE3Rz4Kq07INZlVp8MU9ddENtJ3PJWidTi5HLHA4DCwjw0N7elXEancPO1RkQkhXHRBU68v8u1TTJJLqUHVWacqxFrOCZzbcqtbQQA40emfq0rXSdOW2CdiC5g4ojIAbQsJjlpbAnKhgw0tRyJHbk4z9/pHbXaiJ/uUEQ2ADJ6VzYti2dm98m0rU7NeIqXzDH5JYuIyF5m7kbqpPu73Hkmk+SSSzaJU+fNKHMiKxaRTnW6nhZy14nTFliPJXUtzZyUZ2uZiKzCxBGRA6S6+KBRwZ+bn/KIAchimR1ElNz1673o6okgFL4wJjuV89Yybc2uxR/NaF87rxkOZSciSo5Z/YHT7slaRnTrKaMVI6qkpnElMjuOUBpZJe5IZ1bbOi12EsldS/3zckx/sEvkBKYujt3e3o6amhqcOnUKAHDgwAHU1taisrISq1evNvOtiVwllcUkxY5M7FDFjiyZhZ/t3p3MCHJ11i8nU3YB6/Od4WjSSJTKeYsLXTttkVAz2teua8bI654oHTEGIyVG37udek82o4/SsyNsMpSmiYnMjiPU1jAys22dFjuJ5K6lZ3Yes6lERNYyLXF06NAhzJ8/HydPngQAdHZ24v7778fatWuxY8cOvPPOO9i7d69Zb0/kKqnsyGJkUOTUpzx6yNXlzddfGberhxapnrfTdtoxo33tumbSIclJZBbGYKTG6Hu3U+/JboxrtJTN7DiivKwYk8dcIvt3M9vWabGTSK5dvjgbtLgkRPYwLXG0detWPPjggygqKgIAHD58GJdddhlKSkrg9/tRW1uLXbt2mfX2RK6itNW8GiODIqc+5dFDqS7Fp4RapXreqbSrVo1HmnD32gYsXlmPu9c2KD4BNKN97bpm3PhlgMgqjMFIjdH37lTuyXr6Mb3cGNdoKZsVUwAXTCvFf9eOkP27Wf2tFbFTMuTaZXB+wOKSENnDtDWOHn744bifP//8cxQWFkZ/LioqwpkzZ5I6dmGhtxch8/L5p/O5z5yUh5mTrlD8P1LnX5gfQLPE047C/IDu+rqlpgyPP38IXT3h6O+y+2TilpoyyWO9dvBTPLPzGL44G8Tg/AAWVl2FSWNLdL2nVnrORa0u5eosltJ56xFbFrG+fl93VHd9ydb/ruPR9mpp7cIzu46jf16O5HH1tq8WZhxTSuKxjLzunS7dzofMZ1YMVlCQm3LZ3CgdP4NG37uTvSfr7cf0sqqPMpJUmWPp7edSOc+Zk/Lw5/0fJd3fKsWJSn/TEhNbTe5aWlh1lWOvpXTB+jWX1vq1bHHsSCQCn88X/VkQhLif9Uinban1SrdtufXw8rkD8uc/u2Ko5A4fsyuG6q6vsiEDsXD6lb0WfSwbMrDXsRIXCWw+G8RjW99Ga1un4U+FjG57qTrL9AGBHD/agyHF805WKvUld/5Pbz/SK7Ds6gnj6e1HJBdq1NO+WplxzERS52/kde9kXrvvZWT4PJucMJNRMVhLSzsiEUH9P6aRdP0MGn3vTvae/MzOY7r6Mb2s6KOMJpZ585730B4Mxf1Nbz9nxPWbbNsqxT0ALIshjSJ3LU0aW+LYaykdpOs92Cli61ctBrMscVRcXIzm5uboz83NzdEh1ESUPKN3+NC6w4iTt0tVY8WuKInMqK9kpgaYsU2yHVsv29GGRG7FGIykGHnvTvaeLLc+jJHToOzoo1IlltkJO9Ul27Zq6165MYZ047VEZBTLEkejR4/GRx99hI8//hiXXnoptm/fjhtvvNGqtydKa3Z0ZG5fY8bqOjOjvuS2y3Xy2g1GYgBHpA1jMLJCMvfkwTJT3LzSj6lxSj+XTDmSiXvcEkMSeZFliaPs7GysXLkSd911F7q6ujBx4kRMnz7dqrcnIoM5IWnhhCdxWplRX3MmDpMcPm73ziNWcVP7E9mJMZj7eOX+trDqKjy29W3P9mNGceL1ohb32B1DEpE+pieO6uvro/8uLy/Hyy+/bPZbEpEF7E5aJM6db2ntwsad7wKwZrcRvcyoLz3Dx50YVKbCbe1PZAfGYO7kpfvbpLElaG3rTKv+yWpK18vMSfoWFTYyVlCLe7z84IvIjSwbcURE6cXsNWZig5fC/ABmVwyNO7bVayylGkyZVV9aho/r/RLihiST29bYckOdEpEzuO3+liqnTMfSysj7uRHH2rT7uOz1omdnMqMTllriHjv7RfbLRPowcURESTMr2PvDK+/ib299Fv25+WywV/Bi5RpLRgVTifXVeKQJd69tMD1o0fMlxC1Put20xpZb6pSInMFN9zc3SiVhYOT9PNljxZa/X04mzneGJf+f3uvFjISlUpxoZ8KQ/TKRfhl2F4CIKFbjkaa4pJEodicOQH4evBnz49V2BkmGGLSIgZ0YtDQeaUqprFL0fAkx41y1EhNpi1fW4+61DYp1YWX7p8rOOiUi93HT/c0sevoDvcdNpe818n6ezLESyy+XNAL0Xy9eSliyXybSj4kjInIUpU47NniZM3EYsvzxtzCz5sebEUxZGbTo+RJiV+CoN5i3sv1T5aVgnIhS56b7mxnMfLCSat9r5P08mWNJlV+O3uvFSwlL9stE+jFxRESOotRpxwYv5WXFWFRVGv1dQf9sLKoqNWWIsRnBlJVBi54vIXYFjnqDeSvbP1VeCsaJKHVuur+ZwcwHK6n2vUbez5M5ltZy5gb8uq8XLyUs2S8T6cc1jojIUeS2bwV6Pz2zan68GTuiqW1Tq4faeg16Fua2a7e8ZIJ5tyyoavcOhETkPm65v5nBzAcrqfa9Rt7PkzmWUowUe4z5U4frLo/Zm57YLXFtKH+mD6GwEP07+2UiZUwcEZGjSAVSADB5zCW2BS9mBFNGBZ9aF3jU+iXErsDRyESaHlbsqpLuwTgRkV7ivfffrV0YlHBPNLM/SLXvNfJ+nsyxpMqf6QMCOX60B0Mp9y/pmrBMjJXOd4aR6bswMsuIeiPyAiaOiMhRpAKpW2rKUDZkIAD7tk81OpgyKvi0eheUVCi1XSrBfLLXhJW7qqRrME5EpJfavdeIByty/YIRfa+R93O9x3LDgwi1PtmOOE4qVgoLQHafTKz5wbdMfW+idMHEERE5TmIgVViYh+bmNldvn6oWxCbLLQs8qrVdssFwKteEGUk3t7ErEUtExnPL51nt3ptqckRLf5N4LLfUHeDsBxFqdW9XHOeWWInIyZg4IiLXcOsXfTMDJbumeOmlpe2SCYZTuSa8Hki6ORFLRPHc9HnWcu9NJTmit19wU905nVrd2xXHuSVWInIy7qpGRK7h1i/6Zu4Q45ZdUMxqu1SO6/VdVcy8LonIWm76PJt979XbL7ip7pxOre7tiuPcEisRORkTR0TkGm79om9moOSWbZvNartUjuv1QNKtiVgi6s1Nn2ez7716+wU31Z3TqdW9XXGcW2IlIifjVDUicg23bmtu9hBpJ693INLbdrHrTRTmBzC7YqjkOaZyTbhhkVEzceg+Ufpw0+c59t4rtataqvT2C06vOzetv6RW93bGcW6IlYicLHP58uXL7S6EXh0d3XYXwTb9+mV79vy9fO6At89fPPeSolwUDMjBx02tCHaFUdA/G/OnDnd8IJDXNwvvfNiCcESI/i7Ln4H5U4ejpChX9fXp0PZ62k5cb6I9GAIAdHSG8M6HLSgYkNOrvlK9JkqKclE5bghmVQxF5bghmtrDSma2farXpRl8Ph/69s2y5b1JXTDYDUFQ/3/pxC33Xyd+npWI997bbhiF8WVfMrSMevsFJ9ddYn8Y7ArL9odSrL5+1ererXGcErfcI9yK9Wuu2PpVi8E44oiIXMWNT4y8PrJFpLXt9C6e6cZrwgl4XRKlD36e4+npF5xcd27cFESt7tlnE7kTE0dERBZgoKQd15uwDq9LovTBz3PynFp37A+JyCmYOCIi8iAnr5ng9PUmiIiIrJBMf6h1jUAiIj24qxoRkceIaybEbo+7cee7aDzSZHPJLvD6bmdERESA/v4wsX9vPht0VP9ORO7FxBERkccorZngBInb5hbmB7htLhEReY7ebeSd3r8TkXtxqhoRkU5OnualhRvWTIhdb6KwMA/NzW1xf3d7GxARkXMZ3cekcjw96y+5oX8nIndi4oiISAdxGLj4RE+c5gXANYkLt68hlA5tQEREzmR0H2Nln+X2/p2InItT1YiIdEiHYeBuX0MoHdqAiIicyeg+xso+y+39OxE5F0ccERHpkA7DwMUnnG6d6pUObUBERM5kdB9jZZ+V2L9zVzUiMgoTR0REOqTLMHA9ayY4Tbq0AREROY/RfYzVfZbaGoFERMngVDUiIh04DNx+bAMiIjKL0X0M+ywiSgcccUREpIPbp3mlA7YBERGZxeg+hn0WEaUDJo6IiHRy8zSvdME2ICIisxjdx7DPIiK341Q1IiIiIiIiIiKSxMQRERERERERERFJYuKIiIiIiIiIiIgkMXFERERERERERESSmDgiIiIiIiIiIiJJTBwREREREREREZEkv90FSEZGhs/uItjKy+fv5XMHvH3+Xj53gOfv5fP30rl76VzdyKvt49Xztgrr11ysX/Oxjs3F+jWXWL9q9ewTBEGwokBEREREREREROQunKpGRERERERERESSmDgiIiIiIiIiIiJJTBwREREREREREZEkJo6IiIiIiIiIiEgSE0dERERERERERCSJiSMiIiIiIiIiIpLExBEREREREREREUli4oiIiIiIiIiIiCQxcURERERERERERJJckziqq6vDjBkzUFlZiT/+8Y92F8dyCxYsQHV1NWbNmoVZs2bh0KFDdhfJdO3t7aipqcGpU6cAAAcOHEBtbS0qKyuxevVqm0tnvsTzv++++1BZWRm9Bnbv3m1zCc3z+OOPo7q6GtXV1Xj00UcBeKf9pc7dS23/m9/8BjNmzEB1dTU2bNgAwDttD0ifv5fan8hpHnnkEdx77712FyPteDGutVp9fT3mzJmDqqoqPPTQQ3YXJ608//zz0Wt31qxZGDt2LH72s5/ZXay0sm3btmg8/Mgjj9hdnLT05JNPYtq0aaitrcVvf/tb9RcILtDU1CRMnjxZOHv2rHD+/HmhtrZWeP/99+0ulmUikYhQUVEh9PT02F0Uy7z99ttCTU2NUFZWJnz66adCMBgUJk6cKHzyySdCT0+PsHjxYuG1116zu5imSTx/QRCEmpoa4cyZMzaXzHwNDQ3CTTfdJHR1dQnd3d3CwoULhbq6Ok+0v9S5v/rqq55p+9dff12YN2+e0NPTIwSDQWHy5MnC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tw7bt2+HIAiIRCKYMGECli1bhs7OTixYsAAA0NHRgTNnzmDo0KEAgOuuuw733HMPenp6MHnyZJSWluL3v/89AODJJ5/EX/7yFwDAJ598gvz8fOTl5QEAHnvsMQwZMsSKUyYiIiJyvCuvvBLDhw9HRkYGfD4fgsEgcnNzsXz5cowcORIvvvgi7rvvPtx5551YunRp9HWCIGDq1KkIBALYvn27jWdARFZi4oiILLdz507s2bMHW7ZsQU5ODrq6urB06VI8/vjj+OEPf4ht27YBAF5//XX8/Oc/j/4s2r17N0pLS/HOO+/gxIkTGDZsGJYsWYIlS5YAABYsWIDvfve7mD59uuXnRkREROQGGzduxKBBg6I/r1+/Hg899BC2bNkCALjkkkvw8ssvxyWO3njjDXR2diIQCFheXiKyD6eqEZHlmpubEQ6H0dnZCQDIzs7GAw88gKlTp2p6/ebNm/Htb38bM2bMwMaNG80sKhEREVHaC4VCOH36NAYMGBD93fDhw9G3b1+8+eab0d+99NJLmDlzph1FJCIbMXFERJa74YYb0L9/f1RUVOCmm27CypUrcfr0aYwaNUr1tR988AHeeustTJ8+HbNnz8a2bdtw9uxZC0pNRERElD4WLVqE2tpaVFRUYNq0aQCAX/ziF3H/R4y1ACAYDOLgwYOYMGGC5WUlInsxcURElsvLy8NTTz2FnTt3Yu7cuWhpacGSJUuwatUq1ddu3rwZkydPRn5+PkaNGoVLL70UW7dutaDUREREROlj48aNqKurw+9+9zt0dnbimmuuQUFBQdz/qa2txe7du9Hd3Y3du3djypQpyMzMtKnERGQXJo6IyHLr1q3Dm2++iZKSEnznO9/BqlWrsG7dOmzatEnxdR0dHdi2bRsOHjyIKVOmYMqUKWhubsazzz6Lnp4ei0pPRERElD7Kyspw33334d5778WpU6fi/lZYWIgRI0bg73//O/785z/jhhtusKmURGQnJo6IyHKdnZ341a9+hXPnzkV/995772HEiBGKr6urq8PAgQOxb98+1NfXo76+Hnv27EFHRwd27dpldrGJiIiI0lJNTQ1GjRrVa6oacGG62oYNG9DW1obhw4fbUDoisht3VSMiU3V0dGDMmDFxv9u8eTN8Ph/mzZsHn8+HSCSCr33ta/j1r3+teKzNmzfj1ltvjRsi3b9/fyxYsABPP/00amtrTTkHIiIionT3wAMPYObMmdi3b1/c76dOnYoHH3wQy5Yts6lkRGQ3nyAIgt2FICIiIiIiIiIi5+FUNSIiIiIiIiIiksTEERERERERERERSWLiiIiIiIiIiIiIJDFxREREREREREREkpg4IiIiIiIiIiIiSUwcERERERERERGRJCaOiIiIiIiIiIhIEhNHREREREREREQk6f8DB/JCQBlla9IAAAAASUVORK5CYII=\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
"source": [
"plt.figure(figsize=(20, 5))\n",
"\n",
@@ -2307,7 +1798,9 @@
{
"cell_type": "code",
"execution_count": 18,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"X = pd.DataFrame(np.c_[boston['LSTAT'], boston['RM']], columns = ['LSTAT','RM'])\n",
@@ -2324,19 +1817,10 @@
{
"cell_type": "code",
"execution_count": 19,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "(404, 2)\n",
- "(102, 2)\n",
- "(404,)\n",
- "(102,)\n"
- ]
- }
- ],
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
"source": [
"from sklearn.model_selection import train_test_split\n",
"\n",
@@ -2359,25 +1843,10 @@
{
"cell_type": "code",
"execution_count": 20,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "The model performance for training set\n",
- "--------------------------------------\n",
- "RMSE is 5.6371293350711955\n",
- "R2 score is 0.6300745149331701\n",
- "\n",
- "\n",
- "The model performance for testing set\n",
- "--------------------------------------\n",
- "RMSE is 5.137400784702911\n",
- "R2 score is 0.6628996975186953\n"
- ]
- }
- ],
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
"source": [
"from sklearn.linear_model import LinearRegression\n",
"from sklearn.metrics import mean_squared_error, r2_score\n",
@@ -2415,19 +1884,10 @@
{
"cell_type": "code",
"execution_count": 21,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
"source": [
"# plotting the y_test vs y_pred\n",
"# ideally should have been a straight line\n",
@@ -3205,7 +2665,9 @@
{
"cell_type": "code",
"execution_count": 22,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"import numpy as np\n",
@@ -3715,7 +3177,7 @@
"source": [
"## Covariance example\n",
"\n",
- "Suppose we have defined three vectors $\\hat{x}, \\hat{y}, \\hat{z}$ with\n",
+ "Suppose we have defined three vectors $\\boldsymbol{x}, \\boldsymbol{y}, \\boldsymbol{z}$ with\n",
"$n$ elements each. The covariance matrix is defined as"
]
},
@@ -3724,7 +3186,7 @@
"metadata": {},
"source": [
"$$\n",
- "\\hat{\\Sigma} = \\begin{bmatrix} \\sigma_{xx} & \\sigma_{xy} & \\sigma_{xz} \\\\\n",
+ "\\boldsymbol{\\Sigma} = \\begin{bmatrix} \\sigma_{xx} & \\sigma_{xy} & \\sigma_{xz} \\\\\n",
" \\sigma_{yx} & \\sigma_{yy} & \\sigma_{yz} \\\\\n",
" \\sigma_{zx} & \\sigma_{zy} & \\sigma_{zz}\n",
" \\end{bmatrix},\n",
@@ -3757,7 +3219,7 @@
"\n",
"The following simple function uses the **np.vstack** function which\n",
"takes each vector of dimension $1\\times n$ and produces a $3\\times n$\n",
- "matrix $\\hat{W}$"
+ "matrix $\\boldsymbol{W}$"
]
},
{
@@ -3765,7 +3227,7 @@
"metadata": {},
"source": [
"$$\n",
- "\\hat{W} = \\begin{bmatrix} x_0 & y_0 & z_0 \\\\\n",
+ "\\boldsymbol{W} = \\begin{bmatrix} x_0 & y_0 & z_0 \\\\\n",
" x_1 & y_1 & z_1 \\\\\n",
" x_2 & y_2 & z_2 \\\\\n",
" \\dots & \\dots & \\dots \\\\\n",
@@ -3780,8 +3242,8 @@
"metadata": {},
"source": [
"which in turn is converted into into the $3\\times 3$ covariance matrix\n",
- "$\\hat{\\Sigma}$ via the Numpy function **np.cov()**. We note that we can\n",
- "also calculate the mean value of each set of samples $\\hat{x}$ etc\n",
+ "$\\boldsymbol{\\Sigma}$ via the Numpy function **np.cov()**. We note that we can\n",
+ "also calculate the mean value of each set of samples $\\boldsymbol{x}$ etc\n",
"using the Numpy function **np.mean(x)**. We can also extract the\n",
"eigenvalues of the covariance matrix through the **np.linalg.eig()**\n",
"function.\n",
@@ -3793,7 +3255,9 @@
{
"cell_type": "code",
"execution_count": 23,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"# Importing various packages\n",
@@ -3816,7 +3280,9 @@
{
"cell_type": "code",
"execution_count": 24,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"import numpy as np\n",
@@ -3910,7 +3376,7 @@
"source": [
"1\n",
"1\n",
- "3\n",
+ "2\n",
" \n",
"<\n",
"<\n",
@@ -4839,7 +4305,7 @@
"\\sigma^2 \\, \\mathbf{I}_{nn}$. From $\\mbox{Var}(\\boldsymbol{\\beta}) = \\sigma^2\n",
"\\, (\\mathbf{X}^{T} \\mathbf{X})^{-1}$, one obtains an estimate of the\n",
"variance of the estimate of the $j$-th regression coefficient:\n",
- "$\\hat{\\sigma}^2 (\\hat{\\beta}_j ) = \\hat{\\sigma}^2 \\sqrt{\n",
+ "$\\boldsymbol{\\sigma}^2 (\\boldsymbol{\\beta}_j ) = \\boldsymbol{\\sigma}^2 \\sqrt{\n",
"[(\\mathbf{X}^{T} \\mathbf{X})^{-1}]_{jj} }$. This may be used to\n",
"construct a confidence interval for the estimates.\n",
"\n",
@@ -4979,7 +4445,9 @@
{
"cell_type": "code",
"execution_count": 25,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"from numpy import *\n",
@@ -5119,37 +4587,11 @@
},
{
"cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Runtime: 2.15685 sec\n",
- "Bootstrap Statistics :\n",
- "original bias std. error\n",
- " 100.212 15.1357 100.213 0.149893\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/usr/local/lib/python3.7/site-packages/ipykernel_launcher.py:34: MatplotlibDeprecationWarning: scipy.stats.norm.pdf\n"
- ]
- },
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAEKCAYAAAA8QgPpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAAIABJREFUeJzt3XuclWW5//HPNZwGGEQGkLOAB0SyPDCesmwmy42Wsdtpyi7dmkT1s9Ry//bPalt5zFLL1DZG6TbdCR4zI80MHVNLbEAFUUEQFZCDyMlB5DBcvz/uh+00zmGxZj3rXofv+/Var1lrzbOedd0wM9e6D891m7sjIiKyuypiByAiIsVJCURERLKiBCIiIllRAhERkawogYiISFaUQEREJCupJRAzqzSzp83sOTNbYGYXt3JMDzO7w8wWm9lsMxuVVjwiIpJbafZAtgIfd/eDgUOACWZ2VItjzgbWu/t+wE+BH6UYj4iI5FBqCcSDxuRht+TW8qrFicCvk/t3A8eZmaUVk4iI5E7XNE9uZl2AOcB+wM/dfXaLQ4YBywDcfYeZbQT6A2tbnGcKMAWgZ8+e40eMGJFm2G3auXMnFRXlNW1Ubm0ut/aC2lwuFi1atNbdB+bynKkmEHdvAg4xsz2B35rZQe7+fBbnmQZMA6ipqfGGhoYcR5qZ+vp6amtro7x3LOXW5nJrL6jN5cLMXsv1OfOSgt19A/AoMKHFt1YAIwDMrCvQF3grHzGJiEjnpLkKa2DS88DMegKfBF5qcdj9wL8l908GHnFVdxQRKQppDmENAX6dzINUAHe6+0wzuwRocPf7gZuA28xsMbAOOC3FeEREJIdSSyDuPg84tJXnv9fs/rvAKWnFICIi6SmvZQgiIpIzSiAiIpIVJRAREcmKEoiIiGRFCURERLKiBCIiIllRAhERkawogYiISFaUQEREJCtKICIikhUlEBERyYoSiIiIZEUJREREsqIEIiIiWUl1S1sRKWB1deHrpElw8cX/+L1HH81/PFJ01AMREZGsqAciIrtnV8+lJfVayo56ICIikhUlEBEJmppg40bYtg127IB162JHJAVOCUSkXG3eDO7suXAhNDTAk0/C4sXw7rswbx7suy+ccUZ43j12tFKANAciUm6amuA734HnnoPx43ln8GAYMwZ694YuXcIxF1wA48bBX/8Kd98dvr/HHrBzJ3TrFjd+KRhKICLlpLERTjkFtm6Fmhro3p1tffuG5NBS9+4wYgQMHx4eb9gACxbAfvvB4MH5jVsKkoawRMrFjh3QsydMnAgPPRQSRCbMwq1fPzj0UHjlFVi1Kt1YpSgogYiUg5kz4eCDQxL56lezH4bq3TucZ+vW3MYnRUlDWCKlzB2uvBJuuCHMZfTo0flz9u4dbhs2wJYtMGRI588pRUkJRKSULVsGjzwCTz8Nw4bl9tzdu8OLL4YkNXRobs8tRUEJRKRUNTTAIYfAww+nc/5evcJw1nPPQYVGw8tRav/rZjbCzB41sxfMbIGZndfKMbVmttHMnk1u30srHpGysmABTJgAr76a7vvsSiKtreKSkpfmx4YdwAXuPg44CjjHzMa1ctzj7n5IcrskxXhEysOWLXDqqfDjH4clt2nr1SvcJk+Gp55K//2kYKSWQNx9pbvPTe6/DbwI5HgQVkTe5+674UMfgrPOyu/7Hn98eM93383v+0o0eRm4NLNRwKHA7Fa+fbSZPWdmD5rZB/IRj0jJ2rIFTj8dbr01XLuRT6ecEq5ev0QDCeXCPOUaN2ZWBTwGXO7u97b43h7ATndvNLMTgZ+5+/6tnGMKMAVg0KBB42fMmJFqzG1pbGykqqoqynvHUm5tLub2Vq5axSHnn0/DL3/Jjj59On7BokUANFZXU5WLwoljxtBt3ToG/O1vrPzUpzp/vhQV8/9zturq6ua4e00uz5lqAjGzbsBM4CF3/0kGx78K1Lj72raOqamp8YaGhtwFuRvq6+upra2N8t6xlFubi7a927fDscfCySeHOlaZSPb1qJ80idrp03MXi3uo5Nuv33urswpsr5Ci/X/uBDPLeQJJcxWWATcBL7aVPMxscHIcZnZEEs9bacUkUrKuvDL8wf7mN2NHErzxBrz+euwoJGVpXgdyDHA6MN/Mnk2e+w6wN4C73wicDHzNzHYAW4DTPO0xNZFS9JWvhBIlhXA9hlmo3tvQAAMGQJkNFZWT1BKIuz8BtDuL5+43ADekFYNIyWtqgnPPhSuugL59Y0fznh49YJ99YMUKOOCA2NFISnQlukgxu+22cCX4xIn5X3XVkcGDw23nztiRSEoKoL8rIlnZsgUuugiuuqrwkgeEmNxhzhx44YXY0UgKlEBEitVLL8GnPw1HHx07krZVVIRCi9/4RuxIJAVKICLFaOvWUChx6tTYkXRsyBB47TWor48dieSYEohIMbrwQrj66thRZKaiAqZNCyuypKRoEl2k2LzySihVUkzzCh//OLz1Vhh2Gzs2djSSI+qBiBSb734Xzj8fBg2KHcnuefhhOPPMMLEuJUE9EJFikZQeYc2acH3FI4/EjWd3ff7zcPnl8MADUOC1siQz6oGIFAt3WLsWBg6ELl1iR7P7Kirg4otVrbeEqAciUizWrQvzH9XVhXndRyY++1k49NDYUUiOqAciUgyammDJklAepBDqXWXLLFyd/oMf6Ar1ElDEP4kiZeTPfw7DVv37x46k8yor4cEH4a67YkcinaQhLJFCs2uyvDn3sE1tsQ5dNWcGl14K550X9i8pxvkcAdQDESl8GzfC6tXQrVvsSHLnk5+EkSNDIUgpWuqBiBS6118PE+fFrK1eVXu7JxbYLobyfuqBiBSyzZth06Yw8VxqzEKNrFWrYkciWVICESlk69fDsGGlO09QVQXLl+vq9CKlBCJSyIYPD3MFpaq6OixR3rgxdiSSBSUQkUL12mvhyvNSWHnVFjMYNQq2bYsdiWRBCUSkEO3YAcuWQe/esSNJ36BBsNdeurCwCCmBiBSilSuhXz/o2TN2JPmxfHko0yJFRQlEpBBt3w4jRsSOIn8GDAirsXbsiB2J7AYlEJFC4x5qXu2xR+xI8qeyMvS4Vq6MHYnsBiUQkULiDnPnQmNj7Ejyb++9oUeP2FHIbtCV6CKFZNassKy1HCbPW+rTJ1wXsm0bdO8eOxrJgHogIoXkmmvC3EcpL91tz9q1sGBB7CgkQ0ogIoXCHY48MixpLVf9+8O778Lbb8eORDKgBCJSKDZsCBstlWrZkkxUVITSLcuXx45EMpBaAjGzEWb2qJm9YGYLzOy8Vo4xM7vOzBab2TwzOyyteEQK2pYtcMABsGJF7EjiGzIk7PsuBS/NHsgO4AJ3HwccBZxjZuNaHHMCsH9ymwJMTTEekcJ1111w2GHh03e569YtLOmdOzd2JNKB1FZhuftKYGVy/20zexEYBrzQ7LCJwK3u7sBTZranmQ1JXitSulrujzF3bljG2tq+GeVo61Y44YRQD6yyMnY00gbzPJRRNrNRwF+Ag9x9U7PnZwJXuvsTyeNZwP9z94YWr59C6KEwaNCg8TNmzEg95tY0NjZSVVUV5b1jKbc25629ixa9d3/nToY+/jhvfPSjYQ4gzxqrq6laty7v79uRD02bxqoJE1jziU/k/Nzl9nMNUFdXN8fda3J5ztQTiJlVAY8Bl7v7vS2+l1ECaa6mpsYbGtr8dqrq6+upra2N8t6xlFub89be5j2Nd94JNa8iLd2tnzSJ2unTo7x3u845B66/Hh57LOenLrefawAzy3kCSfVCQjPrBtwD/KZl8kisAJoX/BmePCdSHnbsCMNXRxyhi+damjixvOqBFaE0V2EZcBPworv/pI3D7gfOSFZjHQVs1PyHlJVVq8KEsZLH+3XrBmPGhKvzpSCl2QM5BjgdmG9mzybPfQfYG8DdbwQeAE4EFgPvAGelGI9IYXGHN96A/fePHUlhqqsLy5vnzIGjj/7H62MefTReXPK/0lyF9QTQ7qBusvrqnLRiECl4o0fDnnvGjqJw9ewZqhK/+SYMHhw7GmlBV6KLxLJpUyjdUa51rzI1dGjoqUnBUQIRiWHrVpg/X9u4ZqK6Gg48MHYU0golEJEYVq0K5Tq6akeFDlVUhNubb8aORFpQAhHJt6amMCQzdGjsSIqHOyxcGP7tpGDo449IWtoqS+IOH/hA2EBJMlNZCX37wpo1odiiFAT1QETy7a23ynPHwc4aOjQM/UnByCiBmNm9ZvYpM1PCEemMd9+Fl16KHUVxqq6Ggw6KHYU0k2lC+C/gX4GXzexKMzsgxZhESteqVWHHwXLeNCpbZqH0y0oVqygUGSUQd/+zu38BOAx4Ffizmf3VzM5K6l2JSEfcQwLRGH72KipgyRJteVsgMh6SMrP+wJnAZOAZ4GeEhPJwKpGJlBoz+NCHNHneGT16hCv3b789diRC5nMgvwUeB3oBJ7n7Z9z9Dnf/BlBeRfVFsrV6dSgQKJ0zZAjcfXfsKITMeyC/dPdx7v7DXdVyzawHQK7ry4uUpG3b4OWXVbYkF6qr4Q9/iB2FkHkCuayV5/6Wy0BEStqqVaHula487zyzcFHhf/1X7EjKXrsJxMwGm9l4oKeZHWpmhyW3WsJwlohkYvVqXXmeS337wkUXhXLvEk1HH4f+iTBxPhxovinU24S9PUQkEwcfrPmPXNp777CL4913w+mnx46mbLWbQNz918Cvzexz7n5PnmISKS0rV4ZdBzX/kVuTJ8N99ymBRNRuAjGzL7r7/wCjzOxbLb/fzla1IgKwfTssXgxHHhk7ktLz2c/Cv/xL7CjKWkeT6LsK9lQBfVq5iUh71qwJq4a053nuVVTAE0/A9dfHjqRsdTSE9Yvk68X5CUekxKxZAyNHxo6idA0cCJdfDl/9quaYIuhoCOu69r7v7ufmNhyREvOhD4VPypKOsWNhzBiYOTMMaUledbQKa05eohApRStWhLIbKt2ersmT4amnlEAiyGQVlojsrs2bYelSOPzw2JGUvtNP1wq3SDoawrrW3c83s98D3vL77v6Z1CITKWZ33hkuduvRI3Ykpc8Mfvc7WLYMvv712NGUlY6GsG5Lvl6ddiAiJWXmTJVtT1PL7YLffhuefz5cWFhfHyWkctTRENac5OtjZtYdGEvoiSx09215iE+kON15Jxx3XOwoykefPmEV1vr1sSMpKxlVdjOzTwE3AksAA0ab2Vfc/cE0gxMpStdfHy4c1Lh8fg0dGuaeJG8yLQ16DVDn7osBzGxf4A+AEohIc1u3wiWXwOzZsSMpPypWmXeZLlB/e1fySLxCKKjYJjO72czWmNnzbXy/1sw2mtmzye17GcYiUrh++9tQOHGffWJHUp5WroSpU2NHUTY6WoW1q9BMg5k9ANxJmAM5Bfh7B+e+BbgBuLWdYx53909nFqpIEXj8cfjyl2NHUb569oTrrgtXpmsIMXUdDWGd1Oz+auBjyf03gZ7tvdDd/2Jmo7KOTKQY/fzn4O9b8S750rcvvPsuPPkkfOQjsaMpeeYp/rAnCWSmux/UyvdqgXuA5cAbwL+7+4I2zjMFmAIwaNCg8TNmzEgp4vY1NjZSVVVeW8CXW5uzau+iRQAMmzWLd4YMYf24cSlElp7G6mqq1q2LHUbODFm4kJ2Vlaz+5CfbPKbcfq4B6urq5uR6C/KMEoiZVQJnAx8AKnc97+5f6uB1o2g7gewB7HT3RjM7EfiZu+/fUSw1NTXe0NDQYcxpqK+vp7a2Nsp7x1Jubc6qvXV1sHNnKKdx8MFFV7qkftIkaqdPjx1G7jz6aIeHlNvPNYCZ5TyBZDqJfhswmLBD4WOEHQrbnUTviLtvcvfG5P4DQDczG9CZc4pEs24dVFYWXfIoWT/+sfZMz4NME8h+7n4RsDmpj/UpoFM75CT7rVty/4gklrc6c06RaBobtYy0kNTUwI03aj4qZZleB7I9+brBzA4CVgF7tfcCM5sO1AIDzGw58H2gG4C73wicDHzNzHYAW4DTPM0JGZE0jRoVOwJprrYWtmwJ1+McdVTsaEpWpglkmpn1Ay4C7ifsUHhRey9w90kdfP8GwjJfkeK2fHkoozFoUOxIZJeKCrjwQli7NnYkJS2jBOLuv0ruPgboCimRXXbuDAmkyFZelbSWhRavvjpcE5LB5LrsnozmQMysv5ldb2ZzzWyOmV1rZv3TDk6k4M2aBV27hmJ+UniWLAlXp0sqMp1EnwGsAT5HmLtYC9yRVlAiRWPpUhg2TFc9F6p+/eCNN2JHUbIyTSBD3P1Sd1+a3C4DNOArMmWK9v0oZP36wfbtYb8QyblMJ9H/ZGanEWphQeiFPJROSCJF4qqrNHRV6Mxg9GhoaoodSUlqtwdiZm+b2Sbgy8DtwLbkNoOktIhIWWpqghtu0J7nxWDw4FAja/v2jo+V3dJuAnH3Pu6+R/K1wt27JrcKd98jX0GKFJw//jEs2x0/PnYkkomFC+G22zo+TnZLpnMgmNlnzOzq5KYS7FLeNm6E//iP2FFIpgYMgGnTYkdRcjLd0vZK4HDgN8lT55nZMe7+7dQiEylUTU3wr/8aOwrZHdXVYcXcM8/AoYfGjqZkZDqJfiJwiLvvBDCzXwPPAEogUn6+//3wifb882NHIpmqqIBrrtFy6xzLNIEA7Ans2jSgbwqxiBS+bdvgV7+C+vrYkcjuOuUU2Lw53CQnMk0gPwSeMbNHAQOOBS5MLSqRQnXffXDggTB2bOxIJBvnngsHHaRhrBzpcBI9Kbn+BHAUcC9hF8Gj3V1Xokv56dEDvq2R26J19tkwdWqoYSad1mEPxN3dzB5w9w8SKvGKlKd33oHPfEbj6MXs6KOhVy/6zZkDH/947GiKXqZDWHPN7HB3/3uq0YgUqro6ePnl0APZe+/Y0Ui2zOC669j66quxIykJmV4HciTwlJktMbN5ZjbfzOalGZhIQWlqgtWrYeDA2JFIZx17LDuqquDNN2NHUvQy7YH8U6pRiBS6NWtgjz2gZ8/YkUgO7H377dDQAFdcETuUotZuAjGzSuCrwH7AfOAmd9+Rj8BECkplJYwcGTsK6YxmG02tqKtj+GWXwZNPhmtEtNlUVjoawvo1UENIHicA16QekUiheeutUIyvry5/KhVbBg8GDWN1WkdDWOOS1VeY2U3A0+mHJFJg/v3fw7a1mjwvLfvuG3aTlKx11AP53/rHGrqSsrRqVbh4UJtGlZ6qqrA4YsuW2JEUrY7S78HJfiAQrkDvmTw2wiUiKukupW3qVDj11FAOXErP2rVKIJ3QbgJx9y75CkSkIJ14Iuy1F3zpS7EjkTQMGQJPPw3r14ftb2W3ZLwfiEjZmTcPxowJW6JKaerePZR6v+WW2JEUJSUQkda4wxe/GK4VkNK2zz7qYWZJCUSkNbNmhYJ7n/hE7EgkbZWVsGQJPP547EiKjhKISGuuvTZsGKXCieVh2TK44ILQ85SMpZZAzOxmM1tjZs+38X0zs+vMbHFSX+uwtGIR2W3XXANf+ELsKCRfTjoJNmxQL2Q3pdkDuQWY0M73TwD2T25TgKkpxiKSuXvvDStyVPeqfFRUhB7ITTfFjqSopJZA3P0vvLcFbmsmArd68BSwp5npai2JquumTWHToaam2KFIvp11Fvzyl7GjKCoxr+MfBixr9nh58tzKlgea2RRCL4VBgwZRH2k/6sbGxmjvHUu5tXnQPfew6ogjeGnhwn+8eHDSpHhBpayxupr6Em5fa97X5uRnvNfSpfSfPZtlp50WJ7AiUxSFYNx9GjANoKamxmtra6PEUV9fT6z3jqWs2lxbyzsvvkivESMYfPHFsaPJm/pJk6idPj12GHnVZpu3bYOnn2bfefPC5mGgSr3tiLkKawUwotnj4clzInGYMffCC6FPn9iRSCzdu4fKAyv0pygTMRPI/cAZyWqso4CN7v6+4SuRvHCHpUu1bFdg+HDYtElLejOQ2hCWmU0HaoEBZrYc+D7QDcDdbwQeAE4EFgPvAGelFYtIh/7yF1izhh2VlbEjkdh69YKDD9aHiQyklkDcvd1ZOXd34Jy03l9kt1xySdjvo0LX1gqwYwe88AJ88IOxIylo+m0RWbkyDFkMGhQ7EikU3bqFpdxr18aOpKApgYjsKumt3oc0N2JEKHGiuZA26TdGytvs2XDmmRrvlvcbMCDMh2za1PGxZUoJRMrbpZfCkUfGjkIKkRkceGAYzlIvpFVKIFK+5s6FZ5/VXhDSvuOPh0ceiR1FQVICkfL15pvwwx++d8WxSGu+9jW46CL1QlpRFKVMRHKqri4s0+zSJQxT3Hxz7IikkJ12GlxxBfzxj3DCCbGjKSjqgUh5WrgQVq2KHYUUgy5d4Be/gJEjY0dScJRApPxs3hw2D9prr9iRSLH4yEdg4ECYPz92JAVFCUTKz2uvhTX+XbrEjkSKyd/+Bl/8IuzcGTuSgqEEIuVn4EAYOjR2FFJsTjopVOu9557YkRQMJRApL489Bv37Q1etH5HdZBZqpl1+uVZkJZRApHzMnQunnqohCMnehAkwc6YqFyT0MUzKgztccAFcfDHMmBE7GikmdXX/+LipCV59FV55pex7suqBSHl44olw4eDZZ8eORIpdRUWoj/Wb38SOJDolECkPH/0oPP542X9ilBwwg9GjQ29269bY0USlBCKlb9o0uO8+6NcvdiRSKvbcMxThbGiIHUlU+jgmpe2tt+C73w2rr0Ry6fbbQ29k+/ZQsbcMqQcipe3ii+Hzn4dx42JHIqXGDO64A04/PXYk0SiBSOlyh8ZG+MEPYkcipeqkk+Cpp+DRR2NHEoUSiJSu9etDpd2BA2NHIqWqVy/4yU/gG98IQ1llRnMgUppmzYJvfStsGKWLviRNn/1s2a7GUg9ESk9TU0ge3/uekoekzwwmTQrDWGW2RYB6IFJ6bropVNy9/nq44YbY0Ui5+POfYfp0+O//jh1J3qgHIqXnxBPhgAPU+5D8uugiePjhUPa9TCiBSOlwD8t2q6rC5KZIPvXpAz/+cVn1ejWEJcWrZZG7N96AlSvhkUdCvSKRNLX8+YPwIWbXrQx6wKn+lpnZBDNbaGaLzezCVr5/ppm9aWbPJrfJacYjJezdd2HpUhg7VslD4tmVNI46KlTrLXGp/aaZWRfg58AJwDhgkpm1djnwHe5+SHL7VVrxSIlrbISRI6F379iRSLmrqIDTTgvb3+7YETuaVKX5Ue0IYLG7v+Lu24AZwMQU30/K1ZYtMGAADB8eOxKR4LzzwoeZyy+PHUmq0pwDGQYsa/Z4OXBkK8d9zsyOBRYB33T3Za0cI9K6LVvCToPjx0NlZexoRILjjgsXF/7ud1Bf/4/fK6GyJ+Yp7e1rZicDE9x9cvL4dOBId/96s2P6A43uvtXMvgKc6u4fb+VcU4ApAIMGDRo/I9KOco2NjVRVVUV571gKus0LF3Lwtdey/sADeX3ChJycsrG6mqp163JyrmKhNqdo505GPvggy487jqZdH3DGjEn/fVtRV1c3x91rcnnONBPI0cAP3P2fksffBnD3H7ZxfBdgnbv3be+8NTU13hCpBn99fT21tbVR3juWgm7zBz4Ay5bBoYfmbOK8ftIkaqdPz8m5ioXanLKXXgpfx44NXyP1QMws5wkkzTmQvwP7m9loM+sOnAbc3/wAMxvS7OFngBdTjEdKiXsokvjBD2rVlRS2/faDjRthzZrYkeRcanMg7r7DzL4OPAR0AW529wVmdgnQ4O73A+ea2WeAHcA64My04pESsnEjTJwI27ZBjx6xoxFpX9eucOCBYXOzEpPqhYTu/gDwQIvnvtfs/reBb6cZg5SYpib4whfC8NULL8SORiQze+wRbps3w86dJdNrLo1WSPm49NJwzce118aORGT3uMPLL4dyOyVCCUSKyymnwF13le0e1FLEzMLWyrfdBrfcEjuanFACkeLw7LNw/vlh6Eo7DEqx6t4dHngAbrwxzOEVORVTlMJ3zDEwZw7su2/rBexEisnYsaHk+9atoV7WPvvEjihr6oFIYdu+HRYsgEGDYK+9Ykcjkhtm4Qr1urpQRbpIKYFIYevSBYYMgdGjY0ciklsTJsBXvgKf/nRYGFKElECkMLnD//2/Yehq8OCy2FtBytC3vw2HHRZqZhUhzYFI4dm5E845J0yc/+d/xo5GJLdazuO5w5IlIZGMHVtUH5bUA5HC853vwPz58NBD0Lfd0mgixc8sJJHJk8OQVlNT7IgypgQihaOpKUyaT54MDz4YrtwVKQdm8Mc/hl01P//5sMNmEVACkcLQ1ARnnQU/+lEoPtenT+yIRPKrTx+YORP23hs2bIgdTUaUQCS+HTvgjDNg5Ur41rdiRyMST48e8NOfQnV1mAdcvTp2RO3SJLrkT1sXAa5eDatWwUEHwac+ld+YRApF898Pd3jtNbj5Zjj4YHjqqXhxtUMJROLZtCkMXe21VyhPUiIVSkU6zQxGjQo13555BtatC72SAqPfWMk/d1ixIqy0amoKvyxKHiLvN2xY6IFUV4dEktIOstnSb63k36uvhvINhx4KAwbEjkaksPXuHa6NOvdcOPHEMNxbIJRAJH82bw4T5kOGhIumevWKHZFIcaiogEcegcMPDx+8Zs+OHRGgBCL5sG0bXHVVuLL87behsjLUuBKRzHXrBpdcAvfcA2PGhGHgzZujhqRJdEnXtm3hE9Po0eGreh0infPhD4evv/hFWKXVqxf06/f+4x59NPVQ1AORdCxaBFOnhg107r03XCCl5CGSOxdeCFdeCQsXwosvRglBPRDJrU2bwvUcK1fCyJFw552xIxIpfu1tpHbEEbBlS1ihtXRpqF6dpw9r6oFIbqxZE75ef32oZ3X44TBiRNyYRMpBRUVYqeUe5hafeSb0SvKwUZV6IJKdurrwA7tpEyxfDuvXh6TRvXsoSS0i+VVREXr9Q4fC66+HbXNPOgmefBI+9rFU3lIJRHbfu++G5LFmTbimY9gwOOAA6KofJ5HounWDffeFz30u7DNy7rlhiCsFGsKSzGzcCLffHkpNDx4cluMOHBjGX4cPV/IQKUT77gvz5oXf3RTot17atnw5Q++7D2pq4IknYMYM+Od/hhtugFNPjR2diLSnvYnwwuHLAAAIoUlEQVT3HFEPRILt28MnFYC77gp7cowezR6zZ8Pxx8PVV4dex223KXmICKAEUn7cQy2d558Pj2+5BfbcM1wd/uEPw7HHwk9+Eoq3HXMML511VtijQESkhVSHsMxsAvAzoAvwK3e/ssX3ewC3AuOBt4BT3f3VNGMqC9u2hd7EG2+E2/77w2WXheq3GzaE6rfV1TBuXFg9NXJk2D521zyGyoyISAZSSyBm1gX4OfBJYDnwdzO7391faHbY2cB6d9/PzE4DfgRofMQdXngh1LnZvDlsdVlTA3/6U1jfvWFDmNS+6qqwd/iVV4ZEsGhRWA1VVRWSRffuoffQv3+oervPPuG5bt3ee6/WSiCIiGQgzR7IEcBid38FwMxmABOB5glkIvCD5P7dwA1mZu4FVvQ+38zgyCPDuu6KCujbN/zx31U8rWvXkAQaGmDr1rBEr7IyVLjt3j28pqbm/eft3Tv/bRGRkmVp/a02s5OBCe4+OXl8OnCku3+92THPJ8csTx4vSY5Z2+JcU4ApycMDgIWpBN2xAcDaDo8qLeXW5nJrL6jN5eIAd++TyxMWxTJed58GTIsdh5k1uHsrH+1LV7m1udzaC2pzuTCzhlyfM81VWCuA5sWQhifPtXqMmXUF+hIm00VEpMClmUD+DuxvZqPNrDtwGnB/i2PuB/4tuX8y8EjZz3+IiBSJ1Iaw3H2HmX0deIiwjPdmd19gZpcADe5+P3ATcJuZLQbWEZJMIYs+jBZBubW53NoLanO5yHmbU5tEFxGR0qYr0UVEJCtKICIikhUlEMDMzjOz581sgZmdnzx3sJn9zczmm9nvzWyPNl67p5ndbWYvmdmLZnZ0fqPPTifb/M3kdc+b2XQzq8xv9Jkxs5vNbE1yvdGu56rN7GEzezn52i953szsOjNbbGbzzOywNs45Pvn3WZwcb/lqTyZy3WYz62Vmf0h+vheY2ZUtj4ktjf/nZue5v/l5C0VKP9vdzWyamS1K/r8/12Eg7l7WN+Ag4HmgF2FRwZ+B/QiryD6WHPMl4NI2Xv9rYHJyvzuwZ+w2pdlmYBiwFOiZPL4TODN2m9po57HAYcDzzZ77MXBhcv9C4EfJ/ROBBwEDjgJmt3HOp5PvW3L8CbHbmWabk5+RuuR+d+DxUm9zs3P8C3B78/MWyi2ln+2LgcuS+xXAgA7jiP0PEfsGnALc1OzxRcB/ABt5b5HBCOCFVl7bN/ljarHbkcc2DwOWAdWE5DMTOD52m9pp66gWv2QLgSHJ/SHAwuT+L4BJrR3X7LkhwEvNHk8CfhG7jWm2uZVz/wz4cuw2pt1moAp4AhhXiAkkpTYvA3rvTgwawgqfxD9qZv3NrBchW48AFhBqdUH4gzuildeOBt4E/tvMnjGzX5lZMRScyrrN7r4CuBp4HVgJbHT3P+Ul6twY5O4rk/urgEHJ/V2JcZflyXPNDUueb++YQtSZNv8vM9sTOAmYlUaQOdbZNl8KXAO8k1qEuZd1m5P/W4BLzWyumd1lZoPoQNknEHd/kVAF+E/AH4FngSbCEM7/MbM5QB9gWysv70roRk5190OBzYSuY0HrTJuTcdWJhOQ5FOhtZl/MU+g55eFjV1mtY8+2zRYqRUwHrvOkQGqx2N02m9khwL7u/tv0okpXFv/PXQnVQv7q7ocBfyN8UGxX2ScQAHe/yd3Hu/uxwHpgkbu/5O7Hu/t4wi/OklZeuhxY7u6zk8d3ExJKwetEmz8BLHX3N919O3Av8OH8Rd5pq81sCEDydU3yfKald4Z3cEwh6kybd5kGvOzu16YWZW51ps1HAzVm9iphGGuMmdWnGm1udKbNbxF6W/cmj+8ig79lSiCAme2VfN2bZOKs2XMVwH8CN7Z8nbuvApaZ2QHJU8fxj+XqC1a2bSYMXR2VrM4xQptfzE/UOdG8fM6/Ab9r9vwZyYqVowhDcyubvzB5vMnMjkrafkaz1xeyrNsMYGaXEeb7zs9HsDnSmf/nqe4+1N1HAR8hfLiqzU/YndKZNjvwe6A2eSqzv2WxJ4IK4UZYWfIC8BxwXPLcecCi5HYl700uDwUeaPbaQ4AGYB5wH9Avdnvy0OaLgZcIcym3AT1it6eNNk4nzNNsJ/QWzwb6E8bwXyasPqtOjjXCBmhLgPlATbPzPNvsfk3S7iXADRTYAopct5nwadUJHxKeTW6TY7cz7f/nZs+NogAn0VP62R4J/CX5WzYL2LujOFTKREREsqIhLBERyYoSiIiIZEUJREREsqIEIiIiWVECERGRrCiBiDRjZt9Nqs7OM7NnzezIFN7jO7k+p0gMWsYrkrBQiv8nQK27bzWzAUB3d38jR+c3wpr8Te5elYtzisSkHojIe4YAa919K4C7r3X3N8zsVTP7YdIjaTCzw8zsITNbYmZfBTCzKjOblRSim29mE5PnR5nZQjO7lXAB4k1Az+RcvzGz3hb223jOwv4qp8ZqvMjuUg9EJGFmu0p49yJcyXuHuz+W1ET6kbtPNbOfEso8HANUEq5SHpQUG+zl7puSnstTwP6Eq3tfAT7s7k8l79O4qweSbNozwd2/nDzu6+4b89hskaypByKScPdGYDwwhVCm/w4zOzP59v3J1/mEDXnedvc3ga1JKWwDrjCzeYTkM4z3ymm/tit5tGI+8Ekz+5GZfVTJQ4pJ19gBiBQSd28C6oF6M5vPe8XptiZfdza7v+txV+ALwEBgvLtvT3otu7b63dzO+y1Kthg9EbjMzGa5+yU5ao5IqtQDEUmY2QFmtn+zpw4BXsvw5X2BNUnyqCMMXbVlu5l1S95zKPCOu/8PcBVFsh2ACKgHItJcFXB9MiS1A1hMGM76dAav/Q3w+6TX0kCoVtyWacA8M5sL3ApcZWY7CZVVv9aJ+EXySpPoIiKSFQ1hiYhIVpRAREQkK0ogIiKSFSUQERHJihKIiIhkRQlERESyogQiIiJZ+f9OIjjKNCssAQAAAABJRU5ErkJggg==\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
+ "execution_count": 26,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
"source": [
"from numpy import *\n",
"from numpy.random import randint, randn\n",
@@ -5294,7 +4736,9 @@
{
"cell_type": "code",
"execution_count": 27,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"import numpy as np\n",
@@ -5523,7 +4967,9 @@
{
"cell_type": "code",
"execution_count": 28,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
@@ -5591,63 +5037,11 @@
},
{
"cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Polynomial degree: 0\n",
- "Error: 0.2532788185411167\n",
- "Bias^2: 0.2526964484949394\n",
- "Var: 0.0005823700461773749\n",
- "0.2532788185411167 >= 0.2526964484949394 + 0.0005823700461773749 = 0.2532788185411168\n",
- "Polynomial degree: 1\n",
- "Error: 0.08455386893059441\n",
- "Bias^2: 0.08422251109115914\n",
- "Var: 0.0003313578394352724\n",
- "0.08455386893059441 >= 0.08422251109115914 + 0.0003313578394352724 = 0.08455386893059441\n",
- "Polynomial degree: 2\n",
- "Error: 0.059233304118678526\n",
- "Bias^2: 0.0586320532355154\n",
- "Var: 0.0006012508831631393\n",
- "0.059233304118678526 >= 0.0586320532355154 + 0.0006012508831631393 = 0.05923330411867854\n",
- "Polynomial degree: 3\n",
- "Error: 0.029801715226919333\n",
- "Bias^2: 0.029452192264365906\n",
- "Var: 0.000349522962553423\n",
- "0.029801715226919333 >= 0.029452192264365906 + 0.000349522962553423 = 0.02980171522691933\n",
- "Polynomial degree: 4\n",
- "Error: 0.029794287278949182\n",
- "Bias^2: 0.029348037991086092\n",
- "Var: 0.00044624928786308614\n",
- "0.029794287278949182 >= 0.029348037991086092 + 0.00044624928786308614 = 0.02979428727894918\n",
- "Polynomial degree: 5\n",
- "Error: 0.024440674046123795\n",
- "Bias^2: 0.023999783622663227\n",
- "Var: 0.0004408904234605626\n",
- "0.024440674046123795 >= 0.023999783622663227 + 0.0004408904234605626 = 0.024440674046123788\n",
- "Polynomial degree: 6\n",
- "Error: 0.02059388133830918\n",
- "Bias^2: 0.02004411755832111\n",
- "Var: 0.0005497637799880787\n",
- "0.02059388133830918 >= 0.02004411755832111 + 0.0005497637799880787 = 0.020593881338309188\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
+ "execution_count": 29,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
@@ -5659,9 +5053,9 @@
"\n",
"np.random.seed(2018)\n",
"\n",
- "n = 500\n",
+ "n = 40\n",
"n_boostraps = 100\n",
- "maxdegree =7\n",
+ "maxdegree = 14\n",
"\n",
"\n",
"# Make data set.\n",
@@ -5673,7 +5067,6 @@
"polydegree = np.zeros(maxdegree)\n",
"x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)\n",
"\n",
- "# complexity\n",
"for degree in range(maxdegree):\n",
" model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False))\n",
" y_pred = np.empty((y_test.shape[0], n_boostraps))\n",
@@ -5746,7 +5139,9 @@
{
"cell_type": "code",
"execution_count": 30,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"\"\"\"\n",
@@ -5832,7 +5227,9 @@
{
"cell_type": "code",
"execution_count": 31,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"# Common imports\n",
@@ -5926,7 +5323,9 @@
{
"cell_type": "code",
"execution_count": 32,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"# Common imports\n",
@@ -6007,22 +5406,11 @@
},
{
"cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
+ "execution_count": 33,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
@@ -6102,7 +5490,9 @@
{
"cell_type": "code",
"execution_count": 34,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"import numpy as np\n",
@@ -6215,7 +5605,9 @@
{
"cell_type": "code",
"execution_count": 35,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"X = np.zeros((n, L ** 2))\n",
@@ -6279,7 +5671,9 @@
{
"cell_type": "code",
"execution_count": 36,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"X_train_own = np.concatenate(\n",
@@ -6295,7 +5689,9 @@
{
"cell_type": "code",
"execution_count": 37,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"def ols_inv(x: np.ndarray, y: np.ndarray) -> np.ndarray:\n",
@@ -6380,7 +5776,9 @@
{
"cell_type": "code",
"execution_count": 38,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"def ols_svd(x: np.ndarray, y: np.ndarray) -> np.ndarray:\n",
@@ -6391,7 +5789,9 @@
{
"cell_type": "code",
"execution_count": 39,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"beta = ols_svd(X_train_own,y_train)"
@@ -6407,7 +5807,9 @@
{
"cell_type": "code",
"execution_count": 40,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"J = beta[1:].reshape(L, L)"
@@ -6423,7 +5825,9 @@
{
"cell_type": "code",
"execution_count": 41,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"fig = plt.figure(figsize=(20, 14))\n",
@@ -6489,7 +5893,9 @@
{
"cell_type": "code",
"execution_count": 42,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"import numpy as np\n",
@@ -6595,7 +6001,9 @@
{
"cell_type": "code",
"execution_count": 43,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"X = np.zeros((n, L ** 2))\n",
@@ -6625,7 +6033,9 @@
{
"cell_type": "code",
"execution_count": 44,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"clf = skl.LinearRegression().fit(X_train, y_train)"
@@ -6641,7 +6051,9 @@
{
"cell_type": "code",
"execution_count": 45,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"J_sk = clf.coef_.reshape(L, L)"
@@ -6657,7 +6069,9 @@
{
"cell_type": "code",
"execution_count": 46,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"fig = plt.figure(figsize=(20, 14))\n",
@@ -6691,7 +6105,7 @@
"source": [
"1\n",
"7\n",
- "7\n",
+ "6\n",
" \n",
"<\n",
"<\n",
@@ -6713,7 +6127,9 @@
{
"cell_type": "code",
"execution_count": 47,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"_lambda = 0.1\n",
@@ -6764,7 +6180,9 @@
{
"cell_type": "code",
"execution_count": 48,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"clf_lasso = skl.Lasso(alpha=_lambda).fit(X_train, y_train)\n",
@@ -6798,7 +6216,9 @@
{
"cell_type": "code",
"execution_count": 49,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"lambdas = np.logspace(-4, 5, 10)\n",
@@ -6861,7 +6281,9 @@
{
"cell_type": "code",
"execution_count": 50,
- "metadata": {},
+ "metadata": {
+ "collapsed": false
+ },
"outputs": [],
"source": [
"fig = plt.figure(figsize=(20, 14))\n",
@@ -6906,25 +6328,7 @@
]
}
],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.6.8"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 2
}
diff --git a/doc/pub/Regression/ipynb/ipynb-Regression-src.tar.gz b/doc/pub/Regression/ipynb/ipynb-Regression-src.tar.gz
index 5cbbcd30e..43dc171f3 100644
Binary files a/doc/pub/Regression/ipynb/ipynb-Regression-src.tar.gz and b/doc/pub/Regression/ipynb/ipynb-Regression-src.tar.gz differ
diff --git a/doc/pub/Regression/pdf/Regression-minted.pdf b/doc/pub/Regression/pdf/Regression-minted.pdf
index 879237ba1..cdedb76ee 100644
Binary files a/doc/pub/Regression/pdf/Regression-minted.pdf and b/doc/pub/Regression/pdf/Regression-minted.pdf differ
diff --git a/doc/src/Regression/make.sh b/doc/src/Regression/make.sh
index 9d16b4645..d908b90b9 100755
--- a/doc/src/Regression/make.sh
+++ b/doc/src/Regression/make.sh
@@ -47,7 +47,7 @@ system doconce format html $name --html_style=bootstrap --pygments_html_style=de
system doconce split_html $html.html --method=split --pagination --nav_button=bottom
# IPython notebook
-#system doconce format ipynb $name $opt
+system doconce format ipynb $name $opt
# Ordinary plain LaTeX document