我正在尝试使用基于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 任何人都可以解释我的错误在哪里?提前致谢
我有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数组导出为SVM光格式?
我正在使用libsvm的Python接口,我注意到在使用网格搜索选择最佳C和gamma参数(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号码.此外,支持向量的数量应该远小于数据集的大小,但在这种情况下,似乎并非如此.
一般来说,当交叉验证精度与数据集中的标签比率相同时,它意味着什么?
我在向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文件,但目前还不清楚,互联网上没有其他在线说明.
我正在移植一种算法,该算法使用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) 训练样本的数量与训练数据的维度之间应该是什么关系?
例如,我的案例包含20000个具有16000个功能的训练样本.我正在考虑使用PCA来获得一些维数减少的情况,但我不知道应该减少多少维度我的训练数据.这些之间有关系吗?我正在使用支持向量机分类器,它有2个类和一个线性内核.
我已经抓了很多像这样的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个功能,我可以举一个该文件的示例吗?我是否还可以使用一些示例来详细说明输入文件?
*更新* 我想代表这些功能......我该怎么办?
我想我可以用这种方式解释它
0 --> Brand
1 --> Model
2 --> Color
3 --> Size
4 --> NA
Run Code Online (Sandbox Code Playgroud)
如果我知道这个单词是Brand,我会将该变量设置为1(true).在训练测试中可以这样做(因为我已经标记了所有单词)但是我怎样才能为测试集做到这一点?我不知道一个词的类别是什么(这就是我学习它的原因:D).
当前单词的N-gram子串特征(N = …
这是我的示例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以供我评估.
我想研究如何执行LIBSVM进行回归,而我目前仍然在准备我的数据.目前我有.csv和.xlsx格式的这种形式的数据,我想将其转换为libsvm数据格式.
到目前为止,我知道数据应该采用这种格式,以便可以在LIBSVM中使用:
根据我读到的内容,对于回归,"label"是目标值,可以是任何实数.
我正在进行电力负荷预测研究.谁能告诉我它是什么?最后,我应该如何组织我的列和行?