• 大小: 214KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-15
  • 语言: Python
  • 标签: SVM  Python  

资源简介

支持向量机的几个Python代码例子,分别是有SMO实现,核函数的应用,以及手写数字识别的代码例子,下载即可运行

资源截图

代码片段和文件信息

# -*- coding: cp936 -*-
‘‘‘
Created on Nov 4 2010
Chapter 5 source file for Machine Learing in Action
@author: Peter
‘‘‘
from numpy import *
from time import sleep

def loadDataSet(fileName):
    dataMat = []; labelMat = []
    fr = open(fileName)
    for line in fr.readlines():
        lineArr = line.strip().split(‘\t‘)
        dataMat.append([float(lineArr[0]) float(lineArr[1])])
        labelMat.append(float(lineArr[2]))
    return dataMatlabelMat
def selectJrand(im):
    j=i #we want to select any J not equal to i
    while (j==i):
        j = int(random.uniform(0m))
    return j
def clipAlpha(ajHL):
    if aj > H: 
        aj = H
    if L > aj:
        aj = L
    return aj

class optStruct:
    def __init__(selfdataMatIn classLabels C toler):  # Initialize the structure with the parameters 
        self.X = dataMatIn
        self.labelMat = classLabels
        self.C = C
        self.tol = toler
        self.m = shape(dataMatIn)[0]
        self.alphas = mat(zeros((self.m1)))
        self.b = 0
        self.eCache = mat(zeros((self.m2))) #first column is valid flag
        
def calcEk(oS k):
    fXk = float(multiply(oS.alphasoS.labelMat).T*oS.X*oS.X[k:].T + oS.b)
    Ek = fXk - float(oS.labelMat[k])
    return Ek
        
def selectJ(i oS Ei):         #this is the second choice -heurstic and calcs Ej
    maxK = -1;
    maxDeltaE = 0;
    Ej = 0
    oS.eCache[i] = [1Ei]  #set valid #choose the alpha that gives the maximum delta E
    validEcacheList = nonzero(oS.eCache[:0].A)[0]
    if (len(validEcacheList)) > 1:
        for k in validEcacheList:   #loop through valid Ecache values and find the one that maximizes delta E
            if k == i: continue #don‘t calc for i waste of time
            Ek = calcEk(oS k)
            deltaE = abs(Ei - Ek)
            if (deltaE > maxDeltaE):
                maxK = k;
                maxDeltaE = deltaE;
                Ej = Ek
        return maxK Ej
    else:   #in this case (first time around) we don‘t have any valid eCache values
        j = selectJrand(i oS.m)
        Ej = calcEk(oS j)
    return j Ej

def updateEk(oS k):#after any alpha has changed update the new value in the cache
    Ek = calcEk(oS k)
    oS.eCache[k] = [1Ek]
        
def innerL(i oS):
    Ei = calcEk(oS i)
    if ((oS.labelMat[i]*Ei < -oS.tol) and (oS.alphas[i] < oS.C)) or ((oS.labelMat[i]*Ei > oS.tol) and (oS.alphas[i] > 0)):
        jEj = selectJ(i oS Ei) #this has been changed from selectJrand
        alphaIold = oS.alphas[i].copy();
        alphaJold = oS.alphas[j].copy();
        if (oS.labelMat[i] != oS.labelMat[j]):
            L = max(0 oS.alphas[j] - oS.alphas[i])
            H = min(oS.C oS.C + oS.alphas[j] - oS.alphas[i])
        else:
            L = max(0 oS.alphas[j] + oS.alphas[i] - oS.C)
            H = min(oS.C oS.alphas[j] + oS.alphas[i])
        if L==H:
            print “L==H“;
          

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-12-17 10:21  支持向量机(ML in action)整理\
     文件        5558  2014-12-16 22:38  支持向量机(ML in action)整理\optimalMethod.py
     文件        3697  2014-12-16 21:11  支持向量机(ML in action)整理\simple.py
     文件        7366  2014-12-17 09:44  支持向量机(ML in action)整理\svmRBF.py
     文件        2208  2010-11-04 14:13  支持向量机(ML in action)整理\testSet.txt
     文件        2945  2010-11-26 18:16  支持向量机(ML in action)整理\testSetRBF.txt
     文件        2951  2010-11-26 18:17  支持向量机(ML in action)整理\testSetRBF2.txt
     目录           0  2014-12-17 08:43  支持向量机(ML in action)整理\作图\
     文件        2336  2010-11-03 16:30  支持向量机(ML in action)整理\作图\notLinSeperable.py
     文件         835  2011-02-16 18:24  支持向量机(ML in action)整理\作图\plotRBF.py
     文件        1452  2010-11-23 19:46  支持向量机(ML in action)整理\作图\plotSupportVectors.py
     文件        2208  2010-11-04 14:13  支持向量机(ML in action)整理\作图\testSet.txt
     文件        2950  2014-12-17 08:51  支持向量机(ML in action)整理\作图\testSetRBF2.txt
     目录           0  2014-12-17 10:17  支持向量机(ML in action)整理\识别数字1和9\
     文件        7617  2014-12-17 10:18  支持向量机(ML in action)整理\识别数字1和9\svmMLiA.py
     目录           0  2014-12-16 22:40  支持向量机(ML in action)整理\识别数字1和9\testDigits\
     文件        1088  2010-10-07 05:35  支持向量机(ML in action)整理\识别数字1和9\testDigits\1_0.txt
     文件        1088  2010-10-07 05:35  支持向量机(ML in action)整理\识别数字1和9\testDigits\1_1.txt
     文件        1088  2010-10-07 05:35  支持向量机(ML in action)整理\识别数字1和9\testDigits\1_10.txt
     文件        1088  2010-10-07 05:35  支持向量机(ML in action)整理\识别数字1和9\testDigits\1_11.txt
     文件        1088  2010-10-07 05:35  支持向量机(ML in action)整理\识别数字1和9\testDigits\1_12.txt
     文件        1088  2010-10-07 05:35  支持向量机(ML in action)整理\识别数字1和9\testDigits\1_13.txt
     文件        1088  2010-10-07 05:35  支持向量机(ML in action)整理\识别数字1和9\testDigits\1_14.txt
     文件        1088  2010-10-07 05:35  支持向量机(ML in action)整理\识别数字1和9\testDigits\1_15.txt
     文件        1088  2010-10-07 05:35  支持向量机(ML in action)整理\识别数字1和9\testDigits\1_16.txt
     文件        1088  2010-10-07 05:35  支持向量机(ML in action)整理\识别数字1和9\testDigits\1_17.txt
     文件        1088  2010-10-07 05:35  支持向量机(ML in action)整理\识别数字1和9\testDigits\1_18.txt
     文件        1088  2010-10-07 05:35  支持向量机(ML in action)整理\识别数字1和9\testDigits\1_19.txt
     文件        1088  2010-10-07 05:35  支持向量机(ML in action)整理\识别数字1和9\testDigits\1_2.txt
     文件        1088  2010-10-07 05:35  支持向量机(ML in action)整理\识别数字1和9\testDigits\1_20.txt
     文件        1088  2010-10-07 05:35  支持向量机(ML in action)整理\识别数字1和9\testDigits\1_21.txt
............此处省略574个文件信息

评论

共有 条评论