Использование комбинаций в линейных регрессиях - PullRequest
1 голос
/ 27 октября 2019

Я использую 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]"
...