Ich versuche, Daten aus einer CSV-Datei zu lesen. Es gibt 7 Spalten. Die Spalte 5 ist ein String-Typ, während der Rest der Spalten Floats sind.Lesen float sowie Zeichenfolge im richtigen Format
Wenn ich folgenden Befehl nur zum Lesen der Float-Daten geben, ist die Ausgabe im richtigen Format.
data = np.loadtxt('data.csv', delimiter=',', usecols= (0,1,2,3,4,6))
print "\ndata=\n",data
Ausgang ist
data=
[[ 3.00000000e+00 9.46000000e+01 1.80180000e+02 3.28900000e+01
6.80685824e+00 3.70000000e-01]
...,
[ 3.00000000e+00 1.33200000e+02 2.51460000e+02 2.01600000e+01
5.77236048e+00 -2.70000000e-01]]
mit Form (500L, 6L)
Aber dann, wenn ich versuche 5 alle Spalten einschließlich der Spaltennummer zu lesen, die String-Typ ist verwende ich folgende Code:
datastr = np.loadtxt('data.csv', delimiter=',',dtype={'names': ('c1','c2','c3','c4','c5','c6','c7'),
'formats':('f4','f4','f4','f4','f4','S10','f4')})
print "\ndatastr=\n",datastr
Jetzt ist die Ausgabe
datastr=
[ (3., 94.59999847, 180.17999268, 32.88999939, 6.80685806, 'Large', 0.37 ) ... (3., 133.19999695, 251.46000671, 20.15999985, 5.77236032, 'Small', -0.27000001)]
mit einer Form (500L,)
Aber ich brauche diese datastr Form (500L, 7L) zu erhalten wie in dem alle schweben Beispiel hatte ich Form (500L, 6L)
Wie mache ich das?
Dank
Schauen Sie sich den 'dtype' dieses' datastr' an. Sie haben ein 1d strukturiertes Array mit 7 Feldern erstellt. Nur so können Sie eine Mischung aus Float- und String-Spalten halten. Sie greifen auf Felder mit dem Namen 'datastr ['c3']' 'zu. Wenn Ihnen dieser Mix nicht gefällt, sollten Sie die Datei zweimal laden, um die 6 Float-Spalten zu erhalten, und einmal, um die Zeichenfolge zu erhalten. Sie erhalten die gleichen Daten, aber in 2 Arrays. – hpaulj
Danke. Ich möchte die Daten im Adaboost-Klassifikator verwenden. Für die cross_val_score muss ich Eingabe-Dataset angeben. Wenn alle Daten in einer Datenstruktur sind, gebe ich einfach 'clf = AdaBoostClassifier (n_estimators = 100) scores = cross_val_score (clf, Daten, target_final) c = scores.mean()'. Aber mit zwei Datensätzen, wie liefere ich es an cross_val_score. Wie du sehen kannst, bin ich Neuling. – Confused
Welche Art von Array kann der Klassifikator verwenden? Kann es ein strukturiertes Array sein, oder muss es ein 2D-Array mit einem einheitlichen dtype sein (z. B. alle Floats)? Wie geht es mit einer Mischung aus String und Floats? – hpaulj