Wie konvertiere ich Daten von einem Scikit-Learn Bunch-Objekt in einen Pandas DataFrame?
from sklearn.datasets import load_iris
import pandas as pd
data = load_iris()
print(type(data))
data1 = pd. # Is there a Pandas method to accomplish this?
dataset
scikit-learn
pandas
SANBI-Proben
quelle
quelle
load_boston()
. Diese Antwort funktioniert allgemeiner: stackoverflow.com/a/46379878/1840471Dieses Tutorial könnte von Interesse sein: http://www.neural.cz/dataset-exploration-boston-house-pricing.html
quelle
Die Lösung von TOMDLt ist nicht generisch genug für alle Datensätze in scikit-learn. Zum Beispiel funktioniert es nicht für den Boston Housing-Datensatz. Ich schlage eine andere Lösung vor, die universeller ist. Sie müssen auch kein Numpy verwenden.
Als allgemeine Funktion:
quelle
Nur als Alternative, dass ich meinen Kopf viel einfacher umwickeln könnte:
Anstatt von Anfang an zu verketten, erstellen Sie einfach einen Datenrahmen mit der Matrix der Features und fügen Sie dann einfach die Zielspalte mit Daten ['whatvername'] hinzu und holen Sie sich die Zielwerte aus dem Datensatz
quelle
Ich habe 2 Stunden gebraucht, um das herauszufinden
Holen Sie sich die Art für meine Pandas zurück
quelle
Verwenden Sie andernfalls Seaborn-Datensätze, bei denen es sich um tatsächliche Pandas-Datenrahmen handelt:
Vergleichen Sie mit Scikit-Lerndatensätzen:
quelle
Das funktioniert bei mir.
quelle
Eine andere Möglichkeit, Features und Zielvariablen zu kombinieren, kann die Verwendung von
np.column_stack
( Details ) sein.Ergebnis:
Wenn Sie die Zeichenfolgenbezeichnung für benötigen
target
, können Sie diese verwenden,replace
indem Sietarget_names
indictionary
eine neue Spalte konvertieren und diese hinzufügen:Ergebnis:
quelle
Grundsätzlich brauchen Sie die "Daten", und Sie haben sie im Scikit-Haufen, jetzt brauchen Sie nur noch das "Ziel" (Vorhersage), das sich ebenfalls im Haufen befindet.
Sie müssen diese beiden also nur zusammenfassen, um die Daten zu vervollständigen
quelle
Ab Version 0.23 können Sie mit dem
as_frame
Argument direkt einen DataFrame zurückgeben . Laden Sie beispielsweise den Iris-Datensatz:Nach meinem Verständnis unter Verwendung der vorläufigen Versionshinweise funktioniert dies für die Datensätze Brustkrebs, Diabetes, Ziffern, Iris, Linnerud, Wein und Kalifornien.
quelle
Update: 2020
Sie können den Parameter verwenden
as_frame=True
, um Pandas-Datenrahmen abzurufen.Wenn der Parameter as_frame verfügbar ist (z. B. load_iris)
Wenn der Parameter as_frame NICHT verfügbar ist (z. B. load_boston)
quelle
Hier ist eine Funktion für die Konvertierung, um die beste Antwort zu finden und meinen Kommentar anzusprechen
quelle
Was auch immer TomDLT antwortete, es funktioniert möglicherweise nicht für einige von Ihnen, weil
weil iris ['feature_names'] Ihnen ein numpy-Array zurückgibt. In einem numpy-Array können Sie ein Array und eine Liste ['target'] nicht mit nur dem Operator + hinzufügen. Daher müssen Sie es zuerst in eine Liste konvertieren und dann hinzufügen.
Du kannst tun
Dies wird gut funktionieren, obwohl ..
quelle
Es könnte einen besseren Weg geben, aber hier ist, was ich in der Vergangenheit getan habe und es funktioniert ganz gut:
Jetzt haben mydata alles, was Sie brauchen - Attribute, Zielvariablen und Spaltennamen
quelle
mydata = pd.DataFrame(items[1][1])
WürfeTypeError: 'dict_items' object does not support indexing
Dieses Snippet ist nur syntaktischer Zucker, der auf dem basiert , was TomDLT und Rolyat bereits beigetragen und erklärt haben. Die einzigen Unterschiede wären, dass
load_iris
ein Tupel anstelle eines Wörterbuchs zurückgegeben wird und die Spaltennamen aufgelistet werden.quelle
quelle
Eine der besten Möglichkeiten:
Digits ist der sklearn-Datenrahmen und ich habe ihn in einen Pandas-Datenrahmen konvertiert
quelle
Ich habe ein paar Ideen aus Ihren Antworten genommen und weiß nicht, wie ich es kürzer machen soll :)
Dies ergibt einen Pandas-Datenrahmen mit Funktionsnamen plus Ziel als Spalten und RangeIndex (Start = 0, Stopp = Länge (df), Schritt = 1). Ich hätte gerne einen kürzeren Code, bei dem ich 'Ziel' direkt hinzufügen kann.
quelle
Die API ist etwas sauberer als die vorgeschlagenen Antworten. Verwenden Sie hier
as_frame
auch eine Antwortspalte und stellen Sie sicher, dass diese enthalten ist.quelle
Hier ist ein weiteres Beispiel für eine integrierte Methode, das möglicherweise hilfreich ist.
Die Daten iris_X werden als Pandas DataFrame und die Ziel-iris_y als Pandas Series importiert.
quelle
quelle