python - 方差膨胀因子输出统计模型
问题描述
我正在尝试使用 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 和编码非常陌生。谢谢
解决方案
您应该将生成器转换为列表。您可以使用 list comprehansion 或 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])))
推荐阅读
- angular - 回调按钮时角度删除查询参数
- javascript - 反应本机(博览会)网络视图错误 net::ERR_CACHE_MISS
- php - DiscriminatorMap 注解中的环境变量或函数
- laravel - Api Endpoint 中不存在 Authorizarion 标头 - Laravel
- javascript - 如何使最小填充图表js折线图
- angular - 从 Angular 8 应用程序向身份验证 API 端点发出请求会导致 CORS 错误,而来自 Postman 的相同请求可以完美运行文件
- laravel - .env 文件中的 MySQL 密码不起作用,但在 database.php 中工作正常(env() 缓存旧密码,config:clear 不会删除它)
- mysql-8.0 - MySQLSyntaxErrorException:升级时您的 SQL 语法有错误
- jquery - 如何在jQuery中声明和初始化变量
- android-studio - 如何在模拟器上安装应用程序导致 adb 出错