回答
LibSVM包括蟒蛇包装,通过SWIG工作。从它们的分布
例svm-test.py:
#!/usr/bin/env python
from svm import *
# a three-class problem
labels = [0, 1, 1, 2]
samples = [[0, 0], [0, 1], [1, 0], [1, 1]]
problem = svm_problem(labels, samples);
size = len(samples)
kernels = [LINEAR, POLY, RBF]
kname = ['linear','polynomial','rbf']
param = svm_parameter(C = 10,nr_weight = 2,weight_label = [1,0],weight = [10,1])
for k in kernels:
param.kernel_type = k;
model = svm_model(problem,param)
errors = 0
for i in range(size):
prediction = model.predict(samples[i])
probability = model.predict_probability
if (labels[i] != prediction):
errors = errors + 1
print "##########################################"
print " kernel %s: error rate = %d/%d" % (kname[param.kernel_type], errors, size)
print "##########################################"
param = svm_parameter(kernel_type = RBF, C=10)
model = svm_model(problem, param)
print "##########################################"
print " Decision values of predicting %s" % (samples[0])
print "##########################################"
print "Numer of Classes:", model.get_nr_class()
d = model.predict_values(samples[0])
for i in model.get_labels():
for j in model.get_labels():
if j>i:
print "{%d, %d} = %9.5f" % (i, j, d[i,j])
param = svm_parameter(kernel_type = RBF, C=10, probability = 1)
model = svm_model(problem, param)
pred_label, pred_probability = model.predict_probability(samples[1])
print "##########################################"
print " Probability estimate of predicting %s" % (samples[1])
print "##########################################"
print "predicted class: %d" % (pred_label)
for i in model.get_labels():
print "prob(label=%d) = %f" % (i, pred_probability[i])
print "##########################################"
print " Precomputed kernels"
print "##########################################"
samples = [[1, 0, 0, 0, 0], [2, 0, 1, 0, 1], [3, 0, 0, 1, 1], [4, 0, 1, 1, 2]]
problem = svm_problem(labels, samples);
param = svm_parameter(kernel_type=PRECOMPUTED,C = 10,nr_weight = 2,weight_label = [1,0],weight = [10,1])
model = svm_model(problem, param)
pred_label = model.predict(samples[0])
有没有听说过的一个。但是你真的需要在线学习吗?我使用支持向量机已经有相当长的一段时间了,从来没有遇到过我必须使用在线学习的问题。通常我会对训练样例的变化数量(可能是100或1000)设置一个阈值,然后再批量重新训练。
如果你的问题是在一个规模,你绝对必须使用在线学习,那么你可能想看看vowpal wabbit。
下面重新编辑,注释后:
Olivier Grisel建议使用一个ctypes包装周围LaSVM。由于我之前不知道LaSVM,它看起来很酷,所以我很想去尝试一下我自己的问题:)。
如果你仅限于使用Python-VM(嵌入式设备,机器人),我建议使用投票/平均感知器,它执行接近SVM,但易于实现和“在线”默认。
刚才看到Elefant有一些在线-SVM代码。
为什么要在线培训?添加训练实例通常需要重新解决与SVM相关的二次规划问题。
来处理这一点的方法是培养以批处理模式SVM,并且当新数据可用时,检查是否这些数据点是在[-1,+ 1]的超平面的余量。如果是这样,请使用所有旧的支持向量重新训练SVM,以及落入边界的新训练数据。
当然,其结果可能比你所有的数据批次的训练稍有不同,如一些点可以被丢弃,这将是支持向量以后。那么,为什么你想要对SVM进行在线培训?
虽然在那里没有python绑定,但在 http://leon.bottou.org/projects/sgd处描述的算法是以在线方式训练的,并且可以很容易地用例如在线方式重新实现。 numpy的。
随机梯度下降(SGD)也在scikit-learn(http://scikit-learn.sourceforge.net/)中实现。尽管基于SGD的分类器的在线装配尚未公开,但仍将在未来6个月内完成。 – 2011-01-24 20:00:44
Pegasos是一个在线SVM算法执行相当不错。即使没有特定的Python绑定,也很容易实现。在作者的网站上有一个C implementation,它也是可适应的或可嵌入的。
- 1. 支持C#的矢量机器库#
- 2. sklearn支持向量机不学习
- 3. 是否有任何python机器学习库可以返回线性svm的系数或几何余量?
- 4. 学习矢量
- 5. 机器学习,Python
- 6. python scikits学习 - 支持向量机选项
- 7. 机器学习与输入的可变大小的实矢量?
- 8. 支持向量机回归学习器Matlab
- 9. 如何在Azure机器学习上应用学习曲线
- 10. Python - PyGame - 学习矢量/动画
- 11. 关于在线学习Python和动机
- 12. Python监督机器学习
- 13. Azure机器学习-python
- 14. Python机器学习警告
- 15. C机器学习库#
- 16. Php机器学习库?
- 17. 机器学习库OpenCV 2.1
- 18. 随机森林机器学习支持字符串字符吗?
- 19. 保存矢量器scikit学习
- 20. 任何人都可以建议从哪里开始学习Python吗?
- 21. 机器学习在Python:scikit学习/ Pybrain
- 22. 是否有任何分布式机器学习库在Hadoop中使用Python?
- 23. 微软学习支持VS2010
- 24. 问题与机器学习scikit在Python学习
- 25. scikit学习多类支持向量机的参数优化
- 26. Coursera机器学习:渐变下降矢量化
- 27. JAVA AWS机器学习API支持实时预测
- 28. 什么是机器学习中的学习曲线?
- 29. 此任务的机器学习算法?
- 30. 如何学习Oracle 11ie for ERP支持
由于LIBSVM网站或文档中没有明确提到它,我通过电子邮件发送芷仁莲,问增量/在线学习支持。他的回答是,“不幸的是否定的。原因是,我们没有看到涨/跌学习标准的制定还没有。” – Cerin 2010-04-02 17:51:49
什么是示例代码显示不是在线学习。 – mrgloom 2013-05-23 07:37:45