Как применить метод Kmeans SMOTE для передискретизации данных? - PullRequest
0 голосов
/ 15 марта 2019

Я использую технику 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

Спасибо

...