是否有任何 python 框架采用数据框并给出所有重要关系?

数据挖掘 Python
2022-03-14 12:25:47

是否有任何 python 框架接受数据框并给出所有重要关系?

例如,当特征 3(名义)等于一个特殊值时,特征 1 和特征 2 具有很强的相关性。

3个回答

有一个使用名为pandas-profiling的 Python 包的单线解决方案,它可以让您快速进入最关键的统计解释分析,包括各种相关性等等。该文档提供了一个值得检查的演示。

一种方法是计算 VIF(方差膨胀因子)。应删除具有最高 VIF 的特征。一般的经验法则是VIF应该小于10。如果你想试试看,可以看这里!

我有一个数据集,我已经分离了自变量 X 和因变量 y。

X
Out[20]: 
array([[  1.  ,   7.  ,   0.27, ...,   3.  ,   0.45,   8.8 ],
       [  1.  ,   6.3 ,   0.3 , ...,   3.3 ,   0.49,   9.5 ],
       [  1.  ,   8.1 ,   0.28, ...,   3.26,   0.44,  10.1 ],
       ..., 
       [  1.  ,   6.5 ,   0.24, ...,   2.99,   0.46,   9.4 ],
       [  1.  ,   5.5 ,   0.29, ...,   3.34,   0.38,  12.8 ],
       [  1.  ,   6.  ,   0.21, ...,   3.26,   0.32,  11.8 ]])
y
Out[21]: array([6, 6, 6, ..., 6, 7, 6])

如果我想找出要删除的功能,我将按如下方式计算 VIF。

X_opt = X[:,[0,1,2,3,4,5,6,7,8,9,10,11]]

from statsmodels.stats.outliers_influence import variance_inflation_factor
vif = pd.DataFrame()
vif["VIF Factor"] = [variance_inflation_factor(X_opt, i) for i in range(X_opt.shape[1])]
vif.round(1)


Out[23]: 
    VIF Factor
0    3067855.6
1          2.7
2          1.1
3          1.2
4         12.6
5          1.2
6          1.8
7          2.2
8         28.2
9          2.2
10         1.1
11         7.7

请注意,0 具有最高的 VIF。因此,0 具有高度相关性。现在,我们删除它并再次尝试计算 VIF。

X_opt = X[:,[1,3,4,5,6,7,8,9,10,11]]

vif = pd.DataFrame()
vif["VIF Factor"] = [variance_inflation_factor(X_opt, i) for i in range(X_opt.shape[1])]
vif.round(1)


Out[25]: 
   VIF Factor
0        92.8
1         9.7
2         3.8
3         6.4
4         8.9
5        23.7
6      1051.4
7       607.9
8        20.5
9       114.3

现在我们看到第 6 个特征具有最高的 VIF。我们将继续删除此类具有高 VIF 的功能。我会把剩下的留给你。

快速查找您在这里谈论的关系的最佳方法是通过数据可视化。特别是,相关矩阵在一个图中实现了您所寻找的关于两个变量的结果。

一旦您发现一对变量是相关的,您可以使用这两个变量作为 x,y 创建一个 3d 散点图,然后尝试所有其他变量作为 z 以尝试检测您提到的第三个相关特征。