Пример #1
0
def test_minmaxscaler_minimum_operation_success():
    params = {
        MinMaxScalerOperation.ATTRIBUTE_PARAM: ['col'],
    }

    n_in = {'input data': 'input_1'}
    n_out = {'output data': 'output_1'}
    in1 = n_in['input data']
    out = n_out['output data']

    instance = MinMaxScalerOperation(params,
                                     named_inputs=n_in,
                                     named_outputs=n_out)

    code = instance.generate_code()

    expected_code = dedent("""
        output_1 = input_1
        from sklearn.preprocessing import MinMaxScaler
        scaler = MinMaxScaler(feature_range=(0,1))
        X_train = input_1['col'].values.tolist()
        output_1['col_norm'] = scaler.fit_transform(X_train).tolist()
        """)

    result, msg = compare_ast(ast.parse(code), ast.parse(expected_code))

    assert result, msg + format_code_comparison(code, expected_code)
Пример #2
0
def test_min_max_scaler_no_output_implies_no_code_success():
    arguments = {
        'parameters': {
            'attribute': ['sepalwidth', 'petalwidth'],
            'multiplicity': {
                'input data': 0
            },
            'min': 0,
            'max': 1
        },
        'named_inputs': {
            'input data': 'df',
        },
        'named_outputs': {}
    }
    instance = MinMaxScalerOperation(**arguments)
    assert instance.generate_code() is None
Пример #3
0
def test_min_max_scaler_alias_param_success():
    df = util.iris(['sepalwidth', 'petalwidth'], size=10)
    arguments = {
        'parameters': {
            'attribute': ['sepalwidth', 'petalwidth'],
            'multiplicity': {
                'input data': 0
            },
            'min': 0,
            'max': 1,
            'alias': 'success'
        },
        'named_inputs': {
            'input data': 'df',
        },
        'named_outputs': {
            'output data': 'out'
        }
    }
    instance = MinMaxScalerOperation(**arguments)
    result = util.execute(instance.generate_code(), {'df': df})
    assert result['out'].iloc[:, 2].name == "success"
Пример #4
0
def test_min_max_scaler_2_success():
    df = util.iris(['sepalwidth', 'petalwidth'], size=10)
    test_df = df.copy()
    arguments = {
        'parameters': {
            'attribute': ['sepalwidth', 'petalwidth'],
            'multiplicity': {
                'input data': 0
            },
            'min': 2,
            'max': 6
        },
        'named_inputs': {
            'input data': 'df',
        },
        'named_outputs': {
            'output data': 'out'
        }
    }
    instance = MinMaxScalerOperation(**arguments)
    result = util.execute(instance.generate_code(), {'df': df})
    test_out = scaler(test_df, ['sepalwidth', 'petalwidth'], 2, 6)
    assert result['out'].loc[:, 'scaled_1'].equals(test_out.loc[:, 'scaled_1'])
Пример #5
0
def test_min_max_scaler_invalid_min_max_param_fail():
    df = util.iris(['sepalwidth', 'petalwidth'], size=10)
    arguments = {
        'parameters': {
            'attribute': ['sepalwidth', 'petalwidth'],
            'multiplicity': {
                'input data': 0
            },
            'min': 1,
            'max': 1
        },
        'named_inputs': {
            'input data': 'df',
        },
        'named_outputs': {
            'output data': 'out'
        }
    }
    instance = MinMaxScalerOperation(**arguments)
    with pytest.raises(ValueError) as val_err:
        util.execute(instance.generate_code(), {'df': df})
    assert "Minimum of desired feature range must be smaller than maximum." \
           " Got (1, 1)." in str(val_err.value)
Пример #6
0
def test_min_max_scaler_invalid_attribute_param_fail():
    df = util.iris(['sepalwidth', 'petalwidth', 'class'], size=10)
    arguments = {
        'parameters': {
            'attribute': ['sepalwidth', 'petalwidth', 'class'],
            'multiplicity': {
                'input data': 0
            },
            'min': 0,
            'max': 1
        },
        'named_inputs': {
            'input data': 'df',
        },
        'named_outputs': {
            'output data': 'out'
        }
    }
    instance = MinMaxScalerOperation(**arguments)
    with pytest.raises(ValueError) as val_err:
        util.execute(instance.generate_code(), {'df': df})
    assert "could not convert string to float: 'Iris-setosa'" in str(
        val_err.value)
Пример #7
0
def test_min_max_scaler_missing_attribute_param_fail():
    arguments = {
        'parameters': {
            'multiplicity': {
                'input data': 0
            },
            'min': 0,
            'max': 1
        },
        'named_inputs': {
            'input data': 'df',
        },
        'named_outputs': {
            'output data': 'out'
        }
    }
    with pytest.raises(ValueError) as val_err:
        MinMaxScalerOperation(**arguments)
    assert "Parameters 'attribute' must be informed for task" in str(
        val_err.value)
Пример #8
0
def test_minmaxscaler_operation_failure():
    params = {MinMaxScalerOperation.ALIAS_PARAM: 'c'}
    with pytest.raises(ValueError):
        n_in = {'input data': 'input_1'}
        n_out = {'output data': 'output_1'}
        MinMaxScalerOperation(params, named_inputs=n_in, named_outputs=n_out)