statsmodels 라이브러리 - variance_inflation_factor()
from statsmodels.stats.outliers_influence import variance_inflation_factor
features_org = train.columns[1:-1]
train_x = train[features_org]
vif = pd.DataFrame()
vif["features"] = train_x.columns
# 빈 리스트를 생성합니다.
VIF_list = []
# 각 피처에 대해 반복합니다.
for i in range(len(train_x.columns)):
# variance_inflation_factor 함수를 사용하여 해당 피처의 VIF 값을 계산합니다.
VIF_value = variance_inflation_factor(train_x.values, i)
# 계산된 VIF 값을 리스트에 추가합니다.
VIF_list.append(VIF_value)
# VIF 값 리스트를 DataFrame에 추가합니다.
vif["VIF"] = VIF_list
display(vif)
Python
복사
features | VIF |
Pregnancies | 3.258236 |
Glucose | 16.758235 |
BloodPressure | 14.606656 |
SkinThickness | 3.905130 |
Insulin | 2.064910 |
BMI | 18.905627 |
DiabetesPedigreeFunction | 3.119245 |
Age | 12.800928 |
# Set the figure size
plt.figure(figsize=(10, 4))
# Create a bar plot of VIF values
sns.barplot(x="VIF", y="features", data=vif.sort_values("VIF", ascending=False))
# Show the plot
plt.show()
Python
복사