Пример #1
0
def test_model_prediction_differential(
        *,
        input_data_file:  str = 'previous_input_data.csv',
        output_data_file: str = 'previous_output_data.csv'
    ):

    previous_data_df = load_dataset(filename=output_data_file)
    previous_output_data = previous_data_df.predictions.values

    current_data_df = load_dataset(filename=input_data_file)
    current_data_json = current_data_df.to_json(orient='records')

    current_output_data_json = make_prediction(input_json=current_data_json)
    current_output_data = current_output_data_json.get('predictions')

    assert len(previous_output_data) == len(current_output_data)

    for previous_value, current_value in zip(previous_output_data, current_output_data):

        previous_value = previous_value.item()
        current_value = current_value.item()

        assert math.isclose(
            previous_value,
            current_value,
            rel_tol=config.ACCEPTABLE_MODEL_DIFFERENCE
        )
Пример #2
0
def test_make_single_prediction():

    test_data = np.random.randn(1, 15)
    df = pd.DataFrame(test_data)
    single_test_json = df.to_json(orient='records')

    subject = make_prediction(input_json=single_test_json)

    assert subject is not None
    assert isinstance(subject.get('predictions')[0], np.integer)
    assert subject.get('predictions')[0] >= 0
    assert subject.get('predictions')[0] < 7
Пример #3
0
def test_make_multiple_prediction():

    test_data = np.random.randn(50, 15)
    original_data_length = len(test_data)
    df = pd.DataFrame(test_data)
    multiple_test_json = df.to_json(orient='records')

    subject = make_prediction(input_json=multiple_test_json)

    assert subject is not None
    assert len(subject.get('predictions')) == 50
    assert len(subject.get('predictions')) == original_data_length
def capture_previous_data(*,
                          input_data_file: str = 'previous_input_data.csv',
                          output_data_file: str = 'previous_output_data.csv'):

    input_data = np.random.randn(50, 15)
    input_data_df = pd.DataFrame(input_data)

    input_data_df.to_csv(
        f'{config.PACKAGE_ROOT.parent}/ml_model/ml_model/datasets/{input_data_file}'
    )

    input_data_json = input_data_df.to_json(orient='records')
    output_data = make_prediction(input_json=input_data_json)

    output_data_df = pd.DataFrame(output_data)

    output_data_df.to_csv(
        f'{config.PACKAGE_ROOT.parent}/ml_model/ml_model/datasets/{output_data_file}'
    )
Пример #5
0
def svc():
    if request.method == 'POST':
        _logger.info('End-point SVC')

        import json

        request_json = request.get_json()
        json_data = json.dumps(request.get_json())

        result = make_prediction(input_json=json_data)
        _logger.info(f'Result: {result}')

        predictions = result.get('predictions')
        version = result.get('version')

        response = jsonify({
            'predictions': predictions.tolist(),
            'version': version
        })

        return response