Ich arbeite an dem folgenden Code für die Durchführung von Random Forest Classification in Zug und Test-Sets;
%Vor%Allerdings bekomme ich den folgenden Fehler bei der Ausführung;
%Vor%Irgendwelche Vorschläge, wie es zu vermeiden? Danke.
genfromtxt
gibt diesen Fehler, wenn die Anzahl der Spalten ungleich ist.
Ich kann mir drei Möglichkeiten vorstellen:
1. Verwenden Sie den Parameter usecols
,
Allerdings - das kann bedeuten, dass Sie einige Daten verlieren (wo Zeilen länger als 1434 Spalten sind) - ob das für Sie zählt oder nicht, liegt an Ihnen.
2. Passen Sie Ihre Eingabedatei so an, dass sie die gleiche Anzahl an Spalten aufweist.
3. Verwenden Sie etwas anderes als genfromtxt:
............. so
Sie haben zu viele Spalten in einer Ihrer Zeilen. Zum Beispiel
%Vor%Ich hatte diesen Fehler. Die Ursache war ein einziger Eintrag in meinen Daten, der ein Leerzeichen enthielt. Dies veranlasste es, es als eine zusätzliche Reihe zu sehen. Stellen Sie sicher, dass alle Abstände in allen Daten konsistent sind.
Es sieht so aus, als hätte der Header, der die Spaltennamen enthält, eine weitere Spalte als die Daten selbst (1435 Spalten im Header vs. 1434 für Daten).
Sie könnten entweder:
1) Beseitigen Sie 1 Spalte aus der Kopfzeile, die mit Daten
nicht sinnvoll istODER
2) Verwenden Sie den Header überspringen von genfromtxt ()
Beispiel: np.genfromtxt('myfile', skip_header=*how many lines to skip*, delimiter=' ')
Weitere Informationen finden Sie in der Dokumentation .
Ich hatte diesen Fehler auch, als ich auch versuchte, ein Text-Dataset mit genfromtext zu laden und eine Textklassifizierung mit Keras vorzunehmen.
Das Datenformat war: [some_text]\t[class_label]
.
Mein Verständnis war, dass es in der ersten Spalte einige Zeichen gibt, die den Parser irgendwie verwirren und die zwei Spalten nicht richtig aufgeteilt werden können.
Dieses Snippet hat den gleichen ValueError bei Ihnen erstellt, und meine erste Problemumgehung bestand darin, alles als eine Spalte zu lesen:
%Vor%und teilen Sie die Daten später selbst.
Was jedoch letztendlich richtig funktionierte, war, den Kommentarparameter in genfromtxt explizit zu definieren.
%Vor%Gemäß der Dokumentation:
Mit den optionalen Argumentkommentaren wird eine Zeichenfolge definiert Das ist der Beginn eines Kommentars. Standardmäßig wird genfromtxt angenommen Kommentare = '#'. Die Kommentarmarkierung kann an beliebiger Stelle in der Zeile vorkommen. Alle Zeichen, die nach den Kommentarmarkierungen vorhanden sind, werden einfach ignoriert .
Das Standardzeichen, das auf einen Kommentar hinweist, ist '#'. Wenn dieses Zeichen also in Ihrer Textspalte enthalten ist, wird alles danach ignoriert. Das ist wahrscheinlich der Grund, warum die beiden Spalten nicht vom genfromtext erkannt werden können.
Eine Ausnahme wird ausgelöst, wenn eine Inkonsistenz in der Anzahl der Spalten festgestellt wird. Fügen Sie invalid_raise = False
hinzu, um die fehlerhaften Zeilen zu überspringen.
Referenz: numpy.genfromtxt
Tags und Links python numpy genfromtxt