【发布时间】:2015-05-31 16:19:30
【问题描述】:
scikit-learn 提供了多种删除描述符的方法,下面给出的教程已经提供了用于此目的的基本方法,
http://scikit-learn.org/stable/modules/feature_selection.html
但是本教程没有提供任何方法或方式来告诉您保留已删除或保留的功能列表的方法。
下面的代码取自教程。
from sklearn.feature_selection import VarianceThreshold
X = [[0, 0, 1], [0, 1, 0], [1, 0, 0], [0, 1, 1], [0, 1, 0], [0, 1, 1]]
sel = VarianceThreshold(threshold=(.8 * (1 - .8)))
sel.fit_transform(X)
array([[0, 1],
[1, 0],
[0, 0],
[1, 1],
[1, 0],
[1, 1]])
上面给出的示例代码仅描述了两个描述符“shape(6, 2)”,但在我的例子中,我有一个形状为(第 51 行,第 9000 列)的巨大数据框。找到合适的模型后,我想跟踪有用和无用的特征,因为我可以通过只计算有用的特征来节省计算测试数据集特征的计算时间。
例如,当您使用 WEKA 6.0 执行机器学习建模时,它在特征选择方面提供了极大的灵活性,在删除无用特征后,您可以获得丢弃特征的列表以及有用特征。
谢谢
【问题讨论】:
-
Sklearn 的工作方式与 WEKA 不同。在这种情况下,sklearn 不会为您提供最佳特征列表,而是直接返回一个具有最佳特征的新数组。你真的需要这份清单吗?我猜他们的列表可以用一种变通方法来计算,但真的需要吗?
-
@iluengo 根据我的理解(因为我在 ML 方面的经验不是很丰富,但是一个热情的精益者)训练和测试集应该具有相同数量的特征和相同的索引,否则在 weka it rase 错误的情况下.如果测试集是通过数据拆分内部派生的,我将始终具有相同的特征和相同的索引,但如果我们使用外部数据测试集或未知数据集,在不知道特征名称的情况下进行哪些预测,我们如何制作未知数据.
-
是的,你没看错。我只是在训练中想啊哈
标签: python-2.7 scikit-learn scikits