【发布时间】:2017-12-10 06:56:53
【问题描述】:
我正在尝试使用多种技术在 python 中执行特征选择。我尝试应用的第一个技术是仅使用特征的变化来选择特征。我的代码如下:
def feature_selection_technique(train, test, lbls, technique):
if technique == "variance":
sel = VarianceThreshold(threshold=(0.00010 * (1 - .15)))
model1 = sel1.fit_transform(face_train)
new_train = model1.transform(train)
new_test = model1.transform(test)
return new_train, new_test
实际上,我想使用训练数据集计算所选特征,然后将其应用于测试数据集。在这种情况下,似乎不能使用 transform 方法。在这种情况下我该怎么办?
【问题讨论】:
-
您是否尝试过:model1 = sel.fit_transform(train) 使用类似:model2 = sel.fit_transform(test)?
-
是的,但这不是我想要的。该技术使具有方差的特征大于建议的阈值。我想保留训练集中的这些特征,并将相同的特征保留给测试集。
-
在第一个 sel = VarianceThreshold(threshold=(0.00010 * (1 - .15))) 之后直接调用 new_train=sel.fit_transform(train) 和 new_test = sel.transform(test) 这应该有效很好
-
fit_transform返回更改数据集的数组(在您的情况下为model1)。然后你使用model1.transform(train)??你确定你的代码是正确的吗?
标签: python scikit-learn feature-selection