各位朋友大家好,我是环湖医院的医生飞时过,今天好几个医生问我,关于机器学习怎么处理共线性的问题,其实这个问题首先是要明确构建模型的目的,如果是预测的话,是不需要刻意去考虑的,假如您构建模型是为了看不同的自变量对因变量的影响,那就要考虑共线性了。今天把计算相关系数和方差膨胀因子的全代码给大家。
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#sklearn内置数据集的导入
from sklearn.datasets import load_iris
def sklearn_to_df(sklearn_dataset):
df = pd.DataFrame(sklearn_dataset.data, columns=sklearn_dataset.feature_names)
df['target'] = pd.Series(sklearn_dataset.target)
return df
df = sklearn_to_df(load_iris())
import numpy as np
#构建共线性矩阵
corr = df.corr()
cmap = sns.diverging_palette(230, 20, as_cmap=True) #颜色设置
mask = np.triu(np.ones_like(corr, dtype=bool)) #取对角阵
fig, ax = plt.subplots(figsize=(10,6))
sns.heatmap(corr, center=0, cmap="coolwarm", square=True,
linewidth