标签: libsvm

e1071 R包的SVM方程?

我有兴趣测试SVM性能,将几个人分为四组/每组.当使用MATLAB中的svmtrain LibSVM函数时,我能够根据该等式的值得到用于对这4个组中的个体进行分类的三个方程式.计划如下:

                All individuals (N)*
                      |
 Group 1 (n1) <--- equation 1 --->  (N-n1)
                                      |
                   (N-n1-n2) <--- equation 2 ---> Group 2 (n2)
                      |
Group 3 (n3) <--- equation 3 ---> Group 4(n4)

*N = n1+n2+n3+n4
Run Code Online (Sandbox Code Playgroud)

有没有办法在e1071 R包中使用svm函数来获得这些方程式?

r machine-learning svm libsvm

17
推荐指数
1
解决办法
2万
查看次数

使用libsvm进行交叉验证后重新培训

我知道交叉验证用于选择好的参数.找到它们之后,我需要在不使用-v选项的情况下重新训练整个数据.

但我面临的问题是,在使用-v选项训练后,我获得了交叉验证的准确性(例如85%).没有模型,我看不到C和gamma的值.在那种情况下,我如何重新训练?

顺便说一句,我应用10倍交叉验证.例如

optimization finished, #iter = 138
nu = 0.612233
obj = -90.291046, rho = -0.367013
nSV = 165, nBSV = 128
Total nSV = 165
Cross Validation Accuracy = 98.1273%
Run Code Online (Sandbox Code Playgroud)

需要一些帮助..

为了获得最佳的C和gamma,我使用LIBSVM FAQ中提供的代码

