方差 inflation 因子输出统计模型
Variance inflation factor output statsmodels
我正在尝试使用 statsmodels 找到多重共线性,但我的代码的输出没有显示方差 inflation 因素,而是作为生成器对象的数据框:
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 和编码还很陌生。谢谢
您应该将生成器转换为列表。您可以使用列表理解或 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])))
我正在尝试使用 statsmodels 找到多重共线性,但我的代码的输出没有显示方差 inflation 因素,而是作为生成器对象的数据框:
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 和编码还很陌生。谢谢
您应该将生成器转换为列表。您可以使用列表理解或 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])))