0

Ich setze diesen Code dort hin, wo ich logistische Regression und PCA + logistische Regression getan habe. Mit Logistik habe ich 95% Genauigkeit, während mit PCA + Logistik ich seltsame Ergebnisse bekomme. Ich führte eine logistische Regression bei einem binären Klassifikationsproblem mit Daten von 50000 x 370 Dimensionen durch. Ich habe eine Genauigkeit von etwa 90%. Aber als ich PCA + Logistics auf Daten setzte, reduzierte sich meine Genauigkeit auf 5%. Ich war sehr schockiert, dieses Ergebnis zu sehen. Kann mir jemand erklären, was schief gehen könnte? Kann jemand sehen, was Fehler ist oder ich PCA falsch anwende? Ich bin wirklich verwirrt, bitte schlage etwas vor, um es richtig zu machen.PCA reduziert die Leistung der logistischen Regression?

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) 

Ergebnisse Ich habe wie erwähnt:

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 
+0

Bitte veröffentlichen Sie nicht mehrere Versionen derselben Frage. Wenn Sie mit Ihrer aktuellen Frage nicht auffallen, bearbeiten Sie sie entweder, um Klarheit zu gewinnen, oder seien Sie einfach nur geduldig. http://StackOverflow.com/Questions/36668768/Why-Did-Pca-reduced-the-Performance-of-Logistic-Regression – rayryeng

+0

Ich bin der gleiche Kerl, der das gepostet hat, aber die Leute dort schlug mir vor, Frage mit Code zu stellen. Also habe ich es getrennt gesagt. Ist es falsch ? –

+0

Wie @arcticless angegeben hat, ist es sehr wahrscheinlich, dass die Ergebnisbezeichnungen invertiert sind. –

Antwort

2

Für mich ist es nur eine Umkehrung des von Te PKA (X_train1pca und X_test1pca) erstellt Cluster sein könnte. Aus diesem Grund sehen Sie die 0.0463913005349, dh Ihre zweite Lösungsgenauigkeit lautet 1-0.0463913005349 = 0,953 ... Um dies zu lösen, sollten Sie Ihre Daten vor der Anwendung von pca auf Null stellen, da pca auf der Kovarianzmatrix basiert, die aus zentrierten Daten gebildet wird.

+0

Nur um einen schnellen Link hinzuzufügen: [StandardScaler] (http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.StandardScaler.html) –

+0

Wieder bekam ich die gleichen Werte der Genauigkeit nach Skalierung der Daten mit sklearn_preprocessing : Warnung (vom Modul Warnungen): Datei "C: \ Python34 \ lib \ Site-Pakete \ sklearn \ utils \ validation.py", Zeile 420 DataConversionWarning: Daten mit Eingabe dtype int64 wurde von der Skalierungsfunktion in float64 konvertiert. (accu_pca + logist, accu_logis_regr) = (0.0463036043147, 959045865123), (0,954485661668, 0,959572042445) –