2016-07-12 4 views
0

Я читаю столбцы в CSV-файлах в качестве вкладов в соответствие с файлом sklearn Naive Bayes. Тем не менее, я сталкиваюсь с этими ошибками и предупреждениями:ValueError: Непоследовательное количество выборок при использовании sklearn по умолчаниюdict

Отказ Предупреждение: Передача 1-го массива, поскольку данные устарели в 0,17 и повысят ValueError в 0,19. Измените свои данные либо с помощью X.reshape (-1, 1), если у ваших данных есть одна функция или X.resape (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

Как было предложено предупреждение, я много пробовал различных комбинаций reseape(), flatten(), ravel(), а также пытались использовать массивы numpy, но ничего не работает.

Любые предложения? Похоже, что большинство людей используют какую-то структуру данных, отличную от defaultdict, но я не уверен, как использовать другие структуры данных для чтения из .csv.

ответ

0

Я нашел решение своей проблемы. Похоже, проблема заключалась не в формировании структуры данных, а при ее установке типа числа, а не типа строки.

x = np.array(columns[9]).reshape(len(columns[10]), 1).astype(np.float) 
y = np.array(columns[10]) 
clf.fit(x, y) 
Смежные вопросы