def test_training(self, array_type): input_array = array_type(self.training_data) KrigingClass = KrigingModel(input_array[0:3], regularization=False) np.random.seed(0) p = 2 bh_results = KrigingClass.parameter_optimization(p) # Calculate other variables and parameters optimal_theta, optimal_reg_param, optimal_mean, optimal_variance, optimal_cov_mat, opt_cov_inv, optimal_ymu = KrigingClass.optimal_parameter_evaluation( bh_results.x, p) # Training performance training_ss_error, rmse_error, y_training_predictions = KrigingClass.error_calculation(optimal_theta, p, optimal_mean, opt_cov_inv, optimal_ymu, KrigingClass.x_data_scaled, KrigingClass.y_data) r2_training = KrigingClass.r2_calculation(KrigingClass.y_data, y_training_predictions) np.random.seed(0) results = KrigingClass.training() np.testing.assert_array_equal(results.optimal_weights, optimal_theta) np.testing.assert_array_equal(results.regularization_parameter, optimal_reg_param) np.testing.assert_array_equal(results.optimal_mean, optimal_mean) np.testing.assert_array_equal(results.optimal_variance, optimal_variance) np.testing.assert_array_equal(results.optimal_covariance_matrix, optimal_cov_mat) np.testing.assert_array_equal(results.optimal_y_mu, optimal_ymu) np.testing.assert_array_equal(results.output_predictions, y_training_predictions) np.testing.assert_array_equal(results.training_R2, r2_training) np.testing.assert_array_equal(results.training_rmse, rmse_error) np.testing.assert_array_equal(results.optimal_p, p) np.testing.assert_array_equal(results.x_data, KrigingClass.x_data) np.testing.assert_array_equal(results.x_data_scaled, KrigingClass.x_data_scaled) np.testing.assert_array_equal(results.x_data_min, KrigingClass.x_data_min) np.testing.assert_array_equal(results.x_data_max, KrigingClass.x_data_max)
def test_error_calculation(self, array_type): input_array = array_type(self.training_data) KrigingClass = KrigingModel(input_array[0:3], regularization=False) p = 2 var_vector = np.array([1, 2, 1.00000000e-06]) theta, reg_param, mean, variance, cov_mat, cov_inv, y_mu = KrigingClass.optimal_parameter_evaluation( var_vector, p) y_prediction_exp = np.zeros((KrigingClass.x_data_scaled.shape[0], 1)) for i in range(0, KrigingClass.x_data_scaled.shape[0]): cmt = (np.matmul(((np.abs(KrigingClass.x_data_scaled[i, :] - KrigingClass.x_data_scaled))**p), theta)).transpose() cov_matrix_tests = np.exp(-1 * cmt) y_prediction_exp[i, 0] = mean + np.matmul( np.matmul(cov_matrix_tests.transpose(), cov_inv), y_mu) ss_error, rmse_error, y_prediction = KrigingClass.error_calculation( theta, p, mean, cov_inv, y_mu, KrigingClass.x_data_scaled, KrigingClass.y_data) np.testing.assert_array_equal(y_prediction, y_prediction_exp) assert np.sum((KrigingClass.y_data - y_prediction_exp)** 2) / KrigingClass.x_data_scaled.shape[0] == ss_error assert np.sqrt( np.sum((KrigingClass.y_data - y_prediction_exp)**2) / KrigingClass.x_data_scaled.shape[0]) == rmse_error
def test_r2_calculation(self, array_type): input_array = array_type(self.training_data) KrigingClass = KrigingModel(input_array[0:3], regularization=False) p = 2 var_vector = np.array([1, 2, 1.00000000e-06]) theta, reg_param, mean, variance, cov_mat, cov_inv, y_mu = KrigingClass.optimal_parameter_evaluation(var_vector, p) ss_error, rmse_error, y_prediction = KrigingClass.error_calculation(theta, p, mean, cov_inv, y_mu, KrigingClass.x_data_scaled, KrigingClass.y_data) r_square = KrigingClass.r2_calculation(KrigingClass.y_data, y_prediction) assert 0.999999999999 == r_square