Я использую statsmodels для линейных регрессий и itertools, чтобы найти комбинации
У меня есть CSV-файл с несколькими заголовками и различными числовыми значениями, аналогичными приведенным ниже
A |Б |C
1 |1.1 |0,95
2 |2.1 |1,95
3 |3.1 |2.95
Я пытаюсь использовать комбинации, чтобы найти возможные значения R ^ 2 при использовании 1, 2, ... X столбцов с statsmodels
import numpy as np
import pandas as pd
import statsmodels.api as sm
from pandas import DataFrame
from itertools import combinations
import csv
df = pd.read_csv("All_Holes_No_B.csv")
Stats = ["A","B",..."X"]
for i in range(1, len(Stats)+1):
for c in combinations(Stats,i):
X= df[[c]]
y = df["K"]
model = sm.OLS(y, X).fit()
predictions = model.predict(X)
print(model.rsquared)
Я получаю код ошибки, которыйговорит
KeyError: "Ни один из [Index ([('A',)], dtype = 'object')] не находится в [столбцах]"
Когда я жестко кодирую взначения для использования X=df[["A","B"..."X"]]
это прекрасно работает. Могу ли я получить руку, чтобы мне не пришлось делать 500+ запусков вручную.
-edit-
Вот полное сообщение об ошибке
Traceback (most recent call last):
File "C:\00MasterProject\Loop_Regression.py", line 29, in <module>
X= df[[list(z)]]
File "C:\...\Python\Python37-32\lib\site-packages\pandas\core\frame.py", line 2986, in __getitem__
indexer = self.loc._convert_to_indexer(key, axis=1, raise_missing=True)
File "C:\...\Python\Python37-32\lib\site-packages\pandas\core\indexing.py", line 1285, in _convert_to_indexer
return self._get_listlike_indexer(obj, axis, **kwargs)[1]
File "C:\...\Python\Python37-32\lib\site-packages\pandas\core\indexing.py", line 1092, in _get_listlike_indexer
keyarr, indexer, o._get_axis_number(axis), raise_missing=raise_missing
File "C:\...\Python\Python37-32\lib\site-packages\pandas\core\indexing.py", line 1177, in _validate_read_indexer
key=key, axis=self.obj._get_axis_name(axis)
KeyError: "None of [Index([('A', 'B')], dtype='object')] are in the [columns]"