Выходные статмодели с коэффициентом инфляции отклонения

#python #pandas #statistics #statsmodels

#python #pandas #Статистика #статмодели

Вопрос:

Я пытаюсь найти мультиколлинеарность с помощью statsmodels, но вывод моего кода показывает не коэффициенты инфляции дисперсии, а как фрейм данных объектов генератора:

 from statsmodels.stats.outliers_influence import variance_inflation_factor
variables = df[['Mileage','Year','EngineV']]
vif = pd.DataFrame()
vif['VIF'] = (variance_inflation_factor(variables.values,i) for i in range(variables.shape[1]))
vif['features'] = variables.columns
  

результаты на выходе

                                                  VIF  | features
  ---------------------------------------------------------------
0 | <generator object <genexpr> at 0x0000023A9F204... | Mileage
1 | <generator object <genexpr> at 0x0000023A9F204... |    Year
2 | <generator object <genexpr> at 0x0000023A9F204... | EngineV

  

вместо того, чтобы указывать фактические значения. Я уверен, что это легко исправить, но я очень новичок в Python и кодировании. Спасибо

Комментарии:

1.Шаблон (<expression> for <var> in <iterable>) является пониманием генератора, попробуйте вместо этого использовать квадратные скобки для понимания списка [<expression> for <var> in <iterable>]

Ответ №1:

Вы должны преобразовать свой генератор в список. Вы можете использовать понимание списка или функцию list().

 vif['VIF'] = [variance_inflation_factor(variables.values,i) for i in range(variables.shape[1])]
  

или

 vif['VIF'] = list((variance_inflation_factor(variables.values,i) for i in range(variables.shape[1])))