如何修复 Python/Pandas too many indexers 错误?

How to fix Python/Pandas too many indexers error?

我已经尝试 运行 下面 Python 3.7 中的代码循环遍历数据框中数据列的每个组合 'Rawdata' 使用 statsmodel 库创建回归模型的子集returns 最好的一个。在我 运行 最后一行之前,代码不会抛出任何错误:best_subset(X, Y)。它 returns : "IndexingError: Too many indexers".

知道 wrong/how 要修复什么吗?

如果有人能提供帮助就太好了!谢谢

#Data
Rawdata = pd.read_csv(r'C:\Users\Lucas\Documents\sample.csv')

#Main code
def best_subset(X, Y):
    n_features = X.shape[1]
    subsets = chain.from_iterable(combinations(range(n_features), k+1) for k in range(n_features))
    best_score = -np.inf
    best_subset = None
    for subset in subsets:
        lin_reg = sm.OLS(Y, X.iloc[:, subset]).fit()
        score = lin_reg.rsquared_adj
        if score > best_score:
            best_score, best_subset = score, subset
    return best_subset, best_score

#Define data inputs and call code above
X = Rawdata.iloc[:, 1:10]
Y = Rawdata.iloc[:, 0]

#To return best model
best_subset(X, Y)

您的循环变量子集可以是长度为 n_features 的元组。例如,如果子集是 (0, 1),则回归显示为

lin_reg = sm.OLS(Y, X.iloc[:, (0, 1)]).fit()

Pandas 不知道如何处理(参见 )。一种解决方案是将子集的类型从元组转换为列表:

for subset in subsets:
    subset = list(subset)
    lin_reg = sm.OLS(Y, X.iloc[:, subset]).fit()