XGBoost for multi-label image classification

I am trying to use the xgboost classifier for a multi-label and multi-class image classification task. I have a list of images that can have up to 5 different labels in each of them. Before I use the classifier I want to also apply image augmentation.

import keras
from sklearn.model_selection import train_test_split
from keras.preprocessing.image import ImageDataGenerator
from xgboost.sklearn import XGBClassifier

train_idx, val_idx = train_test_split(mask_df.index,  test_size=0.2,random_state=28)

train_datagen=ImageDataGenerator(zoom_range=0.1,
                              fill_mode='constant',
                              rotation_range=10,
                              height_shift_range=0.1,
                              width_shift_range=0.1,
                              horizontal_flip=True,
                              vertical_flip=True,
                              rescale=1/255.)

train_generator=train_datagen.flow_from_dataframe(
                dataframe=mask_df.loc[train_idx],
                directory="home/DATA/train_images/",
                x_col="ImageId",
                y_col=columns,
                color_mode='grayscale',
                batch_size=32,
                seed=32,
                shuffle=True,
                class_mode="other",
                target_size=(100,100)) 

model = XGBClassifier()
history=model.fit_generator(generator=train_generator,
                steps_per_epoch=100,
                validation_data=validation_generator,
                validation_steps=100,
                epochs=5)

The last command gives me an error:

AttributeError                            Traceback (most recent call last)
ipython-input-8-8c4c0504d559 in module
---- 1 history=model.fit_generator(generator=train_generator,
      2                     steps_per_epoch=100,
      3                     validation_data=validation_generator,
      4                     validation_steps=100,
      5                     epochs=5

AttributeError: 'XGBClassifier' object has no attribute 'fit_generator'

Does anyone have any advice on how to proceed since I can not use the fit_generator?

Topic xgboost multilabel-classification

Category Data Science


I hope removing generator from the fit will work.

history=model.fit(generator=train_generator,
                steps_per_epoch=100,
                validation_data=validation_generator,
                validation_steps=100,
                epochs=5)

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.