Почему я получаю эту ошибку в модели Python ML?

#python #machine-learning #imblearn #smote

Вопрос:

У меня нет проблем с импортом набора данных. Однако, когда я запускаю SMOTE или RandomUnderSampler, я получаю ошибку (однако только в этом наборе данных я сталкиваюсь с этой проблемой, а не с другими). Я даже не могу понять, на какой столбец/поле указывает ошибка. Есть ли какие-либо изменения или настройки, которые мне нужно внести в параметры для SMOTE/RUS?

 #Smote
sm = SMOTE(random_state = 2, k_neighbors= 8) 
X_train_sm, y_train_sm = sm.fit_resample(X_train.values, y_train)

X_train_rm = X_train_sm
y_train_rm = y_train_sm

#RandomUnderSampler
rus = RandomUnderSampler(
sampling_strategy = 'auto',
random_state= 0,
replacement = True)
X_train_rus, y_train_rus = rus.fit_resample(X_train.values, y_train)
 

Ошибка

 Traceback (most recent call last)
<ipython-input-28-b68eb88feabe> in <module>
  5 random_state= 0,
  6 replacement = True)
 ----> 7 X_train_rus, y_train_rus = rus.fit_resample(X_train.values, y_train)
  8 
  9 X_train_rm = X_train_rus

 ~Anaconda3libsite-packagesimblearnbase.py in fit_resample(self, X, y)
 73             The corresponding label of `X_resampled`.
 74         """
 ---> 75         check_classification_targets(y)
 76         arrays_transformer = ArraysTransformer(X, y)
 77         X, y, binarize_y = self._check_X_y(X, y)

 ~Anaconda3libsite-packagessklearnutilsmulticlass.py in check_classification_targets(y)
167     y : array-like
168     """
--> 169     y_type = type_of_target(y)
170     if y_type not in ['binary', 'multiclass', 'multiclass-multioutput',
171                       'multilabel-indicator', 'multilabel-sequences']:

~Anaconda3libsite-packagessklearnutilsmulticlass.py in type_of_target(y)
288         return 'continuous'   suffix
289 
--> 290     if (len(np.unique(y)) > 2) or (y.ndim >= 2 and len(y[0]) > 1):
291         return 'multiclass'   suffix  # [1, 2, 3] or [[1., 2., 3]] or [[1, 2]]
292     else:

<__array_function__ internals> in unique(*args, **kwargs)

 ~Anaconda3libsite-packagesnumpylibarraysetops.py in unique(ar, return_index, return_inverse, 
 return_counts, axis)
 261     ar = np.asanyarray(ar)
 262     if axis is None:
 --> 263         ret = _unique1d(ar, return_index, return_inverse, return_counts)
 264         return _unpack_tuple(ret)
 265 

 ~Anaconda3libsite-packagesnumpylibarraysetops.py in _unique1d(ar, return_index, 
  return_inverse, return_counts)
  309         aux = ar[perm]
  310     else:
  --> 311         ar.sort()
  312         aux = ar
  313     mask = np.empty(aux.shape, dtype=np.bool_)
  TypeError: '<' not supported between instances of 'float' and 'str'
 

Комментарии:

1. Вы просите нас представить код, который вы запускаете, и рассказать вам, в чем может заключаться проблема с ним. Знать, что иногда это работает, недостаточно, чтобы продолжать. Очевидно, что если это иногда работает, то виноват способ, которым ваш код использует его. Сообщение об ошибке предполагает, что вы передаете ему данные, содержащие строку, в которой код ожидает значение с плавающей точкой. Ни с кодом, ни с данными невозможно быть более конкретным.

2. Я добавил удар и случайный код под сэмплером, если это поможет. Данные являются конфиденциальными, поэтому я не могу ими поделиться.

3. Хорошо, если данные конфиденциальны, создайте небольшое количество вымышленных данных, которыми вы можете поделиться, чтобы мы могли воспроизвести проблему. Сообщение об ошибке жалуется на тип некоторых данных, с которыми оно имеет дело. Без некоторых данных, которые воплощают проблему, мы не сможем ее решить.