将数据从 csv 加载到 Scikit learn SVM
load data from csv into Scikit learn SVM
我想训练 SVM 来执行 class 样本化。我有一个 csv 文件,其中有 3 列 headers:特征 1、特征 2、class 标签和 20 行(=样本数)。
现在我引用 Scikit-Learn 文档
“与其他 classifier 一样,SVC、NuSVC 和 LinearSVC 将两个数组作为输入:一个大小为 [n_samples、n_features] 的数组 X 保存训练样本,一个数组 y class 标签(字符串或整数),大小 [n_samples]:"
我知道我需要获得两个数组(一个二维数组和一个一维数组)以便将数据输入 SVM。但是我无法理解如何从 csv 文件中获取所需的数组。
我试过下面的代码
import numpy as np
data = np.loadtxt('test.csv', delimiter=',')
print data
但是显示错误
"ValueError: could not convert string to float: ��ࡱ�"
csv 中没有第 headers 列。我在调用函数 np.loadtxt 时是否犯了任何错误,还是应该使用其他方法?
更新:
这是我的 .csv 文件的样子。
12 122 34
12234 54 23
23 34 23
您传递了参数 delimiter=','
但您的 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]])
docs 表明默认情况下分隔符是 None
因此将空格视为分隔符:
delimiter : str, optional The string used to separate values. By
default, this is any whitespace.
问题出在 csv 文件上,而不是 loadtxt() 函数上。我保存的格式没有给出正确的 .csv 文件(不知道为什么!-也许我根本没有保存它)。但是有一种方法可以验证 csv 文件是否以正确的格式保存。使用记事本打开 .csv 文件。如果数据之间有逗号,则表示已正确保存。并且 loadtxt() 将起作用。如果它显示一些乱码,请重新创建它然后检查。
我想训练 SVM 来执行 class 样本化。我有一个 csv 文件,其中有 3 列 headers:特征 1、特征 2、class 标签和 20 行(=样本数)。
现在我引用 Scikit-Learn 文档 “与其他 classifier 一样,SVC、NuSVC 和 LinearSVC 将两个数组作为输入:一个大小为 [n_samples、n_features] 的数组 X 保存训练样本,一个数组 y class 标签(字符串或整数),大小 [n_samples]:"
我知道我需要获得两个数组(一个二维数组和一个一维数组)以便将数据输入 SVM。但是我无法理解如何从 csv 文件中获取所需的数组。 我试过下面的代码
import numpy as np
data = np.loadtxt('test.csv', delimiter=',')
print data
但是显示错误 "ValueError: could not convert string to float: ��ࡱ�"
csv 中没有第 headers 列。我在调用函数 np.loadtxt 时是否犯了任何错误,还是应该使用其他方法?
更新: 这是我的 .csv 文件的样子。
12 122 34
12234 54 23
23 34 23
您传递了参数 delimiter=','
但您的 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]])
docs 表明默认情况下分隔符是 None
因此将空格视为分隔符:
delimiter : str, optional The string used to separate values. By default, this is any whitespace.
问题出在 csv 文件上,而不是 loadtxt() 函数上。我保存的格式没有给出正确的 .csv 文件(不知道为什么!-也许我根本没有保存它)。但是有一种方法可以验证 csv 文件是否以正确的格式保存。使用记事本打开 .csv 文件。如果数据之间有逗号,则表示已正确保存。并且 loadtxt() 将起作用。如果它显示一些乱码,请重新创建它然后检查。