bestcv = 0;
for log2c = -6:10,
  for log2g = -6:3,
    cmd = ['-v 5 -c ', num2str(2^log2c), ' -g ', num2str(2^log2g)];
    cv = svmtrain(TrainLabel,TrainVec, cmd);
    if (cv >= bestcv),
      bestcv = cv; bestc = 2^log2c; bestg = 2^log2g;
    end
    fprintf('(best c=%g, g=%g, rate=%g)\n',bestc, bestg, …
Run Code Online (Sandbox Code Playgroud)

matlab classification machine-learning svm libsvm

17
推荐指数
1
解决办法
2万
查看次数

Matlab libsvm - 如何找到w系数

如何找到矢量w是什么,即垂直于分离平面?

matlab svm libsvm

17
推荐指数
1
解决办法
2万
查看次数

SVM可以逐步学习吗?

我正在使用多维SVM分类器(SVM.NET,libSVM的包装器)来分类一组功能.

给定SVM模型,是否可以合并新的训练数据而无需重新计算所有先前的数据?我想另一种方式是:SVM是否可变?

c# machine-learning svm libsvm

15
推荐指数
1
解决办法
6780
查看次数

libsvm java实现

我正在尝试使用libsvm的java绑定:

http://www.csie.ntu.edu.tw/~cjlin/libsvm/
Run Code Online (Sandbox Code Playgroud)

我已经实现了一个"平凡"的例子,它可以在y中轻松地线性分离.数据定义为:

double[][] train = new double[1000][]; 
double[][] test = new double[10][];

for (int i = 0; i < train.length; i++){
    if (i+1 > (train.length/2)){        // 50% positive
        double[] vals = {1,0,i+i};
        train[i] = vals;
    } else {
        double[] vals = {0,0,i-i-i-2}; // 50% negative
        train[i] = vals;
    }           
}
Run Code Online (Sandbox Code Playgroud)

第一个"特征"是类,并且训练集类似地定义.

训练模型:

private svm_model svmTrain() {
    svm_problem prob = new svm_problem();
    int dataCount = train.length;
    prob.y = new double[dataCount];
    prob.l = dataCount;
    prob.x = new svm_node[dataCount][];     

    for (int i …
Run Code Online (Sandbox Code Playgroud)

java svm libsvm

15
推荐指数
1
解决办法
3万
查看次数

svm缩放输入值

我正在使用libSVM.假设我的功能值采用以下格式:

                         instance1 : f11, f12, f13, f14
                         instance2 : f21, f22, f23, f24
                         instance3 : f31, f32, f33, f34
                         instance4 : f41, f42, f43, f44
                         ..............................
                         instanceN : fN1, fN2, fN3, fN4
Run Code Online (Sandbox Code Playgroud)

我认为可以应用两种缩放.

  1. 缩放每个实例向量,使得每个向量具有零均值和单位方差.

        ( (f11, f12, f13, f14) - mean((f11, f12, f13, f14) ). /std((f11, f12, f13, f14) )
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将上述矩阵的每个列缩放到一个范围.例如[-1,1]

根据我对RBF内核(libSVM)的实验,我发现第二个缩放(2)将结果提高了大约10%.我不明白为什么(2)给我一个改进的结果.

任何人都可以解释一下应用缩放的原因是什么,为什么第二个选项会给我带来改进的结果?

machine-learning svm computer-vision libsvm

15
推荐指数
1
解决办法
2万
查看次数

如何从DataFrame准备数据到LibSVM格式?

我想制作libsvm格式,所以我将数据帧设置为所需的格式,但我不知道如何转换为libsvm格式.格式如图所示.我希望所需的libsvm类型是用户项:rating.如果您知道在当前情况下该怎么做:

val ratings = sc.textFile(new File("/user/ubuntu/kang/0829/rawRatings.csv").toString).map { line =>
     val fields = line.split(",")
      (fields(0).toInt,fields(1).toInt,fields(2).toDouble)
}
val user = ratings.map{ case (user,product,rate) => (user,(product.toInt,rate.toDouble))}
val usergroup = user.groupByKey 

val data =usergroup.map{ case(x,iter) => (x,iter.map(_._1).toArray,iter.map(_._2).toArray)}

val data_DF = data.toDF("user","item","rating")
Run Code Online (Sandbox Code Playgroud)

数据框图

我正在使用Spark 2.0.

libsvm apache-spark apache-spark-sql apache-spark-ml apache-spark-mllib

15
推荐指数
1
解决办法
2万
查看次数

以libsvm格式读/写数据

如何读/写libsvm数据R

libsvm格式是这样稀疏数据

<class/target>[ <attribute number>:<attribute value>]*
Run Code Online (Sandbox Code Playgroud)

(参见压缩行存储(CRS))例如,

1 10:3.4 123:0.5 34567:0.231
0.2 22:1 456:03
Run Code Online (Sandbox Code Playgroud)

我相信我可以自己鞭打一些东西,但我宁愿使用现成的东西.但是,Rforeign似乎没有提供必要的功能.

r libsvm

14
推荐指数
3
解决办法
1万
查看次数

libsvm缩小启发式

我在C-SVC模式下使用libsvm,使用2阶多项式内核,我需要训练多个SVM.在训练过程中,我为一些我训练的SVM得到了一个甚至两个警告:

WARNING: using -h 0 may be faster
*
WARNING: reaching max number of iterations
optimization finished, #iter = 10000000
Run Code Online (Sandbox Code Playgroud)

我找到了h参数的描述:

-h shrinking : whether to use the shrinking heuristics, 0 or 1 (default 1)
Run Code Online (Sandbox Code Playgroud)

我试图阅读libsvm文档中的解释,但对我来说这有点太高了.任何人都可以提供一个外行的解释,或许,一些建议,如设置这将是有益的,因为......?此外,如果通过为我训练的所有SVM设置此参数,可能会对那些未明确发出此警告的SVM的准确性产生负面影响,将会很有帮助.

我不知道该怎么做其他警告.

只是为了提供更多细节:我的训练集有10个属性(特征),它们由5000个向量组成.


更新:

如果其他人获得"达到最大迭代次数",则似乎是由数值稳定性问题引起的.而且,这将产生非常慢的训练时间.多项式内核确实受益于使用交叉验证技术来确定正则化的最佳值(C参数),并且在多项式内核的情况下,对我来说它有助于保持小于8.此外,如果内核是不均匀的\ sum(\ gamma x_i s_i + coef0)^ d(对不起,SO不支持LaTeX),其中coef0!= 0,然后交叉验证可以使用网格搜索技术实现gamma和C,因为,在此例如,gamma(1/number_of_features)的默认值可能不是最佳选择.尽管如此,根据我的实验,你可能不希望gamma太大,因为它会导致数字问题(我正在尝试最大值为8).

为了进一步了解gamma和C的可能值,我们应该尝试在grid.py中进行挖掘.

machine-learning svm libsvm

14
推荐指数
1
解决办法
1万
查看次数

在什么参数下,SVC和LinearSVC在scikit-learn中等效?

我读了这篇关于scikit-learn SVC()LinearSVC()scikit-learn 之间差异的帖子.

现在我有一个二进制分类问题的数据集(对于这样的问题,两个函数之间的一对一/一对一策略差异可以忽略.)

我想尝试在这两个函数给出相同结果的参数下.首先,当然,我们应该设置kernel='linear'SVC() 但是,我无法从两个函数中得到相同的结果.我无法从文档中找到答案,有人可以帮我找到我想要的等效参数集吗?

更新:我从scikit-learn网站的一个例子中修改了以下代码,显然它们不一样:

import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets

# import some data to play with
iris = datasets.load_iris()
X = iris.data[:, :2]  # we only take the first two features. We could
                      # avoid this ugly slicing by using a two-dim dataset
y = iris.target

for i in range(len(y)):
    if (y[i]==2):
        y[i] = 1

h = .02  # …
Run Code Online (Sandbox Code Playgroud)

machine-learning svm libsvm scikit-learn

14
推荐指数
1
解决办法
8374
查看次数