#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. Хорошо, если данные конфиденциальны, создайте небольшое количество вымышленных данных, которыми вы можете поделиться, чтобы мы могли воспроизвести проблему. Сообщение об ошибке жалуется на тип некоторых данных, с которыми оно имеет дело. Без некоторых данных, которые воплощают проблему, мы не сможем ее решить.