“没有 [Int64Index , 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,\n ...... dtype='int64 ')] 在 [列] 中”

plg*_*ent 4 dataframe pandas scikit-learn

我目前正在尝试对 pandas 数据框执行 KFold,从 csv 读取 pandas 文件。不幸的是我收到错误:

“没有 [Int64Index , 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,\n ...... dtype='int64 ')] 在 [列] 中”

这是我的代码:

def getSlicesOfData(read_csv):
    slice_training_data = read_csv[["player", "0", "1", "2", "3", "4", "5", "6", "7", "8"]]
    slice_prediction_data = read_csv[["best_move"]]
    return (slice_training_data, slice_prediction_data)

def getKFold(data_sliced):
    kf = KFold(n_splits=10, random_state=None, shuffle=False)
    return kf.split(data_sliced[0],data_sliced[1])
    #return TimeSeriesSplit(n_splits=10, max_train_size=9)

if __name__ == "__main__":
    read_csv = pd.read_csv('100games.csv')
    data_slice = getSlicesOfData(read_csv)
    for train_index, test_index in getKFold(data_slice):
        x_train, x_test = data_slice[0][train_index], data_slice[0][test_index]
        y_train, y_test = data_slice[1][train_index],data_slice[1][test_index]
Run Code Online (Sandbox Code Playgroud)

如果我在尝试获取训练数据时做错了什么:

x_train, x_test = data_slice[0][train_index], data_slice[0][test_index]
            y_train, y_test = data_slice[1][train_index],data_slice[1][test_index]
Run Code Online (Sandbox Code Playgroud)

小智 6

您正在尝试对 pandas 数据框执行 K-fold,这就是问题所在。尝试将数据结构从 pandas 更改为 numpy,然后重新运行代码。最后,您可能希望将数据结构从 numpy 更改回 pandas。


mak*_*kis 5

使用以下方法转换为 numpy:data_slice[0].values[train_index]

尝试:

if __name__ == "__main__":
    read_csv = pd.read_csv('100games.csv')
    data_slice = getSlicesOfData(read_csv)
    for train_index, test_index in getKFold(data_slice):
        x_train, x_test = data_slice[0].values[train_index], data_slice[0].values[test_index]
        y_train, y_test = data_slice[1].values[train_index], data_slice[1].values[test_index]

Run Code Online (Sandbox Code Playgroud)

另请参阅:/sf/answers/3576382421/