0

Я помещаю этот код туда, где я сделал логистическую регрессию и логическую регрессию PCA +. С логистикой у меня есть 95% -ная точность, в то время как с PCA + логистикой я получаю странные результаты. Я выполнил логистическую регрессию по проблеме двоичной классификации с данными измерений 50000 X 370. У меня точность около 90%. Но когда я сделал PCA + логистику по данным, моя точность уменьшилась до 5%, я был очень потрясен, увидев этот результат. Может ли кто-нибудь объяснить, что могло пойти не так? Кто-нибудь может увидеть, что такое ошибка, или я неправильно применяю PCA. Я действительно смущен, пожалуйста, предложите что-то, чтобы сделать все правильно.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 
+0

Пожалуйста, не публикуйте несколько версий одного и того же вопроса. Если вы не обращаете внимания на свой текущий вопрос, отредактируйте для ясности или просто будьте терпеливы. http://stackoverflow.com/questions/36668768/why-did-pca-reduced-the-performance-of-logistic-regression – rayryeng

+0

Я тот же парень, который опубликовал это, но люди там предложили мне задать вопрос с кодом. Поэтому я добавляю его отдельно. Это неправильно ? –

+0

Как указано в @arcticless, очень вероятно, что метки результатов, которые вы получаете, инвертированы. –

ответ

2

Для меня это может быть просто инверсия кластеров, созданных тэ PCA (X_train1pca и X_test1pca). поэтому вы видите 0.0463913005349, это означает, что ваша вторая точность решения 1-0.0463913005349 = 0.953 ... Чтобы решить эту проблему, вы должны zerocenter ваши данные перед применением pca, потому что pca основана на ковариационной матрице, которая формируется из центрированных данных.

+0

Просто добавьте быструю ссылку: [StandardScaler] (http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.StandardScaler.html) –

+0

Снова у меня такие же значения точности после масштабирования данных с помощью sklearn_preprocessing : Предупреждение (из модуля предупреждений): Файл «C: \ Python34 \ lib \ site-packages \ sklearn \ utils \ validation.py», строка 420 DataConversionWarning: данные с входным dtype int64 были преобразованы в float64 с помощью функции масштабирования. (accu_pca + logist, accu_logis_regr) = (0.0463036043147, 959045865123), (0,954485661668, 0,959572042445) –

Смежные вопросы