我将这段代码放在我完成逻辑回归和 PCA + 逻辑回归的地方。使用逻辑,我得到了 95% 的准确率,而使用 PCA + 逻辑,我得到了奇怪的结果。我对 50000 X 370 维度数据的二元分类问题执行了逻辑回归。我的准确率约为 90%。但是当我对数据进行PCA+logistic时,我的准确率降低到了5%,看到这个结果我感到非常震惊。谁能解释一下可能出了什么问题吗?任何人都可以看到什么是错误或者我错误地应用了 PCA。我真的很困惑,请提出一些建议来纠正它。
X_train1, X_test1, y_train1, y_test1 = train_test_split(X_test,y_test, test_size=0.50)
pca=PCA(n_components=0.98).fit(X_train1)
X_train1pca=pca.transform(X_train1)
X_test1pca=pca.transform(X_test1)
lr=LogisticRegression()
y_pred1=lr.fit(X_train1,y_train1).predict(X_test1)
y_pred2=lr.fit(X_train1pca,y_train1).predict(X_test1pca)
acc_pca=(y_pred2==y_test1).sum()/len(y_test1)
acc=(y_pred1==y_test1).sum()/len(y_test1)
print(acc_pca,acc)
print(acc_pca+acc)
我得到的结果如上所述:
0.954836446549 0.959221257564
1.91405770411
>>>
========= RESTART: C:\Users\prashant\Desktop\santandar\santander.py =========
0.0430588441638 0.962992195036
1.0060510392
>>>
========= RESTART: C:\Users\prashant\Desktop\santandar\santander.py =========
0.0463913005349 0.960098219767
1.0064895203
最佳答案
对我来说,这可能只是 te pca(X_train1pca 和 X_test1pca)创建的集群的反转。这就是为什么你看到 0.0463913005349,这意味着你的第二个解决方案精度是 1-0.0463913005349 = 0.953...要解决这个问题,你应该在应用 pca 之前将数据归零,因为 pca 基于由中心数据形成的协方差矩阵。
关于python - PCA降低了Logistic回归的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36687351/