Example #1
0
 def __init__(self,
              column_names=None,
              column_types=None,
              num_classes=None,
              multi_label=False,
              loss=None,
              metrics=None,
              name='structured_data_classifier',
              max_trials=100,
              directory=None,
              objective='val_accuracy',
              seed=None):
     super().__init__(
         outputs=head.ClassificationHead(num_classes=num_classes,
                                         multi_label=multi_label,
                                         loss=loss,
                                         metrics=metrics),
         column_names=column_names,
         column_types=column_types,
         max_trials=max_trials,
         directory=directory,
         name=name,
         objective=objective,
         tuner='structured_data_classifier',
         seed=seed)
Example #2
0
def test_lgbm_classifier(tmp_dir):
    x_train = np.random.rand(11, 32)
    y_train = np.array([[1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                        [1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                        [0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
                        [0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
                        [0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
                        [0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
                        [0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
                        [0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
                        [1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                        [0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
                        [0, 0, 0, 1, 0, 0, 0, 0, 0, 0]])

    input_node = ak.Input()
    output_node = input_node
    output_node = preprocessor.LightGBMBlock()(output_node)
    output_node = head.ClassificationHead(loss='categorical_crossentropy',
                                          metrics=['accuracy'])(output_node)

    auto_model = ak.GraphAutoModel(input_node,
                                   output_node,
                                   directory=tmp_dir,
                                   max_trials=1)
    auto_model.fit(x_train,
                   y_train,
                   epochs=1,
                   validation_data=(x_train, y_train))
    result = auto_model.predict(x_train)
    assert result.shape == (11, 10)
Example #3
0
def test_two_classes():
    y = np.array(['a', 'a', 'a', 'b'])
    head = head_module.ClassificationHead(name='a')
    head.fit_transform(y)
    head.output_shape = (1, )
    head.build(kerastuner.HyperParameters(),
               node_module.Input(shape=(32, )).build())
    assert head.loss == 'binary_crossentropy'
Example #4
0
def test_partial_column_types():
    input_node = node.StructuredDataInput(
        column_names=common.COLUMN_NAMES_FROM_CSV,
        column_types=common.PARTIAL_COLUMN_TYPES_FROM_CSV)
    (x, y), (val_x, val_y) = common.dataframe_numpy()
    dataset = tf.data.Dataset.zip(
        ((tf.data.Dataset.from_tensor_slices(x.values.astype(np.unicode)), ),
         (tf.data.Dataset.from_tensor_slices(y), )))
    hm = meta_model.assemble(input_node, head.ClassificationHead(), dataset)
    for block in hm._blocks:
        if isinstance(block, preprocessor.FeatureEngineering):
            assert block.input_node.column_types['fare'] == 'categorical'
Example #5
0
 def __init__(self,
              num_classes=None,
              multi_label=False,
              loss=None,
              metrics=None,
              name='image_classifier',
              max_trials=100,
              directory=None,
              seed=None):
     super().__init__(outputs=head.ClassificationHead(
         num_classes=num_classes,
         multi_label=multi_label,
         loss=loss,
         metrics=metrics),
                      max_trials=max_trials,
                      directory=directory,
                      seed=seed)
Example #6
0
 def __init__(self,
              num_classes=None,
              multi_label=False,
              loss=None,
              metrics=None,
              name='text_classifier',
              max_trials=100,
              directory=None,
              objective='val_loss',
              seed=None):
     super().__init__(
         outputs=head.ClassificationHead(num_classes=num_classes,
                                         multi_label=multi_label,
                                         loss=loss,
                                         metrics=metrics),
         max_trials=max_trials,
         directory=directory,
         name=name,
         objective=objective,
         tuner='text_classifier',
         seed=seed)
Example #7
0
 def __init__(self,
              num_classes: Optional[int] = None,
              multi_label: bool = False,
              loss: Union[str, Callable, None] = None,
              metrics: Optional[List[Union[str, Callable]]] = None,
              name: str = 'image_classifier',
              max_trials: int = 100,
              directory: Optional[str] = None,
              objective: str = 'val_loss',
              overwrite: bool = True,
              seed: Optional[int] = None):
     super().__init__(
         outputs=head.ClassificationHead(num_classes=num_classes,
                                         multi_label=multi_label,
                                         loss=loss,
                                         metrics=metrics),
         max_trials=max_trials,
         directory=directory,
         name=name,
         objective=objective,
         tuner='image_classifier',
         overwrite=overwrite,
         seed=seed)
Example #8
0
def test_y_is_pd_series():
    (x, y), (val_x, val_y) = common.dataframe_series()
    head = head_module.ClassificationHead()
    head.fit(y)
    assert isinstance(head.transform(y), tf.data.Dataset)
Example #9
0
def test_three_classes():
    y = np.array(['a', 'a', 'c', 'b'])
    head = head_module.ClassificationHead(name='a')
    head.fit_transform(y)
    assert head.loss == 'categorical_crossentropy'
Example #10
0
def test_one_class():
    y = np.array(['a', 'a', 'a'])
    head = head_module.ClassificationHead(name='a')
    with pytest.raises(ValueError) as info:
        head.fit_transform(y)
    assert 'Expect the target data' in str(info.value)
Example #11
0
def test_unsupported_types():
    y = 1
    head = head_module.ClassificationHead(name='a')
    with pytest.raises(TypeError) as info:
        head.fit_transform(y)
    assert 'Expect the target data' in str(info.value)