如何解决从分类数据集中去除冗余特征 ( make_classification )
在 make_classification 方法中,
X,y = make_classification(n_samples=10,n_features=8,n_informative=7,n_redundant=1,n_repeated=0,n_classes=2,random_state=6)
关于n_redundant的文档字符串:冗余特征的数量。这些特征生成为 信息特征的随机线性组合。
关于n_repeated的文档字符串:重复特征的数量,从信息中随机抽取
- n_repeated 特征很容易被选取,因为它们与信息特征高度相关。
- 重复和冗余特征的文档字符串表明两者都来自信息特征。
我的问题是:如何删除/突出显示冗余特征,它们的特征是什么。
附上所有特征之间的相关热图,图像中哪个特征是冗余的。
解决方法
- 要检查有多少独立列使用
np.linalg.matrix_rank(X)
- 要查找矩阵 X 的线性无关行的索引,请使用
sympy.Matrix(X).rref()
演示
生成数据集并检查独立列数(矩阵秩):
from sklearn.datasets import make_classification
from sympy import Matrix
X,_ = make_classification(
n_samples=10,n_features=8,n_redundant=2,random_state=6
)
np.linalg.matrix_rank(X,tol=1e-3)
# 6
查找线性独立列的索引:
_,inds = Matrix(X).rref(iszerofunc=lambda x: abs(x)<1e-3)
inds
#(0,1,2,3,6,7)
移除相关列并检查矩阵秩(独立列数):
#linearly independent
X_independent = X[:,inds]
assert np.linalg.matrix_rank(X_independent,tol=1e-3) == X_independent.shape[1]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。