DropCorrelatedFeatures#
The DropCorrelatedFeatures()
从数据框中查找并移除相关变量。相关性通过 pandas.corr()
计算。pandas.corr()
支持的所有相关性方法都可以用于选择,包括 Spearman、Kendall 或 Spearman。你也可以传递一个自定义的相关性函数,前提是它返回一个介于 -1 和 1 之间的值。
功能是按照先找到先删除的原则进行删除,没有任何进一步的洞察。也就是说,第一个功能将被保留,所有与此相关的后续功能都将被删除。
转换器将自动检查所有数值变量。请注意,您可以传递一个包含分类变量和日期时间变量的数据框,这些变量将自动被忽略。或者,您可以传递一个包含您希望评估的变量的列表。
示例
让我们创建一个玩具数据框,其中4个特征是相关的:
import pandas as pd
from sklearn.datasets import make_classification
from feature_engine.selection import DropCorrelatedFeatures
# make dataframe with some correlated variables
def make_data():
X, y = make_classification(n_samples=1000,
n_features=12,
n_redundant=4,
n_clusters_per_class=1,
weights=[0.50],
class_sep=2,
random_state=1)
# trasform arrays into pandas df and series
colnames = ['var_'+str(i) for i in range(12)]
X = pd.DataFrame(X, columns =colnames)
return X
X = make_data()
现在,我们设置 DropCorrelatedFeatures()
来查找并移除(绝对)相关系数大于0.8的变量:
tr = DropCorrelatedFeatures(variables=None, method='pearson', threshold=0.8)
通过 fit()
方法,转换器找到相关变量,并通过 transform()
方法将其从数据集中删除:
Xt = tr.fit_transform(X)
相关特征组存储在转换器的属性中:
tr.correlated_feature_sets_
[{'var_0', 'var_8'}, {'var_4', 'var_6', 'var_7', 'var_9'}]
我们可以通过检查字典来确定每个组中哪些功能将被保留,哪些将被移除:
tr.correlated_feature_dict_
在下面的字典中,我们看到从第一个相关组中,var_0
是一个键,因此它将被保留,而 var_8
是一个值,这意味着它与 var_0
相关,因此将被移除。
{'var_0': {'var_8'}, 'var_4': {'var_6', 'var_7', 'var_9'}}
同样地,var_4
是一个关键变量,将被保留,而变量 6、7 和 8 被发现与 var_4
相关,因此将被移除。
将从数据集中移除的特征也存储在不同的属性中:
tr.features_to_drop_
['var_8', 'var_6', 'var_7', 'var_9']
如果我们现在继续打印转换后的数据,我们会看到相关特征已经被移除。
print(print(Xt.head()))
var_0 var_1 var_2 var_3 var_4 var_5 var_10 \
0 1.471061 -2.376400 -0.247208 1.210290 -3.247521 0.091527 2.070526
1 1.819196 1.969326 -0.126894 0.034598 -2.910112 -0.186802 1.184820
2 1.625024 1.499174 0.334123 -2.233844 -3.399345 -0.313881 -0.066448
3 1.939212 0.075341 1.627132 0.943132 -4.783124 -0.468041 0.713558
4 1.579307 0.372213 0.338141 0.951526 -3.199285 0.729005 0.398790
var_11
0 -1.989335
1 -1.309524
2 -0.852703
3 0.484649
4 -0.186530
其他资源#
在这个笔记本中,我们展示了如何使用 DropCorrelatedFeatures()
与不同的关系度量:
所有笔记本都可以在 专用仓库 中找到。
有关此功能选择方法及其他方法的更多详细信息,请查看以下资源:
或者阅读我们的书:
我们的书籍和课程都适合初学者和更高级的数据科学家。通过购买它们,您正在支持 Feature-engine 的主要开发者 Sole。