Как сохранить синтетический набор данных в CSV-файл, используя SMOTE - PullRequest
0 голосов
/ 01 ноября 2019

Я использую данные кредитной карты для передискретизации с использованием SMOTE. Я использую код, написанный на geeksforgeeks.org (ссылка)

После запуска следующего кода он сообщает что-то вроде этого:

print("Before OverSampling, counts of label '1': {}".format(sum(y_train == 1))) 
print("Before OverSampling, counts of label '0': {} \n".format(sum(y_train == 0))) 

# import SMOTE module from imblearn library 
# pip install imblearn (if you don't have imblearn in your system) 
from imblearn.over_sampling import SMOTE 
sm = SMOTE(random_state = 2) 
X_train_res, y_train_res = sm.fit_sample(X_train, y_train.ravel()) 

print('After OverSampling, the shape of train_X: {}'.format(X_train_res.shape)) 
print('After OverSampling, the shape of train_y: {} \n'.format(y_train_res.shape)) 

print("After OverSampling, counts of label '1': {}".format(sum(y_train_res == 1))) 
print("After OverSampling, counts of label '0': {}".format(sum(y_train_res == 0))) 

Вывод:

Before OverSampling, counts of label '1': 345
Before OverSampling, counts of label '0': 199019 

After OverSampling, the shape of train_X: (398038, 29)
After OverSampling, the shape of train_y: (398038,) 

After OverSampling, counts of label '1': 199019
After OverSampling, counts of label '0': 199019

Поскольку я совершенно новый в этой области. Я не могу понять, как показать эти данные в формате CSV. Я буду очень рад, если кто-нибудь поможет мне в этом вопросе.

Или, если есть какая-либо ссылка, откуда я могу сделать синтетические данные из набора данных, используя SMOTE, и сохранить обновленный набор данных в файле CSV, пожалуйста, укажите это.

Что-то похожее на следующее изображение:

enter image description here

Заранее спасибо.

1 Ответ

0 голосов
/ 01 ноября 2019

Из того, что я вижу из вашего кода, ваши X_train_res и другие являются массивами Python Numpy. Вы можете сделать что-то вроде этого:

import numpy as np
import pandas as pd

y_train_res = y_train_res.reshape(-1, 1) # reshaping y_train to (398038,1)
data_res = np.concatenate((X_train_res, y_train_res), axis = 1)
data.savetxt('sample_smote.csv', data_res, delimiter=",")

Не могу запустить и проверить это, но дайте мне знать, если у вас возникнут какие-либо проблемы.

Примечание: вам нужно будет сделать что-то еще, чтобы добавить к нему метки столбцов. Дайте мне знать, как только вы пройдете через это и вам потребуется помощь.

...