Я хочу использовать класс FunctionSampler
из imblearn
, чтобы создать свой собственный класс для повторной выборки моего набора данных.
У меня есть одномерная серия объектов, содержащая пути для каждого объекта и метка Серия содержащие ярлыки для каждого предмета. Оба происходят от pd.DataFrame
. Я знаю, что мне нужно сначала изменить массив объектов, поскольку он одномерный.
Когда я использую класс RandomUnderSampler
, все работает нормально, однако, если я сначала передаю функции и метки методу fit_resample
FunctionSampler
, который затем создает экземпляр RandomUnderSampler
, а затем вызывает fit_resample
в этом классе я получаю следующую ошибку:
ValueError: не удалось преобразовать строку в число с плавающей точкой: 'path_1'
Вот минимальный пример, выдающий ошибку:
import pandas as pd
from imblearn.under_sampling import RandomUnderSampler
from imblearn import FunctionSampler
# create one dimensional feature and label arrays X and y
# X has to be converted to numpy array and then reshaped.
X = pd.Series(['path_1','path_2','path_3'])
X = X.values.reshape(-1,1)
y = pd.Series([1,0,0])
ПЕРВЫЙ МЕТОД (работает)
rus = RandomUnderSampler()
X_res, y_res = rus.fit_resample(X,y)
ВТОРОЙ МЕТОД (не работает)
def resample(X, y):
return RandomUnderSampler().fit_resample(X, y)
sampler = FunctionSampler(func=resample)
X_res, y_res = sampler.fit_resample(X, y)
Кто-нибудь знает, что здесь не так? Похоже, что метод fit_resample
для FunctionSampler
не равен методу fit_resample
для RandomUnderSampler
...