Good day,
I am trying to use cleanlab to train a multi-label classifier, where my target classes are encoded using scikit-learn MultiLabelBinarizerlink here.
I have a total of five classes and 20,000 images for training.
I build up a scikit-learn BaseEstimator and wrap a Keras Resnet50 model inside it.
Now when using LearningWithNoisyLabels from cleanlab.classification , I am getting following error:
File "c:/Users/ASUS/Desktop/cleanlab mangoes/clean_training.py", line 16, in <module>
lnl.fit(X, y)
File "C:\ProgramData\Anaconda3\envs\tf_gpu\lib\site-packages\cleanlab\classification.py", line 267, in fit
assert_inputs_are_valid(X, s, psx)
File "C:\ProgramData\Anaconda3\envs\tf_gpu\lib\site-packages\cleanlab\util.py", line 41, in assert_inputs_are_valid
ensure_2d=False,
File "C:\ProgramData\Anaconda3\envs\tf_gpu\lib\site-packages\sklearn\utils\validation.py", line 72, in inner_f
return f(**kwargs)
File "C:\ProgramData\Anaconda3\envs\tf_gpu\lib\site-packages\sklearn\utils\validation.py", line 807, in check_X_y
y = column_or_1d(y, warn=True)
File "C:\ProgramData\Anaconda3\envs\tf_gpu\lib\site-packages\sklearn\utils\validation.py", line 72, in inner_f
return f(**kwargs)
File "C:\ProgramData\Anaconda3\envs\tf_gpu\lib\site-packages\sklearn\utils\validation.py", line 847, in column_or_1d
"got an array of shape {} instead.".format(shape))
ValueError: y should be a 1d array, got an array of shape (25767, 5) instead.
my code used for training is as follow:
from sk_resnet import ResnetTrainer
from cleanlab.classification import LogReg
from cleanlab.classification import LearningWithNoisyLabels
import pandas as pd
df = pd.read_csv('train_labels.csv')
values = df.values
X = values[:,0]
y = values[:,1:]
lnl = LearningWithNoisyLabels(clf=ResnetTrainer(batch_size=8, epochs=10))
lnl.fit(X, y)
I hope authors of cleanlab can provide a simple example of how to use cleanlab for multi-label training.