ValueError: не удалось преобразовать строку в число с плавающей точкой: 'Pregnancy' - PullRequest
0 голосов
/ 01 апреля 2020
def loadCsv(filename):
    lines = csv.reader(open('diabetes.csv'))
    dataset = list(lines)
    for i in range(len(dataset)):
        dataset[i] = [float(x) for x in dataset[i]
    return dataset

Здравствуйте, я пытаюсь реализовать Naive-Bayes, но он дает мне эту ошибку, хотя я вручную изменил тип каждого столбца на float. это все еще дает мне ошибку. Выше находится функция для конвертации.

1 Ответ

1 голос
/ 01 апреля 2020

ValueError потому что код пытается преобразовать (преобразовать) элементы в строке заголовка CSV, которые являются строками, в плавающие. Вы можете просто пропустить первую строку CSV-файла, например:

for i in range(1, len(dataset)): # specifying 1 here will skip the first row
    dataset[i] = [float(x) for x in dataset[i]

Примечание. При этом первый элемент в dataset останется в качестве заголовков (str).

Лично я бы использовал pandas, который имеет метод read_csv(), который будет загружать данные непосредственно в фрейм данных .

Например:

import pandas as pd
dataset = pd.read_csv('diabetes.csv')

Это даст вам dataframe, а не список списков. Если вы действительно хотите список списков, вы можете использовать dataset.values.tolist().

...