opencv SVM实现采用标记为"SVM类型"的参数,该参数必须在用于训练SVM的CVSVMParams结构中使用.我能找到的所有解释是:
// SVM type
enum { C_SVC=100, NU_SVC=101, ONE_CLASS=102, EPS_SVR=103, NU_SVR=104 };
谁知道这些不同的价值代表什么?
我正在尝试使用SVM Light来学习OpenCV2.2 HOG描述符的分类器.我从HOG描述符得到一个浮点向量输出.
阅读完SVMLight文档后,我仍然无法理解输入序列和测试数据的格式.
来自网站train.dat的一行示例:
1 6:0.0176472501759912 15:0.0151152682071138 26:0.0572866228831546 27:0.0128461400334668
Run Code Online (Sandbox Code Playgroud)
哪里,
The first char: 1, denote the positive class.
The second and third char 6: <== I don't understand what does this means,
The third variable denote the feature vector.
Run Code Online (Sandbox Code Playgroud)
有人请帮忙吗?谢谢!
我是SVM的新手.我使用Libsvm for Matlab,在预测阶段后我得到了一个决策值数组.根据SVM理论:每个测试记录z被指定为正数if
F(z)的= 1
其中f(z)定义为
F(z)的=符号(W*Z + b)的
那么如何将实例z的数组的决策值与f(z)相关联?基于决策值的预测是这样的:如果dec_value> 0则z为正,否则z为负?
我正在编写一个使用SVM对某些图像进行分类的应用程序(特别是这些).我的Matlab实现非常有效.使用SIFT字袋方法,我可以使用线性内核获得接近100%的准确度.
我需要在C++中以速度/可移植性的原因实现它,所以我尝试使用libsvm和dlib.我尝试了多种SVM类型(c_svm,nu_svm,one_class)和多个内核(线性,多项式,rbf).我能够达到的最好的准确度是大约50% - 即使是我训练过的相同样本.我已经确认我的特征生成器正在工作,因为当我将我的c ++生成的特性导出到Matlab并对其进行训练时,我能够再次获得接近完美的结果.
Matlab的SVM实现有什么神奇之处吗?是否有任何常见的陷阱或领域可以解释我所看到的行为?我知道这有点模糊,但问题的一部分是我不知道去哪里.如果我能提供其他有用的信息,请在评论中告诉我.
所以我读了一篇论文,说正确处理你的数据集可以大大提高LibSVM分类的准确性......我正在使用Weka实现,并希望有一些帮助确保我的数据集是最优的.
这是我的(示例)属性:
Power Numeric (real numbers, range is from 0 to 1.5132, 9000+ unique values)
Voltage Numeric (similar to Power)
Light Numeric (0 and 1 are the only 2 possible values)
Day Numeric (1 through 20 are the possible values, equal number of each value)
Range Nominal {1,2,3,4,5} <----these are the classes
Run Code Online (Sandbox Code Playgroud)
我的问题是:我应该应用哪些Weka预处理过滤器来使这个数据集对LibSVM更有效?
请就这些问题以及您认为我可能错过的任何其他问题提出建议......
提前致谢!!
我想用多项式内核svm计算原始变量w,但要做到这一点,我需要计算clf.coef_*clf.support_vectors_.除了线性之外,所有内核类型的访问都被限制为.coef_ - 这是否有原因,在这种情况下是否有另一种方法来派生w?
使用任意数据计算的任何核矩阵(或Gram矩阵)都保证是正半正定的.
我有一个数据矩阵D,其中每一行都是一个数据向量.如果我像这样计算内核,
K = D*D';
Run Code Online (Sandbox Code Playgroud)
事实证明,这不是正半确定的,更不用说肯定的了.
为什么会这样?有什么我想念的吗?我的预感告诉我,这很可能是数值误差,因为我的核矩阵的所有负特征值都在1E-12左右.
这个问题在某种程度上暗示了一个答案,但我无法想象为什么矩阵不会至少是对称的!
我正在做分类,我有一个像这样的两个大小的列表;
Data=[list1,list2]
Run Code Online (Sandbox Code Playgroud)
list1是1000*784大小.这意味着已将1000张图像从28*28大小重新整形为784.
list2是1000*1大小.它显示每个图像所属的标签.使用以下代码,我应用了PCA:
from matplotlib.mlab import PCA
results = PCA(Data[0])
Run Code Online (Sandbox Code Playgroud)
输出是这样的:
Out[40]: <matplotlib.mlab.PCA instance at 0x7f301d58c638>
Run Code Online (Sandbox Code Playgroud)
现在,我想使用SVM作为分类器.我应该添加标签.所以我为SVm提供了这样的新数据:
newData=[results,Data[1]]
Run Code Online (Sandbox Code Playgroud)
我不知道如何在这里使用SVM.
我有两个numpy数组(功能)。numpy数组的尺寸为:
audio =(360,13)--->从音频文件中提取特征
image =(360,5)->特征是从这些音频文件的频谱图中提取的。
我想一起使用这两个数组来训练svm分类器。但是我知道svm train只能得到一个数组。(svm.train(feature,label))。我正在寻找是否有像svm.train(音频,图像,标签)之类的东西
我也尝试连接这两个数组,但是维数不同。我该如何解决这种情况?
python artificial-intelligence classification machine-learning svm
我有用户评论数据集
review-1, 0,1,1,0,0
Run Code Online (Sandbox Code Playgroud)
review-1是用户审核,0,1,1,0,0是审核类别.一篇评论可以有多个类别.我想预测评论的类别.所以我实现了代码
transformer = TfidfVectorizer(lowercase=True, stop_words=stop, max_features=500)
X = transformer.fit_transform(df.Review)
X_train, X_test, y_train, y_test = train_test_split(X, df.iloc[:, 1:6],
test_size=0.25, random_state=42)
SVM = svm.SVC()
SVM.fit(X_train, y_train)
Run Code Online (Sandbox Code Playgroud)
但我得到的错误就像
ValueError: bad input shape (75, 5)
Run Code Online (Sandbox Code Playgroud)
有谁能建议任何好的解决方案来解决这个问题
python machine-learning svm scikit-learn text-classification