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)
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
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"
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'])
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)
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)
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)
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)