我想存储列表的浮点值。这些值是从csv文件中提取的。
我写的代码:
import numpy as np
import csv
from sklearn import datasets, metrics
from sklearn.model_selection import train_test_split
from neupy import algorithms, environment
environment.reproducible()
data1 = open('data.csv','r').read().split("\n")
target1 = open('target.csv','r').read().split("\n")
x1 = [[float(n) for n in e] for e in data1 ]
y1 = [[float(s) for s in f] for f in target1 ]
x_train, x_test, y_train, y_test = train_test_split(x1,y1,train_size=0.7)
pnn = algorithms.PNN(std=10,verbose=False)
pnn.train(x_train, y_train)
y_predicted = pnn.predict(x_test)
print(metrics.accuracy_score(y_test, y_predicted))
我遇到的错误是:
WARNING (theano.configdefaults): g++ not detected ! Theano will be
unable to execute optimized C-implementations (for both CPU and GPU)
and will default to Python implementations. Performance will be
severely degraded. To remove this warning, set Theano flags cxx to
an empty string.
Traceback (most recent call last):
File "C:\Users\pc\AppData\Local\Programs\Python\Python36-32\pnn-3.py", line 16, in <module>
x1 = [[float(n) for n in e] for e in data1 ]
File "C:\Users\pc\AppData\Local\Programs\Python\Python36-32\pnn-3.py", line 16, in <listcomp>
x1 = [[float(n) for n in e] for e in data1 ]
File "C:\Users\pc\AppData\Local\Programs\Python\Python36-32\pnn-3.py", line 16, in <listcomp>
x1 = [[float(n) for n in e] for e in data1 ]
ValueError: could not convert string to float: '.'
最佳答案
当您这样做时:
data1 = open('data.csv','r').read().split("\n")
data1
是字符串列表因此,您可以这样做:
x1 = [[float(n) for n in e] for e in data1 ]
您要遍历字符串,然后遍历字符串的字符。因此,转换(类型)适用于第一个浮点数的前几位,然后
.
上的阻塞(例如:"3.1416"
:3
被转换为浮点数(以一种有趣的方式起作用),但是随后您遇到了.
,幸运的是它失败了。您只是忘了根据csv分隔符分割行。
我将使用
csv
模块为我将行拆分为行并执行以下操作:with open('data.csv','r') as f:
cr = csv.reader(f,delimiter=";") # change to whatever your delimiter is
x1 = [[float(n) for n in row] for row in cr]