Wie man die Werte der jeweiligen Funktion aus sklearn.feature_selection.SelectKBest?
Ich versuche, die Punkte aller features von my data set.
file_data = numpy.genfromtxt(input_file)
y = file_data[:,-1]
X = file_data[:,0:-1]
x_new = SelectKBest(chi2, k='all').fit_transform(X,y)
Bevor die erste Zeile von X hatte die "Feature-Namen" im string-format, aber ich war immer "Eingabe enthält NaN, infinity oder ein Wert zu groß für dtype('float64')" Fehler. So, jetzt X enthält nur die Daten und y enthält die Ziel-Werte(1,-1).
Wie kann ich die Punktzahl von jeder Funktion aus SelectKBest(versucht die Uni-variate Funktion Auswahl)?
Dank
- Sieht aus wie Sie tun können
x_new = SelectKBest(chi2, k='all')
gefolgt vonx_new.scores_
- Du meinst wie diese: x_new = SelectKBest(chi2, k='alle').fit_transform(X,y) print(x_new.scores_)? Es gibt mir "'numpy.ndarray' - Objekt hat kein Attribut 'scores_'" Fehler. Ich entschuldige mich, ich bin ein bisschen neu auf Python.
x_new = SelectKBest(chi2, k='all')
dannx_new.fit_transform(X,y)
dannprint x_new.scores_
- Das klappte! Danke! Warum hat es nicht funktioniert, wenn ich mit x_new = SelectKBest(chi2, k='alle').fit_transform(X,y)?
- Die
scores_
zugänglich sind, von derSelectKBest
Objekt. Wenn Siefit_transform
das Objekt, das zurückgegeben wird, ist ein numpy array - Danke @Ryan. Leider hat die voting-option wird nicht angezeigt, derzeit. Ich Stimme Ihrem Kommentar bis so bald wie möglich.
- Mit x_new als Variablenname für eine schätzfunktion-Objekt (das ist nicht eine neue version von X) macht Ihre Erklärung verwirrend. Vielleicht nenne es einfach-Selektor? Die OP war mit x_new zu finden, um die transformierten X.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lösung
Den Sie gerade haben, so etwas zu tun.
Ihr problem
Wenn Sie direkt
.fit_transform(features, target)
, die selector nicht gespeichert und sind Sie wieder, die ausgewählte Funktionen. Aber die Ergebnisse ist ein Attribut der selector. Um es zu bekommen, müssen Sie.fit(features, target)
. Sobald Sie Ihre selector ausgestattet ist, können Sie die ausgewählte Funktionen durch den Aufrufselector.transform(features)
, wie Sie im code sehen avobe.Als ich die Kommentare im code, die Sie nicht brauchen, um zu haben, verwandelt die features, um die Partitur. Nur mit der Montage ist genug.
Links