我创建了一个表来测试我的理解
F1 F2 Outcome
0 2 5 1
1 4 8 2
2 6 0 3
3 9 8 4
4 10 6 5
从F1和F2我试图预测结果
正如您所看到的,F1与结果有很强的相关性,F2是随机噪声
我测试了
pca = PCA(n_components=2)
fit = pca.fit(X)
print("Explained Variance")
print(fit.explained_variance_ratio_)
Explained Variance
[ 0.57554896 0.42445104]
这是我的预期,并表明F1更重要
然而,当我做RFE(递归特征消除)时
model = LogisticRegression()
rfe = RFE(model, 1)
fit = rfe.fit(X, Y)
print(fit.n_features_)
print(fit.support_)
print(fit.ranking_)
1
[False True]
[2 1]
它要求我保留F2?它应该让我保持F1,因为F1是一个强预测器,而F2是随机噪音...为什么F2?
由于
答案 0 :(得分:1)
您正在使用LogisticRegression
型号。这是一个分类器,而不是一个回归器。所以这里的结果被视为标签(而不是数字)。为了良好的训练和预测,分类器需要每个类的多个样本。但是在您的数据中,每个类只有一行。因此,结果是垃圾,不应该被认真对待。
尝试用任何回归模型替换它,您将看到您认为的结果。
model = LinearRegression()
rfe = RFE(model, 1)
fit = rfe.fit(X, y)
print(fit.n_features_)
print(fit.support_)
print(fit.ranking_)
# Output
1
[ True False]
[1 2]