2016-07-12 12 views
0

Ich lese Spalten in .csv-Dateien als Eingaben in eine sklearn Naive Bayes passen. Ich bin jedoch in diesen Fehlern und Warnungen:ValueError: Inkonsistente Anzahl von Beispielen bei der Verwendung von sklearn auf defaultdict

DeprecationWarning: 1d Arrays übergeben, wie Daten in 0.17 veraltet ist und wird ValueError in 0.19 auslösen. Ändern Sie Ihre Daten um, indem Sie X.reshape (-1, 1) verwenden, wenn Ihre Daten ein einzelnes Feature enthalten, oder X.reshape (1, -1), wenn es ein einzelnes Beispiel enthält.

und

Valueerror: Gefunden Arrays mit inkonsistenten Anzahl von Proben: [1 10509]

Und hier ist mein Code:

clf = GaussianNB() 

columns = defaultdict(list) 
with open('file.CSV', 'rb') as f: 
    reader = csv.reader(f) 
    for row in reader: 
     for(i, v) in enumerate(row): 
      columns[i].append(v) 

clf.fit(columns[9], columns[10]) 

Als Hinweis, len (Spalten [9]) und len (Spalten [10]) sind beide 10509

Wie die Warnung vorgeschlagen, habe ich viel versucht von verschiedenen Kombinationen von reshape(), flatten(), ravel(), und auch versucht, eine numpy Arrays zu verwenden, aber nichts scheint zu arbeiten.

Irgendwelche Vorschläge? Es scheint, dass die meisten Leute irgendeine Art von Datenstruktur anders als ein defaultdict verwenden, aber ich bin nicht sicher über, wie man andere Datenstrukturen benutzt, um von einem .csv zu lesen

Antwort

0

Ich fand die Lösung zu meinem Problem. Scheint so, als ob das Problem nicht darin bestünde, die Datenstruktur zu formen, sondern sie als Nummerntyp und nicht als String-Typ zu definieren.

x = np.array(columns[9]).reshape(len(columns[10]), 1).astype(np.float) 
y = np.array(columns[10]) 
clf.fit(x, y) 
Verwandte Themen