我试图从 sklearn 中相当大的一组特征(~6,100,000)中获取特征的排名。这是我迄今为止的代码:
train, test = train_test_split(rows, test_size=0.2, random_state=310)
train, val = train_test_split(train, test_size=0.25, random_state=310)
train_target = [i[-1] for i in train]
svc = SVC(verbose=5, random_state=310, kernel='linear')
svc.fit([i[1:-1] for i in train], train_target)
model=svc
rfe = RFE(model, verbose=5, step=1, n_features_to_select=1)
rfe.fit([i[1:-1] for i in train], train_target)
rank = rfe.ranking_
Run Code Online (Sandbox Code Playgroud)
模型的每次训练大约需要 10 分钟。对于 6,100,000 个特征,这意味着数十年的计算时间。实际上115.9岁。有更好的方法来做到这一点吗?我知道 rfe 需要最后一次淘汰的结果,但是有什么方法可以通过并行化或以不同的方式获得排名来加快速度吗?我可以使用数千个节点(感谢我工作的公司!),所以任何类型的并行性都很棒!
我确实有线性 SVM 超平面的列表系数。排序这些很容易,但是正在这样做的论文将由斯坦福大学数据科学教授审阅,他对使用非排名算法进行排名持强烈保留态度......以及非斯坦福大学校友,例如我。:P
我可以采用更大的值step,但这会消除对所有功能进行实际排名的能力。相反,我会对 100,000 或 10,000 个功能的组进行排名,但这并不是很有帮助。
编辑:nSV 可能有用,所以我将其包含在下面:
obj = -163.983323, rho = -0.999801
nSV = 182, nBSV …Run Code Online (Sandbox Code Playgroud) 我现在关注下一个主题:如何在Python中使用PCA/SVD进行特征选择和识别?
现在,我们使用PCA方法在Python中分解我们的数据集并使用它.sklearn.decomposition.PCA使用属性components_我们得到所有组件.现在我们有非常相似的目标:只需要前几个组件(这部分不是问题),看看每个PCA组件的输入功能比例(知道哪些功能对我们来说非常重要).怎么可能这样做?另一个问题是,python lybrary有另一个主成分分析的实现吗?