我正在 python 中执行机器学习系统模块的练习,该模块采用汽车数据集(气缸、年份、消耗量......)并要求模型,作为预测汽油消耗量的变量。由于它具有三个分类变量,因此我生成了假人。
在练习中,我需要消除具有多重共线性的变量,因此我使用了课程笔记中显示的方法:
from sklearn.linear_model import LinearRegression
def calculateVIF(data):
features = list(data.columns)
num_features = len(features)
model = LinearRegression()
result = pd.DataFrame(index = ['VIF'], columns = features)
result = result.fillna(0)
for ite in range(num_features):
x_features = features[:]
y_featue = features[ite]
x_features.remove(y_featue)
x = data[x_features]
y = data[y_featue]
model.fit(data[x_features], data[y_featue])
result[y_featue] = 1/(1 - model.score(data[x_features], data[y_featue]))
return result
然后,如果我启动该方法,它会为每个变量计算一个系数:
在我的课程笔记中说:
- 是一个很高的价值。
- 是一个非常高的价值
我该怎么办?我需要删除具有在执行模型之前?
我看到的问题是,对于我的分类变量汽缸,只有汽缸_5 的 VIF 低于 10,所以我应该删除其他汽缸并留下 cyclinders_5 吗?

