ValueError:无法将字符串转换为浮点:“60,72,64,50”

2024-10-01 02:26:28 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的密码:

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'

Tags: inpyimportnumpylibnplineusers
1条回答
网友
1楼 · 发布于 2024-10-01 02:26:28

由于输入文件是CSV,并且默认情况下numpy模块的loadtxt具有参数delimiter的默认值作为None,因此最好使用分隔符作为“,”(即逗号)。为了清楚起见,我已经分享了numpy模块的loadtxt函数的文档

>>> 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.

   ...
   ...

相关问题 更多 >