2016-11-22 1 views
1

Ich erhalte zwei verschiedene Sätze von p-Werten, wenn ich scikitScikit Lernen feature_selection verschiedene p-Werte geben

uns lernen, verwende
predKbest= SelectKBest(sklearn.feature_selection.f_regression, k=i).fit(X_train, y_train) 

predKbest.pvalues_ 

und

predKbest= SelectKBest(sklearn.feature_selection.chi2, k=i).fit(X_train, y_train)  
predKbest.pvalues_ 

auf denselben Daten X_train und y_train. Sollen sie unterschiedliche p-Werte sein?

+0

Chi2 führt einen Chi2-Test durch, während f_regression ein fischer-Test ist. Sie sollen anders sein. –

+0

@MohamedALANI Ich weiß das. Meine Frage ist, ob pValues ​​für beide Optionen in der gleichen Funktion SelectKBest unterschiedlich berechnet werden. – dbm

+0

Ich sehe, ich habe deine Frage nicht gut gelesen, sorry dafür. Ich glaube, sie sind auf die gleiche Weise berechnet. Haben Sie die gleiche Anzahl von Variablen nach Ihren zwei verschiedenen Funktionen? –

Antwort

1

SelectKBest wählt in Ihrem Fall die wichtigsten Variablen basierend auf dem von Ihnen eingegebenen Test aus: Fischer oder Chi2.

F_regression wird für die Regression verwendet, während chi2 für die Klassifizierung verwendet wird. Daher ist es ziemlich seltsam, dass Sie beide mit den gleichen Eingabevariablen verwenden. Sie sollten einen Schritt zurücktreten und studieren, was Sie wirklich tun möchten. Alles ist gut hier erklärt: http://scikit-learn.org/stable/modules/feature_selection.html

f_regression P_Value das lineare dependancy zwischen jedem Regressor und dem Ziel berechnet wil.

chi2 test "misst die Abhängigkeit zwischen stochastischen Variablen, daher" "outscreen" die Funktionen, die am ehesten unabhängig von der Klasse sind und daher für die Klassifizierung irrelevant sind. " X muss nicht negative Merkmale wie booleans oder Frequenzen enthalten.

Die p_values, die Sie drucken, sind hier die Ergebnisse von chi2 und f_regression, die in p_values ​​"transformiert" werden, also ist es 100% normal, dass sie unterschiedlich sind.