Как использовать SMOTE для данных списка структур при сохранении структуры - PullRequest
0 голосов
/ 01 мая 2020

Мои несбалансированные тренировочные данные имеют следующую структуру:

[
[
[2.2079929344226097e-05,
  7.354293068578783e-06,
  1.713310445263026e-05],
 [2.2079929344226097e-05,
  7.354293068578783e-06,
  1.713310445263026e-05]
],
[
[3.2079929344226097e-05,
  1.354293068578783e-06,
  2.713310445263026e-05],
 [2.2079929344226097e-05,
  2.354293068578783e-06,
  3.713310445263026e-05]
],
[
[4.2079929344226097e-05,
  4.354293068578783e-06,
  4.713310445263026e-05],
 [4.2079929344226097e-05,
  4.354293068578783e-06,
  3.713310445263026e-05]
]
]

, и мои метки выглядят так:

[
[1, 1],
[1, 0],
[1, 1]
]

Если я сглажу данные, я смогу запустить SMOTE через sklearn успешно с этим кодом:

X = data
y = labels

sm = SMOTE(random_state=42)
X, y = sm.fit_resample(X, y)
# keras function to convert multiclass to float vector
y = to_categorical(y, dtype='float32')
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

Однако я получаю эту ошибку при попытке запустить код на структурированных данных / метках:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-64-60c6ccd3d7d6> in <module>()
      3 
      4 sm = SMOTE(random_state=42)
----> 5 X, y = sm.fit_resample(X, y)
      6 y = to_categorical(y, dtype='float32')
      7 

3 frames
/usr/local/lib/python3.6/dist-packages/sklearn/utils/validation.py in check_array(array, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)
    554                     "Reshape your data either using array.reshape(-1, 1) if "
    555                     "your data has a single feature or array.reshape(1, -1) "
--> 556                     "if it contains a single sample.".format(array))
    557 
    558         # in the future np.flexible dtypes will be handled like object dtypes

ValueError: Expected 2D array, got 1D array instead:

Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...