Я использую технику Kmeans SMOTE для передискретизации данных. Когда я увеличиваю количество целей (несколько столбцов / несколько полей), я получаю ошибку. Если я прохожу только одну цель (один столбец), то эта техника работает. Я хочу передать несколько целей (несколько столбцов / несколько полей). Как это сделать?
Пример кода выглядит так:
import numpy as np
from kmeans_smote import KMeansSMOTE
import pandas as pd
datasets = pd.read_csv('data.csv')
feature = datasets[datasets.columns[0:3]]
target = datasets[datasets.columns[3:]]
X, Y = feature, target
Y = Y.values
[print('Class {} has {} instances'.format(label, count))
for label, count in zip(*np.unique(Y, return_counts=True))]
kmeans_smote = KMeansSMOTE( kmeans_args={ 'n_clusters': 9 }, smote_args={ 'k_neighbors': 10 })
X_resampled, y_resampled = kmeans_smote.fit_sample(X, Y)
[print('Class {} has {} instances after oversampling'.format(label, count))
for label, count in zip(*np.unique(y_resampled, return_counts=True))]
print('y_resampled',y_resampled)
пример данных выглядит так:
Здесь «F1, F2, F3, F4» - это особенности, а «С1, С2, С3, С4, С5, С6, С7, С8, С9, С10, С11, С12, С13, С14, С15» представляют собой цели
Данные:
F1 F2 F3 F4 C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15
160202 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 1
160578 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
162582 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 1
160286 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
160290 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 1
160204 0 1 -1 0 1 0 1 0 1 0 0 1 0 0 1 0 0 0
160298 0 1 -1 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1
160602 1 0 -1 0 0 0 0 1 0 1 0 0 1 0 0 1 1 0
160206 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 1 0
Спасибо