是否有任何 python 框架接受数据框并给出所有重要关系?
例如,当特征 3(名义)等于一个特殊值时,特征 1 和特征 2 具有很强的相关性。
是否有任何 python 框架接受数据框并给出所有重要关系?
例如,当特征 3(名义)等于一个特殊值时,特征 1 和特征 2 具有很强的相关性。
有一个使用名为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 以尝试检测您提到的第三个相关特征。