ValueError: Несоответствующее количество образцов при использовании sklearn в defaultdict
Я читаю столбцы в файлах.csv в качестве входных данных для sklearn Наивный байесовской подгонки. Тем не менее, я сталкиваюсь с этими ошибками и предупреждениями:
DeprecationWarning: Передача 1d-массивов, поскольку данные устарели в 0,17 и вызовет ValueError в 0,19. Измените ваши данные, используя X.reshape(-1, 1), если ваши данные имеют одну функцию, или X.reshape(1, -1), если он содержит один образец.
а также
ValueError: Найдено массивы с непоследовательным количеством выборок: [ 1 10509]
И вот мой код:
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])
Как примечание, len(столбцы [9]) и len (столбцы [10]) оба равны 10509
Как указывалось в предупреждении, я пробовал много разных комбинаций reshape(), flatten(), ravel(), а также пытался использовать массивы numpy, но, похоже, ничего не помогало.
Какие-либо предложения? Кажется, что большинство людей используют какую-то структуру данных, отличную от defaultdict, но я не уверен, как использовать другие структуры данных для чтения из.csv
1 ответ
Я нашел решение своей проблемы. Похоже, проблема заключалась не в формировании структуры данных, а в том, чтобы задать для нее тип числа, а не тип строки.
x = np.array(columns[9]).reshape(len(columns[10]), 1).astype(np.float)
y = np.array(columns[10])
clf.fit(x, y)