如何找到最相关的维度/列以分隔已知的类

时间:2016-05-05 16:47:59

标签: python machine-learning scikit-learn

我从数千个癌细胞中获取数据。存储在pandas数据帧中的每个单元6​​0个测量值。使用另一种方法将细胞分为3个群体。

我想知道哪些参数/维度最能区分/分开各个类。 我是新手,有很多选择。我确实从sklearn尝试了PCA分解,但这只返回了数据集变异的2-3个原则组成部分而不是与类相关(我仍然没有找到一种方法来打印出维度的标签。对这种变化贡献最大,对此的帮助将不胜感激!)

那么找到每个班级变化最大的维度的最佳方法是什么。我想象一个2参数PCA,我的课程尽可能分开。

是否也可以做同样的事情来找到相对于另一个维度(列)变化最大的维度

谢谢!

3 个答案:

答案 0 :(得分:8)

您希望使用线性判别分析(LDA)代替PCA。

PCA仅以最佳方式查找代表所有类的完整数据集的组件。与此相反,您希望找到那些可以帮助您区分不同类别之间的最佳的组件,这是LDA的用途。

看一下这个例子:

http://scikit-learn.org/stable/auto_examples/decomposition/plot_pca_vs_lda.html

如果您在为数据调整时遇到问题,请随时提供样本数据和一些LDA代码,并告诉我们您遇到的问题。

[编辑:示例代码在这里:http://scikit-learn.org/stable/auto_examples/decomposition/plot_pca_vs_lda.html]

答案 1 :(得分:5)

您也可以通过随机森林确定要素重要性。这不会找到最能区分类的组件,而是告诉您原始功能的相对重要性(听起来就像您要求的那样)。这是一个链接:

http://scikit-learn.org/stable/auto_examples/ensemble/plot_forest_importances.html

答案 2 :(得分:3)

为了补充上述讨论,重要的是要理解以下两点之间的区别:

  • 在高维数据集中选择特征: Feture Selection in sklearn。使用随机森林是另一种基于特征重要性的特征选择方法。
  • 维度缩减:这是一种将数据集转换为比原始维度更低维度的新要素空间的技术。 PCALDAkernel PCA就是这样的技巧。 PCA是无监督技术,而LDA是监督技术。如果数据集是线性可分的,PCA和LDA可以很好地工作。如果数据集不是线性可分的,则可以使用内核PCA将数据转换为适合线性分类器的新的低维子空间。