Skip to content
forked from xinlianghu/svm

用Python实现SVM多分类器

Notifications You must be signed in to change notification settings

Forest-repo/svm

This branch is 3 commits behind xinlianghu/svm:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
huxinliang8888
Mar 15, 2018
e974a1e · Mar 15, 2018

History

3 Commits
Mar 14, 2018
Mar 15, 2018
Mar 15, 2018
Mar 15, 2018
Mar 14, 2018
Mar 14, 2018
Mar 14, 2018
Mar 14, 2018
Mar 14, 2018
Mar 15, 2018
Mar 14, 2018
Mar 14, 2018
Mar 14, 2018
Mar 15, 2018

Repository files navigation

svm

  • svm.py
    该文件中实现了一个简单的SVM,使用SMO进行优化,在选择优化的变量时采用随机选择的方式。
  • plattSMO.py
    该文件也是采用SMO进行优化,在选择优化变量时,选择误差步长最大的两个变量进行优化,可以大幅提高优化速度。 该文件中还加入了核函数(线性核函数,RBF核函数),具体实现参见 kernelTrans(self,x,z)
  • libSVM.py
    该文件实现了一个SVM多分类器,其实现原理是:对于样本中的每两个类别之间都训练一个SVM二分类器。对于k个类别, 共可训练出k(k-1)/2个SVM二分类器。在预测时,将测试样例分别输入到k(k-1)/2分类器中。
    假设(i,j)表示划分类别i和类别j的SVM分类器
    对于每个分类器(i,j):
    若分类结果为+1,则count[i] +=1
    若分类结果为-1,则count[j] +=1
    最后分类结果取相应类别计数最大的那个类别作为最终分类结果
    本文件还实现了将训练的模型保存成文件,方便预测时直接从文件读取,省去了再次训练的时间。
    ** 例子
def main():
    '''
    data,label = loadImage('trainingDigits')
    svm = LibSVM(data, label, 200, 0.0001, 10000, name='rbf', theta=20)
    svm.train()
    svm.save("svm.txt")
    '''
    svm = LibSVM.load("svm.txt")
    test,testlabel = loadImage('testDigits')
    svm.predict(test,testlabel)

About

用Python实现SVM多分类器

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%