有一个323列和10348行的数据帧。我想用下面的代码用分层k-Fold来划分它
df= pd.read_csv("path")
x=df.loc[:, ~df.columns.isin(['flag'])]
y= df['flag']
StratifiedKFold(n_splits=5, random_state=None, shuffle=False)
for train_index, test_index in skf.split(x, y):
print("TRAIN:", train_index, "TEST:", test_index)
x_train, x_test = x[train_index], x[test_index]
y_train, y_test = y[train_index], y[test_index]
但是我得到了以下错误
KeyError: "None of [Int64Index([ 0, 1, 2, 3, 4, 5, 6, 7, 8,\n 10,\n ...\n 10338, 10339, 10340, 10341, 10342, 10343, 10344, 10345, 10346,\n 10347],\n dtype='int64', length=9313)] are in the [columns]"
有人告诉我为什么会出现这个错误以及如何修复它吗
尝试按如下方式将pandas dataframe更改为numpy阵列:
pd.DataFrame({"A": [1, 2], "B": [3, 4]}).to_numpy()
array([[1, 3],
[2, 4]])
您也可以使用df.take(indices_list,轴=0)
x\u列车,x\u测试=x.take(列表(列车索引),轴=0),x.take(列表(测试索引),轴=0)
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.take.html
似乎您有一个数据帧切片问题,而不是StratifiedKFold本身有问题。我为此制作了一个df,并使用iloc在这里切片索引数组来解决这个问题:
from sklearn import model_selection
# The list of some column names in flag
flag = ["raw_sentence", "score"]
x=df.loc[:, ~df.columns.isin(flag)].copy()
y= df[flag].copy()
skf =model_selection.StratifiedKFold(n_splits=2, random_state=None, shuffle=False)
for train_index, test_index in skf.split(x, y):
print("TRAIN:", train_index, "TEST:", test_index)
x_train, x_test = x.iloc[list(train_index)], x.iloc[list(test_index)]
训练索引和测试索引是nd数组有点搞砸了这里的工作,我把它们转换成列表。
你可以参考:https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html
官方指南 我正在尝试使用官方的最新示例代码StratifiedKFold 我的代码 我将所有日期保存在两个数据帧X、y中,分别为整数值和浮点值 错误 我尝试过的解决方案 他在不同的位置有错误-键错误:无[Int64Index…]dtype='int64]在列中
将测试和列车数据输入ROC曲线图时,我收到以下错误: KeyError:“[Int64Index([0,1,2,…dtype='int64',length=1323])中没有一个在[columns]中” 错误似乎是说它不喜欢我的数据格式,但它在第一次运行时起作用,我无法让它再次运行。 我是否错误地拆分数据或将格式错误的数据发送到函数中? 阅读几个StackOverflow帖子与相同的KeyErro
下面是一个小版本的代码,其中我得到了这个错误: KeyError:"[Int64Index([...],dtype='int64')]都不在[列]" '...' 是一系列似乎与我的X和y数据帧的索引匹配的数字。 我使用Mlens包在一个非常大的数据集上与SuperLearner一起建模(因此可伸缩性非常重要)。我的目标是使用数据帧结构,而不是Numpy数组。这将解决下游问题。 到目前为止,我已经探
法典:- 错误 我试图在列和它们的前陈列室价格之间画一个箱线图。前展厅价格的值是分类的,因此,我首先将它们转换为整数,然后尝试绘制箱线图,但它会抛出错误,关键错误:“None of [Int64Index...] dtype='int64]在列中。
有人可以解释为什么这段代码: 引发此错误: 我看到了这个答案,但我的专栏长度是相等的。
使用简单的按预期设置所有标头。 什么样的问题可能导致这种行为?