分层KFold交叉验证(Keras)值错误:找到dim为4的数组。预计估计值<;=2.

分层KFold交叉验证(Keras)值错误:找到dim为4的数组。预计估计值<;=2.,keras,cross-validation,multiclass-classification,imbalanced-data,k-fold,Keras,Cross Validation,Multiclass Classification,Imbalanced Data,K Fold,我需要使用分层kfold(不平衡的多类任务)交叉验证keras模型。是否可以在(fold=list(StratifiedKFold(k,shuffle=True,random\u state=1)、split(x\u-train,y\u-train))中使用x\u-train/y\u-train和imagedatagenerator(来自目录的flow\u)一起使用?在Kaggle()中也做了类似的事情,但是x\u-train,y\u-train=next(train\u-generator)未

我需要使用分层kfold(不平衡的多类任务)交叉验证keras模型。是否可以在(fold=list(StratifiedKFold(k,shuffle=True,random\u state=1)、split(x\u-train,y\u-train))中使用x\u-train/y\u-train和imagedatagenerator(来自目录的flow\u)一起使用?在Kaggle()中也做了类似的事情,但是x\u-train,y\u-train=next(train\u-generator)未正确映射数据和标签。如有任何帮助,将不胜感激

train_generator = ImageDataGenerator(rescale=1./255).flow_from_directory(
 directory=train_path,
 target_size=input_img[:-1],
 color_mode="rgb",
 batch_size=BATCH_SIZE,
 classes=target_names,
 class_mode="input")

test_generator = ImageDataGenerator(rescale=1./255).flow_from_directory(
 directory=test_path,
 target_size=input_img[:-1],
 color_mode="rgb",
 batch_size=BATCH_SIZE,
 classes=target_names,
 class_mode="input",
 shuffle=False)

test_labels = test_generator.classes

#Instantiate to load data and generate k stratified folds
k = 5
def load_data_kfold(k):
 #For StratifiedKFold, labels (y_train) must be 1-D array of labels (Cannot be one-hot)
 x_train, y_train = next(train_generator)
 print(x_train)
 print(y_train)
 folds = list(StratifiedKFold(k, shuffle=True, random_state=1).split(x_train, y_train))

 return folds, x_train, y_train

folds, x_train, y_train = load_data_kfold(k)

Traceback (most recent call last):
File "C:/Users/LaRoche Lab/PycharmProjects/pythonProject2/R.py", line 122, in <module>
folds, x_train, y_train = load_data_kfold(k)
File "C:/Users/LaRoche Lab/PycharmProjects/pythonProject2/R.py", line 118, in load_data_kfold
folds = list(StratifiedKFold(k, shuffle=True, random_state=1).split(x_train, y_train))
File "C:\Users\LaRoche Lab\Anaconda3\envs\tensorflow\lib\site- 
packages\sklearn\model_selection\_split.py", line 735, in split
y = check_array(y, ensure_2d=False, dtype=None)
File "C:\Users\LaRoche Lab\Anaconda3\envs\tensorflow\lib\site-packages\sklearn\utils\validation.py", 
line 73, in inner_f return f(**kwargs)File "C:\Users\LaRoche Lab\Anaconda3\envs\tensorflow\lib\site- 
packages\sklearn\utils\validation.py", line 642, in check_array
% (array.ndim, estimator_name)) 
ValueError: Found array with dim 4. Estimator expected <= 2.
train\u generator=ImageDataGenerator(重缩放=1./255)。从\u目录中流\u(
目录=列车路径,
目标尺寸=输入尺寸[:-1],
color_mode=“rgb”,
批次大小=批次大小,
类=目标名称,
class_mode=“输入”)
test\u generator=ImageDataGenerator(重缩放=1./255)。从\u目录中流\u(
目录=测试路径,
目标尺寸=输入尺寸[:-1],
color_mode=“rgb”,
批次大小=批次大小,
类=目标名称,
class_mode=“输入”,
洗牌(错误)
测试标签=测试生成器类
#实例化以加载数据并生成k个分层折叠
k=5
def加载数据文件夹(k):
#对于分层折叠,标签(y_序列)必须是标签的一维数组(不能是一个热的)
x\U列,y\U列=下一列(列发电机)
打印(x_系列)
打印(y_列)
折叠=列表(分层折叠(k,shuffle=True,random\u state=1)。拆分(x\u列,y\u列))
返回折叠,x_列车,y_列车
折叠,x\u列,y\u列=加载数据\u kfold(k)
回溯(最近一次呼叫最后一次):
文件“C:/Users/LaRoche Lab/pycharm项目/pythonProject2/R.py”,第122行,在
折叠,x\u列,y\u列=加载数据\u kfold(k)
文件“C:/Users/LaRoche Lab/PycharmProjects/pythonProject2/R.py”,第118行,加载数据文件夹
折叠=列表(分层折叠(k,shuffle=True,random\u state=1)。拆分(x\u列,y\u列))
文件“C:\Users\LaRoche Lab\Anaconda3\envs\tensorflow\lib\site-
packages\sklearn\model\u selection\\u split.py”,第735行,拆分
y=检查数组(y,确保2d=False,dtype=None)
文件“C:\Users\LaRoche Lab\Anaconda3\envs\tensorflow\lib\site packages\sklearn\utils\validation.py”,
第73行,在内部返回f(**kwargs)文件“C:\Users\LaRoche Lab\Anaconda3\envs\tensorflow\lib\site-
packages\sklearn\utils\validation.py”,第642行,在check\u数组中
%(array.ndim,估计器名称))
ValueError:找到具有dim 4的数组。预计估计数