Skip to content

Latest commit

 

History

History
29 lines (29 loc) · 1.41 KB

README.md

File metadata and controls

29 lines (29 loc) · 1.41 KB

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)

haha!