SMOTENC: не удалось преобразовать строку в число с плавающей запятой

У меня есть несбалансированные данные, что процент M составляет 80%, а F 20%. Ниже приведен пример данных:

NAME    COUNTRY HEIGHT  HANDPHONE TYPE  GENDER
NOVI    USA     160 samsung SM-G610F    F
JOHN    JAPAN   181 vivo 1718           M
RICHARD UK      175 samsung SM-G532G    M
ANTHONY UK      179 OPPO F1fw           M
SAMUEL  UK      185 Iphone 8 plus       M
BUNGA   KOREA   170 Iphone 6s           F

Итак, я хочу сбалансировать данные с процентным соотношением M:F 50%:50%, используя SMOTENC. Я пробовал этот сценарий:

import numpy as np
import pandas as pd
import scipy.stats as stats
import sklearn
import keras
import imblearn
import matplotlib.pyplot as plt
import seaborn as sns
plt.style.use('ggplot')

df=pd.read_excel('Data for oversampling.xlsx')
Data = df
Data.GENDER.replace({'M':0,'F':1},inplace=True)
sns.countplot('GENDER', data = Data)
y = Data.GENDER
x = Data.drop('GENDER', axis=1)

from imblearn.over_sampling import SMOTENC
smote_nc = SMOTENC(categorical_features=[0,3], random_state=0)
x_resampled, y_resampled = smote_nc.fit_resample(x, y)

но я получаю такую ​​ошибку:

could not convert string to float

Кто-нибудь может помочь?

1 ответ

В вашем наборе данных все ваши объекты являются категориальными, за исключением функции 2, которая является единственной некатегориальной. Вам необходимо обновить список категориальных_функций.

Другие вопросы по тегам