#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])))