Я попытался выполнить приведенный ниже код в Python 3,7 до l oop через каждую комбинацию столбцов данных в фрейме данных «Rawdata», чтобы создать подмножество моделей регрессии с использованием библиотеки statsmodel и вернуть наилучшую. Код не выдает никаких ошибок, пока я не выполню последнюю строку: best_subset (X, Y). Он возвращает: «IndexingError: Слишком много индексаторов».
Есть идеи, что не так / как исправить?
Было бы здорово, если кто-то может помочь! Спасибо
#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)