Search

다중공선성 확인

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
복사