标签: libsvm

使用LibSVM在Java代码中出现Weka错误"无法处理数字类"

我正在尝试使用基于LibSVM的分类器使用Weka,但是我遇到了这个错误:

Exception in thread "main" weka.core.UnsupportedAttributeTypeException:weka.classifiers.functions.LibSVM: Cannot handle numeric class!
    at weka.core.Capabilities.test(Unknown Source)
    at weka.core.Capabilities.test(Unknown Source)
    at weka.core.Capabilities.test(Unknown Source)
    at weka.core.Capabilities.testWithFail(Unknown Source)
    at weka.classifiers.functions.LibSVM.buildClassifier(Unknown Source)
    at imgclassifier.ImgClassifier.main(ImgClassifier.java:45)
Java Result: 1
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

try {

   File f = new File("australian.txt");
   LibSVMLoader loader = new LibSVMLoader();
   loader.setSource(f);
   Instances i = loader.getDataSet();

   LibSVM svm = new LibSVM();
   svm.buildClassifier(i);

}catch (IIOException e) {
   e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

australian.txt就是一个例子:LibSVM DataSet 任何人都可以解释我的错误在哪里?提前致谢

java classification weka libsvm

6
推荐指数
1
解决办法
9013
查看次数

多处理和带指针的ctypes

我有multiProcessing.Process目标函数采用输入和输出队列的对象.

在输出队列中,他们放置了一些数据,即带有内部指针的包装ctypes结构.当然,pickle应该序列化数据的模块会破坏:

ValueError:包含指针的ctypes对象无法进行pickle

我可以以某种方式从我的子进程中获取带有指针的ctypes结构而不将它们转储到文件中吗?

代码如下

# -*- coding: utf-8 -*-
import multiprocessing as mp

from liblinear import *
from liblinearutil import *


def processTarget(inQueue, outQueue):
    while(not inQueue.empty()):
        inVal = inQueue.get()

        #training model
        y, x = [1,-1], [{1:inVal, 3:3*inVal}, {1:-1,3:-1}]
        prob  = problem(y, x)
        param = parameter('-c 4 -B 1')
        m = train(prob, param)


        outQueue.put((inVal * 2, m))
        print "done", inVal
        inQueue.task_done()

def Main():
    processes = []
    inQueue = mp.JoinableQueue()
    for i in xrange(10):
        inQueue.put(i)

    outQueue = …
Run Code Online (Sandbox Code Playgroud)

python ctypes multiprocessing libsvm

6
推荐指数
1
解决办法
4960
查看次数

5
推荐指数
3
解决办法
4107
查看次数

libsvm - 交叉验证精度与标签比率相同

我正在使用libsvm的Python接口,我注意到在使用网格搜索选择最佳Cgamma参数(RBF内核)之后,当我训练模型并交叉验证它时(5倍,如果它是相关的),我收到的准确度与训练数据集中的标签比例相同.

我有3947个样本,其中2898个标签为-1,其余的标签为1.因此,这是样本的73.4229%.

当我训练模型并交叉验证它5倍时,这就是我得到的 -

optimization finished, #iter = 1529
nu = 0.531517 obj = -209.738688,
rho = 0.997250 nSV = 1847, nBSV = 1534
Total nSV = 1847
Cross Validation Accuracy = 73.4229%
Run Code Online (Sandbox Code Playgroud)

这是否意味着SVM没有考虑这些功能?或者这是有问题的数据?它们都是相关的吗?我只是无法通过73.4229号码.此外,支持向量的数量应该远小于数据集的大小,但在这种情况下,似乎并非如此.

一般来说,当交叉验证精度与数据集中的标签比率相同时,它意味着什么?

python svm libsvm

5
推荐指数
1
解决办法
1088
查看次数

如何设置LIBSVM Matlab界面?

我在向MATLAB实现LibSVM时遇到问题.我正在使用MATLAB R2009a(我也有最新版本,R2012b,但我不使用那个)我将LibSVM软件包libsvm-3.14下载到我的Windows 7 PC,MATLAB和OCTAVE接口汇集在一起​​.

我解压缩了我下载的文件夹.在下面,您可以看到该文件夹​​所包含的打印屏幕.在此输入图像描述

我应该把我的libsvm-3.14提取文件夹放在哪里?我应该把它放在目录中安装的MATLAB的"bin"文件夹下吗?

C:\ Program Files\MATLAB\R2009a\bin

我做到了,然而,它没有成功.如果你帮我清楚,我将不胜感激.我刚刚阅读了README文件,但目前还不清楚,互联网上没有其他在线说明.

matlab svm libsvm

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

将训练有素的SVM从scikit-learn导入OpenCV

我正在移植一种算法,该算法使用Python的支持向量机(使用scikit-learn)到C++(使用OpenCV的机器学习库).

我可以访问Python中训练有素的SVM,我可以将XML文件中的SVM模型参数导入OpenCV.由于scikit-learn和OpenCV的SVM实现都基于LibSVM,我认为应该可以在OpenCV中使用训练的scikit SVM的参数.

下面的示例显示了一个XML文件,可用于在OpenCV中初始化SVM:

<?xml version="1.0"?>
<opencv_storage>
<my_svm type_id="opencv-ml-svm">
  <svm_type>C_SVC</svm_type>
  <kernel><type>RBF</type>
    <gamma>0.058823529411764705</gamma></kernel>
  <C>100</C>
  <term_criteria><epsilon>0.0</epsilon>
    <iterations>1000</iterations></term_criteria>
  <var_all>17</var_all>
  <var_count>17</var_count>
  <class_count>2</class_count>
  <class_labels type_id="opencv-matrix">
    <rows>1</rows>
    <cols>2</cols>
    <dt>i</dt>
    <data>
      0 1</data></class_labels>
  <sv_total>20</sv_total>
  <support_vectors>
    <_>
      2.562423055146794554e-02 1.195797425735170838e-01
      8.541410183822648050e-02 9.395551202204914520e-02
      1.622867934926303379e-01 3.074907666176152077e-01
      4.099876888234874062e-01 4.697775601102455179e-01
      3.074907666176152077e-01 3.416564073529061440e-01
      5.124846110293592716e-01 5.039432008455355660e-01
      5.466502517646497639e-01 1.494746782168964394e+00
      4.168208169705446942e+00 7.214937388193202183e-01
      7.400275229357797802e-01</_>
    <!-- omit 19 vectors to keep it short -->
  </support_vectors>
  <decision_functions>
    <_>
      <sv_count>20</sv_count>
      <rho>-5.137523249549433402e+00</rho>
      <alpha>
        2.668992955678978518e+01 7.079767098112181145e+01
        3.554240018130368384e+01 4.787014908624512088e+01
        1.308470223155845069e+01 5.499185410034550614e+01
        4.160483074010306126e+01 2.885504210853826379e+01
        7.816431542954153144e+01 6.882061506693679576e+01
        1.069534676985309574e+01 -1.000000000000000000e+02
        -5.088050252552544350e+01 -1.101740897543916375e+01
        -7.519686789702373630e+01 -3.893481464245511603e+01
        -9.497774056452135483e+01 -4.688632332663718927e+00
        -1.972745089701982835e+01 …
Run Code Online (Sandbox Code Playgroud)

opencv machine-learning svm libsvm scikit-learn

5
推荐指数
1
解决办法
2066
查看次数

SVM - 训练样本数量和特征数量之间的关系

训练样本的数量与训练数据的维度之间应该是什么关系?

例如,我的案例包含20000个具有16000个功能的训练样本.我正在考虑使用PCA来获得一些维数减少的情况,但我不知道应该减少多少维度我的训练数据.这些之间有关系吗?我正在使用支持向量机分类器,它有2个类和一个线性内核.

matlab machine-learning svm libsvm

5
推荐指数
1
解决办法
2535
查看次数

使用libsvm功能的例子在Python中支持向量机

我已经抓了很多像这样的ebay游戏:

Apple iPhone 5 White 16GB Dual-Core
Run Code Online (Sandbox Code Playgroud)

我用这种方式手动标记了所有这些内容

B M C S NA
Run Code Online (Sandbox Code Playgroud)

其中B =品牌(Apple)M =型号(iPhone 5)C =颜色(白色)S =尺寸(尺寸)NA =未指定(双核)

现在我需要使用python中的libsvm库训练SVM分类器,以了解ebay标题中出现的序列模式.

我需要通过将问题视为分类来为该属性(品牌,模型,颜色,大小)提取新值.通过这种方式,我可以预测新模型.

我想考虑这个功能:

* Position
- from the beginning of the title
- to the end of the listing
* Orthographic features
- current word contains a digit
- current word is capitalized 
....
Run Code Online (Sandbox Code Playgroud)

我无法理解如何将所有这些信息提供给库.官方文档缺乏很多信息

我的班级是品牌,型号,尺寸,颜色,NA

SVM算法的输入文件必须包含什么?

我怎么创建它?考虑到我在问题中提供的4个功能,我可以举一个该文件的示例吗?我是否还可以使用一些示例来详细说明输入文件?

*更新* 我想代表这些功能......我该怎么办?

  1. 当前单词的身份

我想我可以用这种方式解释它

0 --> Brand
1 --> Model
2 --> Color
3 --> Size 
4 --> NA
Run Code Online (Sandbox Code Playgroud)

如果我知道这个单词是Brand,我会将该变量设置为1(true).在训练测试中可以这样做(因为我已经标记了所有单词)但是我怎样才能为测试集做到这一点?我不知道一个词的类别是什么(这就是我学习它的原因:D).

  1. 当前单词的N-gram子串特征(N = …

python machine-learning svm libsvm

5
推荐指数
1
解决办法
7417
查看次数

R:我们如何打印SVM的百分比准确度

这是我的示例R代码:

    train <- read.csv("Train.csv")
    test <- read.csv("Test+.csv")

   x <- model.matrix(age ~ . - 1,data=train)           

    classify=svm(as.factor(age)~ ., data=train,method="class")
    pred = predict(classify,test,type="class")
Run Code Online (Sandbox Code Playgroud)

我怎样才能从中打印百分比准确度?我希望显示所有性能指标,如准确度,精度,召回.etc以供我评估.

r machine-learning svm libsvm confusion-matrix

5
推荐指数
1
解决办法
8226
查看次数

LIBSVM数据准备:Excel数据为LIBSVM格式

我想研究如何执行LIBSVM进行回归,而我目前仍然在准备我的数据.目前我有.csv和.xlsx格式的这种形式的数据,我想将其转换为libsvm数据格式.

当前数据

到目前为止,我知道数据应该采用这种格式,以便可以在LIBSVM中使用:

LIBSVM格式

根据我读到的内容,对于回归,"label"是目标值,可以是任何实数.

我正在进行电力负荷预测研究.谁能告诉我它是什么?最后,我应该如何组织我的列和行?

libsvm

5
推荐指数
1
解决办法
5224
查看次数