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)
Другие вопросы по тегам