示例#1
0
    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)
示例#2
0
    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
示例#3
0
    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