【发布时间】:2020-03-26 00:50:00
【问题描述】:
我已尝试在 Python 3.7 中运行以下代码,以循环遍历数据框“Rawdata”中的每个数据列组合,以使用 statsmodel 库创建回归模型的子集并返回最佳模型。在我运行最后一行之前,代码不会抛出任何错误:best_subset(X, Y)。它返回:“IndexingError: Too many indexers”。
知道出了什么问题/如何解决吗?
如果有人可以提供帮助,那就太好了!谢谢
#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)
【问题讨论】:
标签: python-3.x pandas python-3.7 statsmodels