ValueError: не удалось преобразовать строку в число с плавающей точкой: '60, 72,64,50 ' - PullRequest
0 голосов
/ 25 февраля 2020

Вот мой код:

from micromlgen import port
import numpy as np
from glob import glob
from os.path import basename

def load_features(folder):
    dataset = None
    classmap = {}

    for class_idx, filename in enumerate(glob('%s/*.csv' % folder)):
        class_name = basename(filename)[:-4]
        classmap[class_idx] = class_name
        samples = np.loadtxt(filename)
        labels = np.ones((len(samples), 1)) * class_idx
        samples = np.hstack((samples, labels))
        dataset = samples if dataset is None else np.vpstack((dataset, samples))
    return dataset, classmap

from sklearn.svm import SVC

features, classmap = load_features('dataset/')
X, y = features[:, :-1], features[:, -1]
classifier = SVC(kernel="linear").fit(X,y)

Я понятия не имею, почему он выдает эту ошибку :(

Вот ошибка:

Traceback (most recent call last):

  File "C:/Users/Luigie/PycharmProjects/STARK/Kobe.py", line 20, in <module>
    features, classmap = load_features('dataset/')

  File "C:/Users/Luigie/PycharmProjects/STARK/Kobe.py", line 12, in load_features
    samples = np.loadtxt(filename)
  File "C:\Users\Luigie\AppData\Local\Programs\Python\Python38\lib\site-packages\numpy\lib\npyio.py", line 1159, in loadtxt
    for x in read_data(_loadtxt_chunksize):

  File "C:\Users\Luigie\AppData\Local\Programs\Python\Python38\lib\site-packages\numpy\lib\npyio.py", line 1087, in read_data
    items = [conv(val) for (conv, val) in zip(converters, vals)]

  File "C:\Users\Luigie\AppData\Local\Programs\Python\Python38\lib\site-packages\numpy\lib\npyio.py", line 1087, in <listcomp>
    items = [conv(val) for (conv, val) in zip(converters, vals)]
  File "C:\Users\Luigie\AppData\Local\Programs\Python\Python38\lib\site-packages\numpy\lib\npyio.py", line 794, in floatconv
    return float(x)

ValueError: could not convert string to float: '69,75,63,54'

1 Ответ

0 голосов
/ 25 февраля 2020

Поскольку входной файл является CSV и по умолчанию loadtxt из numpy модуль имеет значение по умолчанию параметра delimiter как None, лучше использовать разделитель как ',' (то есть запятую ). Чтобы прояснить ситуацию, я поделился документацией по функции loadtxt модуля numpy.

>>> import numpy as np
>>> help(np.loadtxt)
Help on function loadtxt in module numpy:

loadtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding='bytes', max_rows=None)
    Load data from a text file.

    Each row in the text file must have the same number of values.

    Parameters
    ----------
    fname : file, str, or pathlib.Path
        File, filename, or generator to read.  If the filename extension is
        ``.gz`` or ``.bz2``, the file is first decompressed. Note that
        generators should return byte strings for Python 3k.

   ...
   ...

    delimiter : str, optional
        The string used to separate values. For backwards compatibility, byte
        strings will be decoded as 'latin1'. The default is whitespace.

   ...
   ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...