0

我正在尝试用 python 和 SVM 做一些分类任务。

从收集的数据中,我提取了每个类的特征向量并创建了一个训练集。特征向量具有 n 维(39 或更多)。因此,假设对于 2 个类,我有一组 39 维特征向量和一个类标签数组,对应于特征向量中的每个条目。目前,我正在使用 mlpy 并执行以下操作:

import numpy as np
import mlpy 

svm=mlpy.Svm('gaussian') #tried a linear kernel too but not having the convergence
instance= np.vstack((featurevector1,featurevector1))
label=np.hstack((np.ones((1,len(featurevector1),dtype=int),-1*np.ones((1,len(featurevector2),dtype=int))) 

#为实例中的每个条目分配一个标签(+1/-1),(来自#featurevector 1的条目为+1,对于featurevector2为-1

svm.compute(instance,label) #it converges and outputs 1
svm.predict(testdata) #This one says all class label are 1 only whereas I ve testing data from both classes

我在这里做错了吗?还是我应该使用其他库?请帮忙。

4

1 回答 1

0

我不使用 mlpy,但np.ones((1,len(featurevector1))也许应该只是np.ones(len(featurevector1))--
打印.shape每个以查看差异。
(如果您有任何类似您的公共数据的链接,您可以发布它吗?)

于 2011-12-01T14:12:47.273 回答