【发布时间】:2017-03-19 08:55:42
【问题描述】:
我正在 python 中使用 LIBSVM 实现 SVM 分类问题。我有一个由 1.0 和 -1.0 组成的名为 train_labels 的 numpy 数组,以及另一个名为 train_data 的 numpy 数组中的相应特征。由于 LIBSVM 不接受 numpy 数组,我使用下面的代码将它们转换为列表。
train_labels = train_labels.tolist()
train_data = train_data.tolist()
但是,当我将它们放在 svm_problem 上时:
prob = svm_problem(train_labels,train_data)
然后我收到错误
File "C:\Anaconda\lib\site-packages\svm.py", line 109, in __init__
for i, yi in enumerate(y): self.y[i] = yi
TypeError: a float is required
在转换为列表之前,我已经尝试使用 train_labels = train_labels.astype(np.float) 将它们转换为浮点数,但我仍然遇到同样的错误。
当我在控制台中尝试它们时,使用 tolist() 方法将 numpy 数组转换为列表,然后将它们放在 LIBSVM 命令上是有效的。
有人知道我为什么会收到这个错误吗?我该如何解决?
【问题讨论】:
-
顺便说一下,我使用的是 LIBSVM 3.21