Python ShuffleSplit的Sklearn问题

Python ShuffleSplit的Sklearn问题,python,split,sklearn-pandas,autoencoder,Python,Split,Sklearn Pandas,Autoencoder,我有一个名为df_noyau_yes的数据集,我想应用ShuffleSplit将其拆分为训练集和测试集,以训练自动编码器 问题是,该函数返回无序数据的索引,我试图提取这些索引的数据以将其提供给自动编码器,但它不起作用,它向我显示了一个错误KeyError 223 代码如下: rs = ShuffleSplit(n_splits=2, test_size=.25, random_state=0) rs.get_n_splits(df_noyau_yes) for train_index, tes

我有一个名为
df_noyau_yes
的数据集,我想应用ShuffleSplit将其拆分为训练集和测试集,以训练自动编码器

问题是,该函数返回无序数据的索引,我试图提取这些索引的数据以将其提供给自动编码器,但它不起作用,它向我显示了一个错误
KeyError 223

代码如下:

rs = ShuffleSplit(n_splits=2, test_size=.25, random_state=0)
rs.get_n_splits(df_noyau_yes)

for train_index, test_index in rs.split(df_noyau_yes):
   print("TRAIN:", train_index, "TEST:", test_index)
   #X_train, X_test = df_noyau_yes[train_index], df_noyau_yes[test_index]
x_train=[]
for x in train_index:
    x_train = np.append(x_train, df_noyau_yes[x])
    print(x_train)

print("training set",x_train)

有什么解决办法吗

对于按行和列的索引选择数据帧值,使用
iloc

发件人:

.iloc属性是主要的访问方法。以下是 有效输入:

An integer e.g. 5
A list or array of integers [4, 3, 0]
A slice object with ints 1:7
A boolean array
A callable, see Selection By Callable
因此,您只需提供
train\u索引
test\u索引
,即可获得适当的数组

x_train = df_noyau_yes.iloc[train_index].copy()
x_test = df_noyau_yes.iloc[test_index].copy()

我在这里使用
copy()
作为额外的预防措施。因为如果您不使用
copy()
,并尝试在x\u列或x\u测试中更改一个值,将抛出一个警告。

df\u noyau\u yes是一个数据帧吗?如果是,那么您不能像这里这样通过简单的索引来访问样本。是的,这是一个数据帧。那么我该怎么做呢?问题解决了吗?我知道“iloc”方法,但我需要尝试一些洗牌数据的方法:一些动态的而不是静态的方法。@Mari这就是ShuffleSplit在这里所做的。请详细解释您的用例。