Python PCA降低了逻辑回归的性能?

Python PCA降低了逻辑回归的性能?,python,machine-learning,statistics,pca,logistic-regression,Python,Machine Learning,Statistics,Pca,Logistic Regression,我把这段代码放在我做过逻辑回归和PCA+逻辑回归的地方。使用逻辑推理,我得到了95%的准确率,而使用PCA+逻辑推理,我得到了奇怪的结果。我用50000 X 370维的数据对一个二元分类问题进行了逻辑回归。我得到了大约90%的准确率。但当我对数据进行PCA+逻辑分析时,我的准确率下降到5%,看到这个结果我非常震惊。有人能解释出哪里出了问题吗?任何人都能看出什么是错误,或者我应用PCA是错误的。我真的很困惑,请提出一些建议来纠正它 X_train1, X_test1, y_train1, y_te

我把这段代码放在我做过逻辑回归和PCA+逻辑回归的地方。使用逻辑推理,我得到了95%的准确率,而使用PCA+逻辑推理,我得到了奇怪的结果。我用50000 X 370维的数据对一个二元分类问题进行了逻辑回归。我得到了大约90%的准确率。但当我对数据进行PCA+逻辑分析时,我的准确率下降到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基于由居中数据形成的协方差矩阵。

对我来说,这可能只是由te pca(X_train1pca和X_test1pca)创建的聚类的反转。这就是为什么你会看到0.0463913005349,这意味着你的第二个解的精度是1-0.0463913005349=0.953。。。要解决此问题,您应该在应用pca之前将数据归零,因为pca基于由居中数据形成的协方差矩阵。

请不要发布同一问题的多个版本。如果您当前的问题没有引起注意,请编辑以保持清晰或耐心。我就是那个贴这条消息的人,但那里的人建议我用代码提问。所以我把它分开。这是错误的吗?正如@arcticless所说的,很可能您得到的结果标签是颠倒的。@PrashantSharma-您可以随时编辑上一个问题,添加您认为可能有助于人们回答您的问题的任何代码或额外信息。请不要发布同一问题的多个版本。如果您当前的问题没有引起注意,请编辑以保持清晰或耐心。我就是那个贴这条消息的人,但那里的人建议我用代码提问。所以我把它分开。错了吗?正如@arcticless所说,很可能您得到的结果标签是颠倒的。@PrashantSharma-您可以随时编辑上一个问题,添加您认为可能有助于人们回答您的问题的任何代码或额外信息。只需添加一个快速链接:在使用sklearn\u预处理缩放数据后,我再次获得了相同的准确度值:警告(来自警告模块):文件“C:\Python34\lib\site packages\sklearn\utils\validation.py”,第420行DataConversionWarning:输入数据类型为int64的数据通过比例函数转换为float64。(accu_pca+logist,accu_logis_regr)=(0.04630366043147,959045865123),(0.954485661668,0.95959572042445)只需添加一个快速链接:在使用sklearn_预处理缩放数据后,我再次获得了相同的精度值:警告(来自警告模块):文件“C:\Python34\lib\site packages\sklearn\utils\validation.py”,第420行DataConversionWarning:输入数据类型为int64的数据由scale函数转换为float64。(累计主成分分析+专家、累计逻辑研究)=(0.0463036043147959045865123),(0.954485661668,0.959572042445)