Python 将数据从csv加载到Scikit学习SVM

Python 将数据从csv加载到Scikit学习SVM,python,csv,numpy,scikit-learn,Python,Csv,Numpy,Scikit Learn,我想训练一个SVM来对样本进行分类。我有一个csv文件,它有3列标题:功能1、功能2、类别标签和20行(=样本数) 现在我引用Scikit学习文档 “与其他分类器一样,SVC、NuSVC和LinearSVC采用两个数组作为输入:一个数组X的大小为[n_样本,n_特征],包含训练样本;一个数组y的类别标签(字符串或整数),大小为[n_样本]: 我知道我需要获得两个数组(一个2d和一个1d数组),以便将数据输入SVM。但是,我无法理解如何从csv文件中获取所需的数组。 我尝试了以下代码 import

我想训练一个SVM来对样本进行分类。我有一个csv文件,它有3列标题:功能1、功能2、类别标签和20行(=样本数)

现在我引用Scikit学习文档 “与其他分类器一样,SVC、NuSVC和LinearSVC采用两个数组作为输入:一个数组X的大小为[n_样本,n_特征],包含训练样本;一个数组y的类别标签(字符串或整数),大小为[n_样本]:

我知道我需要获得两个数组(一个2d和一个1d数组),以便将数据输入SVM。但是,我无法理解如何从csv文件中获取所需的数组。 我尝试了以下代码

import numpy as np
data = np.loadtxt('test.csv', delimiter=',')
print data
然而,它显示了一个错误 “ValueError:无法将字符串转换为浮点:��ࡱ�"

csv中没有列标题。调用函数np.loadtxt时是否有错误,或者是否应该使用其他方法

更新: 下面是我的.csv文件的外观

12  122 34
12234   54  23
23  34  23

您传递了参数
分隔符=','
,但您的csv不是逗号分隔的

因此,以下工作:

In [378]:

data = np.loadtxt(path_to_data)
data
Out[378]:
array([[  1.20000000e+01,   1.22000000e+02,   3.40000000e+01],
       [  1.22340000e+04,   5.40000000e+01,   2.30000000e+01],
       [  2.30000000e+01,   3.40000000e+01,   2.30000000e+01]])
显示默认情况下分隔符为
None
,因此将空格视为分隔符:

分隔符:str,可选用于分隔值的字符串。按 默认情况下,这是任何空白


问题是csv文件而不是loadtxt()函数。我保存的格式没有提供正确的.csv文件(不知道为什么!-可能我根本没有保存它)。但是有一种方法可以验证csv文件是否以正确的格式保存。请使用记事本打开.csv文件。如果数据之间有逗号,则会正确保存。和loadtxt()将起作用。如果它显示一些乱七八糟的内容,请再次创建它,然后检查。

查看csvHi的前几行会很有用。我已使用csv的几行更新了问题。我在csv中没有看到分隔符,请删除
分隔符
参数,以便:
data=np.loadtxt('test.csv'))
should work分隔符也可能是一个选项卡(查看值的对齐方式)。如果是这种情况,请尝试
delimiter='\t'
@EdChum-是的,现在我注意到没有逗号。正如我所说的,问题是csv文件而不是分隔符。我认为将分隔符更改为''将不起作用,因为创建csv文件时,其分隔符是',',,你不同意吗?是的,你是对的。我从中确认了。如何确认我曾经在创建csv文件时,感觉分隔符是逗号。我在保存文件时出错,因此出错。