从分类数据集中删除冗余特征( make_classification )
Posted
技术标签:
【中文标题】从分类数据集中删除冗余特征( make_classification )【英文标题】:Removing the redundant feature from classification dataset ( make_classification ) 【发布时间】:2021-04-09 10:19:33 【问题描述】:在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 特征很容易被挑选出来,因为它们与信息丰富的特征高度相关。
重复和冗余特征的文档字符串表明两者都是从信息特征中提取的。
我的问题是:如何删除/突出显示冗余特征,它们有什么特点。
附上所有特征之间的相关热图,图中哪个特征是多余的。
请帮忙。
【问题讨论】:
我投票结束这个问题,因为它是关于统计数据,而不是编程。它属于Cross Validated 而不是这里。 谢谢你的评论,我其实是在看sklearn的观点,如何从假数据生成方法中去除冗余数据。 【参考方案1】:-
检查有多少独立列使用
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]
【讨论】:
谢谢你的解决方案,我已经连接了问题,上面的解决方案,它总是显示最后全为零的列,(我尝试调整数据)。不特定于冗余特征的索引。还是我在这里遗漏了什么。 谢谢。是的,同意,它根据冗余特征显示零行,但是,它没有突出显示冗余特征的索引(在矩阵末尾始终显示为零)。可能存在除最后一个索引之外的其他功能可能是多余的情况。希望我能够解释我的观点。 @SantoshKumar 请查看更新。正如您正确指出的那样,QR 分解中的 R 矩阵仅说明矩阵的等级,而不是哪些特定列是线性相关的。如果依赖 QR 分解,他必须manually 找到负责 R 矩阵末尾的全零行的列。以上是关于从分类数据集中删除冗余特征( make_classification )的主要内容,如果未能解决你的问题,请参考以下文章